Оборона UNIX

Многие организации в мире сегодняшнего бизнеса перестраивают свою деятельность в соответствии с моделью клиент/сервер, в том числе управление важной научной, финансовой и юридической информацией. Unix здесь - одна из основных операционных систем. В прошлом вычислительные мощности и данные располагались на одной системе и ее закрытость была гарантией безопасности данных. Однако в модели клиент/сервер и операционная система, и приложения используют при работе сеть. В этих системах безопасность сетевых приложений
напрямую связана с безопасностью сети и систем в этой сети. 

Заприте дверь на ключ

Вход в систему и пароль - это первая линия обороны в системе Unix. В файле паролей перечислены все пользователи с правом доступа в систему. В большинстве систем зашифрованный пароль хранится в файле паролей, доступном для чтения. Предполагается, что расшифровать пароль невозможно, но, тем не менее, открытость зашифрованного пароля делает систему уязвимой; пользователь может задать пароль, зашифровать его и сравнить зашифрованный результат с содержимым новой строки файла паролей.  Большинство последних версий операционных систем Unix предполагают возможность использования скрытых файлов паролей. В них зашифрованный пароль помещается из файла паролей в файл, который доступен для чтения только для суперпользователей. Такая мера весьма эффективна.  Одноразовый код доступа и механизм пароль/отзыв помогают сделать пароль еще более неуязвимым, так как пароли в этом случае действительны только на один сеанс. Если взломщик каким-либо образом узнал пароль, то войти в систему он сможет только один раз. Примерами подобных механизмов служат Defender компании Digital Pathways (Маунтейн-Вью, шт. Калифорния), SecurID компании
Security Dynamics (Кэмбридж, шт. Миннесота) и S/Key компании Bellcore (Пискатавей, шт. Нью-Джерси).  В сетях с высокой степенью секретности, например финансовых, весьма
эффективно использование одного из механизмов ограничения доступа. Помните, что по статистике ФБР 85% взломов производится сотрудниками. 

Оставайтесь в команде

Команда finger в чужих руках способна значительно облегчить взлом сети. У пользователя есть возможность выполнить данную команду без входа в систему и получить информацию о всех пользователях сети. Это небезопасно по многим причинам. Например, получив с помощью команды finger имена пользователей, номера комнат и номера телефонов, содержащиеся в файле паролей (см. Рис. 1), взломщик может использовать их для регистрации под именем одного из пользователей, а также для взлома защиты системы в целом.  Сетевые системы Unix подвергаются наибольшему риску из-за использования удаленных команд (r-команды), таких как rsh, rcp и rlogin. Эти команды дают пользователю возможность с правом доступа к нескольким системам установить доверительные отношения между этими системами. Причем пользователь получает доступ в систему без дальнейшей идентификации и аутентификации. Эти
"доверительные" отношения определяются для пользователей в файлах. rhosts в домашних каталогах и для систем в конфигурационном файле удаленных команд /etc/host.equiv файл. 
К сожалению, многие производители предпочитают выпускать "дружественные для сети" разработки с целью увеличения легкости их использования. Один из способов - это включить символ (+) в файл /etc/host.equiv, что позволит любому человеку, работающему в локальной или глобальной сети, получить доступ к системе в качестве любого пользователя, даже в качестве суперпользователя (администратора).  Вообще, "доверительные" отношения между сетями не рекомендуются. Однако многие организации используют их, чтобы упростить администрирование сети. А при таком положении дел важно, чтобы только небольшое подмножество систем находилось в "доверительных" отношениях друг с другом. Например, разрешить подобный доступ только с сервера к клиенту, но не с клиента к серверу и разрешить
чтение файла rhosts только его владельцу.  Network File System (NFS) и Network Information Service (NIS) позволяют упростить доступ к файлам и администрирование сети. (NIS носила раньше имя Yellow Pages, и многие команды отражают этот факт в своих названиях: ypwhich, ypcat и т. п.) NFS реализует механизм, благодаря которому доступ к файлам является прозрачным для пользователя вне зависимости от их местоположения. Файлы могут
располагать я как на локальном диске, так и на файловом сервере локальной или глобальной сети. Для правильной работы NFS пользовательская и системная информация должны быть согласованы между используемыми системами. Согласованность обеспечивает NIS посредством централизованного копирования файлов конфигурации и паролей на сервер NIS. Это позволяет администратору изменять информацию непосредственно на NFS-сервере, причем изменения становятся доступны клиентам NIS. NFS внутренне уязвима, поскольку она базируется на выводах удаленных процедур. Удаленные вызовы процедур содержат идентифицирующую пользователя информацию (UID), но не имеют механизма определения наличия ограничений на использование ресурсов и того, что пользователь действительно является тем, за кого себя выдает. Таким образом, заинтересованное лицо может написать
маскирующуюся под систему программу с тем, чтобы монтировать файловые системы или создавать, читать, модифицировать или удалять файлы напрямую.  Для назначения систем, имеющих доступ к файловым системам на сети, можно использовать команды exportfs и файл /etc/exports. Некоторые производители выпускают системы с экспортом каталога /AND/USR во внешний мир. А стало быть, каждый пользователь этой сети может из любой точки монтировать такие файловые системы. Вообще, никакие файловые системы не должны экспортироваться во внешний мир и, везде, где только возможно, они должны экспортироваться только для чтение. Безусловно, рабочий каталог пользователя необходимо сделать доступным как для чтения, так и для записи.  Команда exportfs без параметров выдает список экспортированных файлов.Команда showmount-a показывает, какие из экспортированных файлов смонтированы клиентами. 

Набор инструментов для взломщика

Привилегии суперпользователя для клиента NIS должны жестко контролироваться. Когда пользователь входит в систему, NIS сначала проверяет локальный файл паролей и затем файл паролей NIS. Взломщику ничего не стоит использовать эту возможность, чтобы выдать себя за легитимного пользователя внутри NIS. Локальный пользователь с привилегиями суперпользователя может добавить UID другого пользователя, чтобы получить его привилегии. 

К примеру, ниже приведено содержимое NIS-пароля: 
    vip: encrypted passwd: 23456:
    2002:Very Important Person:
    /u/vip:/bin/ksh
Локальный суперпользователь может добавить ту же или аналогичную информацию в локальный файл паролей: 
    vip:new encrypted passwd:
    23456:2002: Very Important
    Person:/u/vip:/bin/ksh
или 
    cdc:encrypted passwd:23456:2002
    :fictitious information:/u/vip
    :/bin/ksh
Заметим, что идентификатор пользователя/идентификатор группы (23456) и групповой ID (2002) в этих строках один и тот же; именно он, а не входной идентификатор (VIP или CDC), контролирует доступ к файлам. Локальный суперпользователь может затем войти как VIP или CDC и получить доступ ко всем файлам на /U/VIP/ или может просто зарегистрироваться как
пользователь через команду SU CDC. У суперпользователя появляется возможность создавать, читать, модифицировать или удалять файлы. Этот тип нарушения доступа особенно трудно установить, поскольку локальный суперпользователь контролирует файлы регистрации использования ресурсов и доступа к защищенным данным в системе. Замести все следы доступа - относительно простая задача.  Клиенты и серверы NFS не осуществляют проверку аутентичности друг друга. Следовательно, клиент может стать сервером при помощи команды ypserve или создать клиента при помощи команды ypbind. Клиенты NIS связываются при
включении с первым ответившим сервером. Ложный сервер обычно и отвечает первым. Сервер NFS позволяет любой системе стать клиентом. Эти вопросы безопасности разрешены в новой версии NIS, названной NIS+. Однако функции безопасности NFS+ частично не блокируются при взаимодействии с NIS.  Тривиальный протокол передачи файлов (tftp) и протокол передачи файлов (ftp) применяются для перемещения файлов из одной системы в другую, а ftp - это
фундаментальный ресурс Internet (см. "Объезд супермагистрали" о дополнительной
информации по защите вашей сети от доступа из Internet). Tftp особенно уязвим, поскольку разрешает передачу файлов без контроля прав доступа. Он наиболее часто используется с Bootstrap Protocol (BOOTP) для распространения конфигурационных файлов на бездисковые рабочие станции, X-терминалы и элементы сети, например на маршрутизаторы. Tftp следует дезактивировать, даже когда в этом нет явной необходимости. Чтобы ограничить область уязвимости, установите tftp в каталог chroot. Chroot разрешает доступ только к файлам в этом
каталоге и подкаталогам. Также ограничьте использование tftp локальной сетью.  Чтобы протестировать надежность защиты конфигурации tftp, выполните следующие команды: 
    # tftp <systemname>
    tftp> get /etc/passwd test
    tftp> quite
Проверьте, содержит ли файл test реальный файл паролей для системного имени. Если это так, то tftp не защищен.  Группа Computer Emergency Response Team (CERT) обнаружила несколько уязвимых мест tftp. CERT была организована агентством DARPA для мониторинга
компьютерной безопасности и попыток преодоления защиты. С ним можно связаться по адресу: [email protected].  Конфигурация ftp часто осуществляется некорректно. Никто не должен входить в систему как суперпользователь ftp. Если поддерживается анонимный ftp, то все файлы в каталоге ftp, включая сам каталог, должны находиться в распоряжении суперпользователя (root). Если сконфигурирован анонимный ftp, то не создавайте каталог, открытый для чтения и записи. Эти открытые на запись каталоги часто используются для нелегального распространения программного обеспечения, а также для распространения вирусов.  Simple Mail Transfer Protocol (SMTP) стал притчей во языцех с точки зрения уязвимости. SMTP часто выполняется как root (суперпользователь) или bin (другой привилегированный пользователь), и во многих организациях SMTP - единственная служба, к которой есть доступ из Internet. Это делает sendmail весьма привлекательной для выявления уязвимых мест системы.  Так, несанкционированный доступ к системе можно получить при помощи команд wiz, debug и kill. Чтобы обнаружить "черный ход", введите команды: 
    # telnet - name> 25
    wiz
    debug
    kill
    exit
Если "черного хода" не существует, ответ на каждый ввод будет: 
    500 Command unrecognized.
Еще одна проблема - возможность замаскироваться с помощью агента передачи данных Unix sendmail под любого пользователя сети. Mail выглядит как законный пользователь. Электронная почта по протоколу SMTP посылается открытым текстом и может быть перехвачена или считана с сети. Поэтому не включайте никакую информацию, которую нельзя было бы написать на обычной почтовой карточке. Широкое распространение получили ныне некоторые системы электронной почты, обеспечивающие секретность данных. Pretty Good Privacy (PGP) и Privacy Enchanced Mail (PEM) - примеры безопасных версий электронной почты (см. "Запечатайте
электронную почту"). Эти системы обеспечивают секретность содержимого сообщения на всем пути от отправителя до адресата.  Стандартом Windows для Unix является X Window. Обычно его называют просто X. Секретность информации в X обеспечивается конечным пользователем. Термины "клиент" и "сервер" в X часто взаимозаменяемы, а монитор, отображающий X,
назван дисплейной станцией. Пользователь может не обеспечить достаточную защиту дисплейной станции. Доступом системы к дисплейной станции управляет команда xhost, в то время как доступом пользователя к дисплейной станции управляет xauthorities. Доступ позволяет осуществлять отображение окон или приложений и мониторинг дисплейной станции. Имеющийся инструментарий позволяет отслеживать ввод в различные окна и осуществлять удаленный ввод данных в открытые окна.  Когда активирована xauthorities, то необходим ключ Data Encryption Standard (DES) для того, чтобы пользователь мог выводить изображение на дисплейную станцию. Каждый раз при открытии сеанса генерируется новый ключ. Ключи хранятся в корневом каталоге пользователя в файле. XAUTHORITY. Чтобы другой пользователь смог получить доступ к дисплейной станции, ключ должен быть извлечен из файла. XAUTHORITY и добавлен к файлу. XAUTHORITY другого пользователя. То же самое должно быть проделано для того же пользователя в другой системе. Например, если пользователь VIP пользуется дисплейной станцией MAPLE и хочет отобразить программы из системы OAK в MAPLE, ключ должен быть введен в файл. XAUTHORITY в OAK. Использование и xhost, и xauthority необходимо для обеспечения секретности в X. Пользователь должен быть довольно
грамотен для обеспечения сохранности информации в X. 

Сохранение мира

Сеть под Unix может быть засекречена. Первый шаг заключается в обеспечении жесткого контроля всего доступа в сеть и системы. Затем следует обеспечить все узлы сети посредством надежного конфигурирования протоколов и приложений и использовать шифрование всех данных, проходящих через незащищенные сети, какой является самая большая в мире открытая сеть Internet. LAN Синди Куллен - старший системный инженер компании Bell Communications
Research (Пискатавей, шт. Нью-Джерси). С ней можно связаться через Internet по адресу: [email protected] 

    $ finger username@systemname
    Login name: username (messages off)
    Directory:/u/username
    On since Jun 23 10:11:57 on ttyq1
    No Plan.
                                                      In real life: Actual Name
                                                      Shell:/bin/ksh
                                                      13 seconds Idle Time
    $ finger @ systemname
    Login
   console
   cdc
   vip
         Name
         root-C. Cullen - group XXXXX
         C. Cullen, 555-1212
         very important person, guest of Cindy Cullen
                                                      TTY
                                                      console
                                                      p0
                                                      p5
                                                              Idle
                                                              12
                                                              9
                                                                    When
                                                                    Thu 03:36
                                                                    Sat 05:34
                                                                    Sun 12:25

 В этом примере представлена часть вывода по выполнении команды finger (обратите внимание на информацию в поле имени). В ноябре 1988 года Роберт Т. Моррис-младший, в то время студент, изучающий компьютерные технологии в Корнельском университете, создал Morris Worm, самокопирующуюся и самораспространяющуюся программу, которая буквально поразила Internet. В программе использовалась именно команда finger. 

Неизбежные попутчики
Объезд супермагистрали

Firewall - это механизм, использующийся для защиты сети по всему периметру. Его наиболее популярное применение - защита корпоративных сетей от несанкционированного доступа из Internet. Существуют два основных подхода, используемых в firewalls. Набор фильтров firewall, как следует из его названия, фильтрует или отсеивает ненужные пакеты, руководствуясь множеством правил, названным списком контроля доступа (access control list).  Firewall для сервера приложений или посредника - это программа. Такой firewall фильтрует или определяет направление соединения для протоколов telnet, SMTP, ftp и World Wide Web. Пользователь должен иметь соответствующее программное обеспечение клиента и быть авторизован в firewall. Это позволяет контролировать доступ на уровне пользователя и регистрировать трафик их сети в сеть. Серверы приложений и посредники обеспечивают жесткий контроль входящих и
исходящих данных. Например, функции ftp могут ограничиваться только "puts" или "gets" и каждая транзакция может быть зарегистрирована. 

Запечатайте электронную почту

Pretty Good Privacy (PGP) может использоваться для шифрования файлов и электронной почты, а также для подписания документов с заверенной электронной подписью. PGP использует технику шифрования открытым ключом и секретным ключом. При посылке зашифрованной электронной почты, сообщение необходимо зашифровать открытым ключом получателя, секретный же ключ должен быть послан получателям под защитой их открытых ключей. Таким образом, только легитимный получатель способен расшифровать сообщение при помощи своего личного ключа.  Личный ключ каждого пользователя может быть использован для подписи документа. Соответствующий открытый ключ используется для определения
подлинности документа.  PGP распространяется бесплатно для некоммерческого использования, хотя существуют и коммерческие версии. Он доступен для большинства систем под Unix,
DOS, Windows, OS/2 и Macintosh. Экспортные ограничения распространяются на PGP. Однако совместимое с PGP программное обеспечение доступно и за пределами Соединенных Штатов. 
Privacy Enhanced Mail (PEM) - это стандарт шифрования электронной почты, разработанный группой инженерной поддержки Internet (IETF). PEM можно использовать для подписывания и шифровки сообщений электронной почты. Поддержка PEM доступна для приложений на ПК в системах Unix и Macintosh. PEM тоже использует шифрование с открытыми ключами.