Разделы:

Главная

О проекте

Загрузки

Документация:

Linux

BSD

Другие Unix

Программинг

HTML, XML...

Сервера

"Окна Закрой!"

MANы

 


Solaris Security FAQ - Ответы вопросы по защите Solaris

Ответы на все ваши вопросы по защите Solaris-а


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

Составитель - Питер Гальвин
Русская версия - Ильченко Евгений

Ниже, Вы можете найти список вопросов, которые часто задаются относительно защиты систем Solaris 2.x. Вы можете помочь нам сделать его более полным и точным, написав предложения по этим адресам: security-faq@sunworld.com и eugene@tsu.ru.

Последние изменения в этом справочнике обозначены как "+" для новых разелов, а "*" для обновленных разделов.

1. Общий раздел

  • * 1.1) Насколько защищена solaris 2?
  • * 1.2) Какой версией Solaris-а я должен пользоваться?
  • 1.3) Могу ли просто установить систему и игнорировать ее в дальнейшем?

    2. Как я могу отконфигурировать Solaris, чтобы делать его более защищенным?

  • 2.1) Какие разрешения доступа к файлам я должен изменить?
  • 2.2) Как я должен изменить конфигурацию пользователя root?
  • 2.3) Как я должен изменить файлы запуска?
  • 2.4) Как отключить доступ из сети пользователю root?
  • 2.5) Как отключить доступ посредством rlogin/rsh?
  • 2.6) Какие предустановленные пользователи ненужны?
  • * 2.7) Как защитить устройства?
  • 2.8) Какие права на файлы в директории /etc нужно поменять?
  • 2.9) Почему Solaris-машины работают как маршрутизаторы?
  • 2.10) Как отключить automounter?
  • 2.11) Как отключить службу NFS?
  • 2.12) Должен ли я беспокоиться относительно запуска cron-заданий?
  • 2.13) Безопасно ли использование динамической маршрутизации?
  • 2.14) Когда и как я должен использовать статический ARP?
  • 2.15) Безопасно ли использование rpcbind?
  • 2.16) Какие права доступа должны быть установлены на /etc/utmp?
  • 2.17) С каких программ можно убрать suid?
  • 2.18) Какие средства системы я могу отключить?
  • 2.19) Должен ли я оставить in.fingerd?
  • 2.20) Может ли syslog быть более эффективным?
  • 2.21) Как EEPROM может сделать систему более защищенной?
  • 2.22) Находится ли моя машина в состоянии прослушивания сети (promiscuous)?
  • 2.23) Если я использую NFS, как можно сделать его более защищенным?
  • 2.24) Как могу я защитить sendmail
  • 2.25) Хорошо ли защищен NIS и как его сделать еще более защищенным?
  • 2.26) Что необходимо для обеспечени защиты анонимного ftp-сервиса?
  • 2.27) Как можно сделать X-Windows более защищенным?
  • 2.28) Как включить SUN-DES-1 аутентификацию?
  • * 2.29) Какие заплатки я должен установить?
  • + 2.30) Как я могу предотвратить выполнение кода в стеке?

    3. Какие программы я должен заменить или добавить?

  • 3.1) inetd?
  • * 3.2) ifstatus?
  • * 3.3) xntp?
  • * 3.4) sendmail?
  • 3.5) rpcbind?
  • * 3.6) Программы проверки паролей?
  • 3.7) crack?
  • 3.8) ftp?
  • 3.9) fix_modes?
  • 3.10) noshell?
  • 3.11) bind?
  • 3.12) netcat?

    4. Какие еще полезные ресурсы я должен знать?

  • 4.1) Списки рассылки компании Sun?
  • 4.2) Обновления от Sun-а?
  • 4.3) Другие ответы на вопросы по системам Solaris?
  • 4.4) Полезные группы новостей?
  • 4.5) Полезные списки рассылки?
  • * 4.6) Полезные статьи?
  • * 4.7) Полезные WWW-сайты?

    5. Как я могу сделать свою станцию Solaris более защищенной?

  • 5.0) Обзор
  • 5.1) Шаг 0 - контрольный список защиты сервера.
  • 5.1) Шаг 1 - настройка оборудования
  • 5.2) Шаг 2 - установка операционной системы
  • 5.3) Шаг 3 - изменение настроек
  • 5.4) Шаг 4 - установка программного обеспечения других производителей
  • 5.5) Шаг 5 - ограничение доступа к системе
  • 5.6) Шаг 6 - конфигурирование системы S/Key
  • 5.7) Шаг 7 - конфигурирование сервиса wu-ftp
  • 5.8) Шаг 8 - ограничение доступа к файлам и файловым системам
  • 5.9) Шаг 9 - проверка конфигурации
  • 5.10) Шаг 10 - дополнительные предложения

    6. Благодарности

  • 1) Общий раздел

    1.1) Насколько защищена solaris 2?

    Solaris 2 относительно безопасная система, учитывая то, что она служит для общих целей, работает с разделением времени и многопользовательским доступом. Разумеется, такие системы создаются с некоторыми компромиссами. Solaris 2 - версия Unix, которая не создавалась специально для защиты. Однако, SUN активно выпускает заплатки(patches) для закрытия брешей в защите. Так же, имеются дополнительные средства, которые могут увеличить защиту Solaris (см. раздел 3).

    В действительности, Solaris был разработан в соответствии с требованиями TCSEC (Оранжевая Книга C2) к уровню защиты. По утверждению SUN-а, Solaris 2.4SE сертифицирован на ITSEC E2/F-C2. Solaris 2.6 в настоящее время подвергается обоим испытаниям ITSEC E3/F-C2 и TCSEC C2 на получение свидетельств защищенности. Текущая информация может быть найдена по адресу http://www.sun.com/solaris/2.6/ds-security.html.

    Чтобы сформировать систему, которая будет соответствовать нормам, необходимо установить ряд заплат. Пакет из заплат, используемых для улучшения защиты может быть получен непосредственно от SUN-а.

    Для тех, кто нуждается в лучшем качестве защиты, нежели обеспеченная уровнем C2, SUN поставляет версию Solaris, которая соответствует требованиям TCSEC CMW (Изолированное Автоматизированное Место) - уровню, который превышает B1.

    Trusted Solaris 1.2	F-B1/E3		(Основан на SunOS 4.1.3_U1)
    Trusted Solaris 2.5.1	F-B1/E3		(Основан на Solaris 2.5.1 11/97)
    

    1.2) Какой версией Solaris-а я должен пользоваться?

    Где защита наиболее хорошая? Каждый последующий выпуск Solaris-а был усовершенствован, по отношению к предшественнику. Solaris 2.7 - в настоящее время самая последняя версия и также наиболее защищеная.

    1.3) Могу ли просто установить систему и игнорировать ее в дальнейшем?

    Большинство установленных машин, страдают от определенной энтропии: на них не установлена последняя версия ОС, последние заплаты и программы. Очень важно установить самые последние заплаты. По крайней мере, надо убедиться, что все известные дырки в защите закрыты.

    2) Как я могу отконфигурировать Solaris, чтобы делать его более защищенным?

    2.1) Какие разрешения доступа к файлам я должен изменить?

    Программа fix-modes выполняется на системах Solaris 2.4 и 2.5 и изменяет права на системные файлы и каталоги. Новые права доступа создают дополнительные проблемы, на пути хакера, желающего получить полный доступ или изменить системные файлы.

    2.2) Как я должен изменить конфигурацию пользователя root?

    Убедитесь, что у root-а стоит umask 077 или 027.

    Убедитесь, что root имеет безопасный путь поиска файлов, напрмер как /usr/bin:/sbin:/usr/sbin

    2.3) Как я должен изменить файлы запуска?

    В основном, исследуйте все файлы в /etc/rc2.d и /etc/rc3.d, начинающиеся с "S". Все файлы, которые запускают ненужные в Вашей системе средства, должны быть переименованы (убедитесь, что новые имена не начинаются с "S"). Проверьте все изменения с помощью перезагрузки, просмотрите /var/adm/messages, и проверьте систему на наличие посторонних процессов, показанных программой ps -elf.

    2.4) Как отключить доступ из сети пользователю root?

    Удостоверитесь в том, строка "CONSOLE", в файле /etc/default/login, разкоментированна. Чтобы отключить использование сервиса ftp, добавьте "root" в файл /etc/ftpusers.

    2.5) Как отключить доступ посредством rlogin/rsh?

    Удалитe /etc/hosts.equiv, /.rhosts, и все "r"-команды из /etc/inetd.conf. Выполните kill -HUP для процесса inetd.

    2.6) Какие предустановленные пользователи ненужны?

    Удалите, блокируйте, или закомментируйте ненужные имена пользователей, включая "sys", "uucp", "nuucp", и "listen". Самый надежный способ закрыть их состоит в том, чтобы поместить "NP" в поле пароля, в файле /etc/shadow. Также, рассмотрите использование программы noshell, чтобы записывать попытки использования этих имен.

    2.7) How to I protect devices?

    Файл /etc/logindevperm содержит информацию о конфигурации прав доступак устройствам для того, чтобы они устанавливались при входе в систему (устройства: console, keyboard, и т.д.). Проверьте значения прав и измените их при необходимости.

    Для временных средств хранения данных (например, для ленты), подсистема BSM обеспечивает команды занятия и освобождения устройства, которые гарантируют, чтоТолько один пользователь может обращаться к временным средствам средствам в один момент.

    2.8)Какие права на файлы в директории /etc нужно поменять?

    Ни один файл в /etc не нуждается в возможности группой записи. Удалите групповые права на запись с помощью команды chmod -R g-w /etc

    2.9) Почему Solaris-машины работают как маршрутизаторы?

    По умолчанию, если Solaris машина имеет больше чем один сетевой интерфейс, Solaris будет маршрутизировать пакеты между этими интерфейсами. Этим свойством можно управлять из файла /etc/init.d/inetinit. Дла выключения маршрутизации в системе Solaris версии 2.4 (или меньшей), добавьте ndd -set /dev/ip ip_forwarding 0 в конец файла /etc/init.d/inetinit. В Solaris 2.5, просто выполните touch /etc/notrouter. Вы должны знать, что всегда остается возможнось уязвимости ОС в течение запуска, когда машина может перенаправлять пакеты, до того, как маршрутизация отключится.

    2.10) Как отключить automounter?

    Automounter контролируется с помощью файлов конфигурации /etc/auto_*. Чтобы отключить automounter, удалите эти файлы, и/или отключите /etc/rc2.d/S74autofs.

    2.11) Как отключить службу NFS?

    NFS-системы контролируются с помощью файла /etc/dfs/dfstab. Удалите этот файл. Для отключения сервера NFS, переименуйте /etc/rc3.d/S15nfs.server. Чтобы запретить использование NFS-клиента, переименуйте /etc/rc2.d/S73nfs.client. При переименовании файлов запуска, убедитесь, что их названия не начинаются с символа "S".

    2.12) Должен ли я беспокоиться относительно запуска cron-заданий?

    Пересмотрите все запускающиеся cron-задания в файле cron каждого пользователя системы в каталоге /var/spool/cron/crontabs. Разрешите запись в log-файл всех действий выполняемых cron-ом, установив "CRONLOG=yes" в файле /etc/default/cron.

    2.13) Безопасно ли использование динамической маршрутизации?

    Машины, использующие динамический маршрутизатор наподобие in.routed и in.rdisc уязвимы из-за получения неверных маршрутов. Эти маршруты могут разорвать некоторые соединения или даже всю связь с другими сетями. Когда это возможно, используйте статические маршруты (маршруты, добавленные с помощью команды route при запуске системы.

    2.14) Когда и как я должен использовать статический ARP?

    ARP - протокол, используемый для сопоставления IP и Ethernet адресов. Машины, которые соединены посредством сети (и не имеют маршрутизаторов между собой) знают ARP-адреса друг друга. Если одна машина заменяется другой, то ARP адреса обычно различаются. По умолчанию, Solaris динамически определяет адреса ARP. Команда arp может использоваться, чтобы статически установить ARP входы таблицы и обновить все другие входы. Это свойство лучше всего используется при наличии небольшого количества неизменных сетевых систем и машины должны быть уверены в аутентификации друг друга.

    2.15) Безопасно ли использование rpcbind?

    rpcbind - программа, которая позволяет rpc-клиентам и rpc-сервисам найти друг друга. К сожалению, стандартный rpc незащищен. Он использует "AUTH_UNIX" аутентификацию, следовательно он использует IP-адрес удаленной системы и UID удаленного пользователя для идентификации. Обе эти формы идентификации могут быть легко подделанны или изменены. Системы общего назначения обычно нуждаются в rpc для удобства пользователей. На системах специального назначения (Web-сервера, ftp-сервера, почтовые сервера и т.д) можно заблокировать rpc. Проверьте все средства, которые Вам необходимы для работы и удостоверьтесь, что они не зависят от отключения rpc. Для отключения rpc, переименуйте /etc/rc2.d/S71RPC.

    2.16) Какие права доступа должны быть установлены на /etc/utmp?

    На /etc/utmp могут быть установлены права 644 без какого-либо воздействия на любой сервис.

    2.17) С каких программ можно убрать suid?

    Большинство из setuid и setgid программ, на системах Solaris, используются только пользователем root или пользователем (группой) которым принадлежит файл. С таких файлов можно удалить аттрибуты setuid и setgid, без уменьшения способности пользователя выполнить свою работу. Рассмотрите каждую из этих программ индивидуально, относительно их использования в вашей системе. Ниже приведен список setuid-программ, взятый из системы Solaris 2.6:

    # find / -perm -4000 -print/usr/lib/lp/bin/netpr
    /usr/lib/fs/ufs/quota
    /usr/lib/fs/ufs/ufsdump
    /usr/lib/fs/ufs/ufsrestore
    /usr/lib/fs/vxfs/vxdump
    /usr/lib/fs/vxfs/vxquota
    /usr/lib/fs/vxfs/vxrestore
    /usr/lib/exrecover
    /usr/lib/pt_chmod
    /usr/lib/sendmail
    /usr/lib/utmp_update
    /usr/lib/acct/accton
    /usr/lib/uucp/remote.unknown
    /usr/lib/uucp/uucico
    /usr/lib/uucp/uusched
    /usr/lib/uucp/uuxqt
    /usr/lib/sendmail.orig
    /usr/openwin/lib/mkcookie
    /usr/openwin/bin/xlock
    /usr/openwin/bin/ff.core
    /usr/openwin/bin/kcms_configure
    /usr/openwin/bin/kcms_calibrate
    /usr/openwin/bin/sys-suspend
    /usr/dt/bin/dtaction
    /usr/dt/bin/dtappgather
    /usr/dt/bin/sdtcm_convert
    /usr/dt/bin/dtprintinfo
    /usr/dt/bin/dtsession
    /usr/bin/at
    /usr/bin/atq
    /usr/bin/atrm
    /usr/bin/crontab
    /usr/bin/eject
    /usr/bin/fdformat
    /usr/bin/login
    /usr/bin/newgrp
    /usr/bin/passwd
    /usr/bin/ps
    /usr/bin/rcp
    /usr/bin/rdist
    /usr/bin/rlogin
    /usr/bin/rsh
    /usr/bin/su
    /usr/bin/tip
    /usr/bin/uptime
    /usr/bin/w
    /usr/bin/yppasswd
    /usr/bin/admintool
    /usr/bin/ct
    /usr/bin/cu
    /usr/bin/uucp
    /usr/bin/uuglist
    /usr/bin/uuname
    /usr/bin/uustat
    /usr/bin/uux
    /usr/bin/chkey
    /usr/bin/nispasswd
    /usr/bin/cancel
    /usr/bin/lp
    /usr/bin/lpset
    /usr/bin/lpstat
    /usr/bin/volcheck
    /usr/bin/volrmmount
    /usr/bin/pppconn
    /usr/bin/pppdisc
    /usr/bin/ppptool
    /usr/sbin/allocate
    /usr/sbin/mkdevalloc
    /usr/sbin/mkdevmaps
    /usr/sbin/ping
    /usr/sbin/sacadm
    /usr/sbin/whodo
    /usr/sbin/deallocate
    /usr/sbin/list_devices
    /usr/sbin/m64config
    /usr/sbin/lpmove
    /usr/sbin/pmconfig
    /usr/sbin/static/rcp
    /usr/sbin/vxprint
    /usr/sbin/vxmkcdev
    /usr/ucb/ps
    /usr/vmsys/bin/chkperm
    /etc/lp/alerts/printer
    
    

    Создайте основной список программ с оставленными setuid/setgid правами и иногда проверяйте его на соответствие с новым состоянием системы.

    2.18) Какие средства системы я могу отключить?

    Каждая система должна быть проверена на наличие ненужных сервисов. Если Вы нашли подобный - отключите его. Некоторые из сервисов запускаются из файлов загрузки системы (как описано в секции 2), а некоторые из файла /etc/inetd.conf. В последнем случае, закомментируйте строку, запускающую сервис и выполните перезагрузку kill -HUP сервиса inetd. Ниже приведены некоторые часто ненужные сервисы:

    tftp	     systat	    rexd	ypupdated	netstatrstatd	     rusersd	    sprayd	walld           exec
    comsat	     rquotad	    name	uucp
    
    

    Для создания еще более защищенной системы, замените стандартный inetd.conf на другой, который включает только telnet и ftp (если Вы нуждаетесь в этих средствах).

    2.19) Должен ли я оставить in.fingerd?

    В сервисе in.fingerd раньше были некоторые проблемы защиты. Если Вы хотите обеспечивать этот информационный сервис, то выполняйте его как "nobody", а не как "root".

    2.20) Может ли syslog быть более эффективным?

    По умолчанию, syslog обеспечивает минимальную регистрацию системных событий. Измените файл /etc/syslog.conf, чтобы получить большее количество информации в файле регистрации, а так же разделите файлы, куда записываются события. Что-нибудь связанное с защитой, должно записываться в шифрованный файл. К сожалению, syslog должен быть перезапущен для того, чтобы перечитать новый конфигурационный файл.

    Запись о попытках входа в систему можно получить, создав файл "loginlog":

    touch /var/adm/loginlogchmod 600 /var/adm/loginlog
    chgrp sys /var/adm/loginlog
    
    

    2.21) Как EEPROM может сделать систему более защищенной?

    Установите режим защиты EEPROM, с помощью "ok setenv security-mode=command", для того, чтобы защитить паролем все команды EEPROM за исключением "boot" и "continue". Установите пароль EEPROM-а, чтобы никто не мог изменять его параметры. К сожалению, это не особенно надежно защищает машину. Если кто-то получит физический доступ к компьютеру, он может открыть ее и заменить EEPROM. Замена EEPROM также изменит hostid этого сервера. Запишите все "hostid" ваших машин и проверяйте их иногда.

    2.22) Находится ли моя машина в состоянии прослушивания сети (promiscuous)?

    При использовании системы Solaris, нет никакого способа определить, находятся ли сетевые интерфейсы машины в "прослушивающем" режиме. Такой режим позволяет машине видеть все сетевые пакеты и не только те, которые предназначенны для этого компьютера. Это позволяет машине просматривать сеть и анализировать весь сетевой трафик. Интерфейс должен быть в прослушивающем режиме только при запуске программы snoop или другой программы мониторинга сети. Если Вы не запускали таких программ, и интерфейс вашей машины находится в прослушивающем режиме, то вероятно, что хакер контролирует вашу сеть. Бесплатный продукт ifstatus возвращает статус сетевой карты, в том числе и информацию о прослушивающем режиме (См. раздел 3.)

    2.23) Если я использую NFS, как можно сделать его более защищенным?

    • Любая файловая система, перечисленная в /etc/dfs/dfstab будет экспортироваться в сеть по умолчанию. Включите список nfs-клиентов (или сетевой группы) с помощью параметров "-o rw" или "-o ro".
    • Включите параметр "nosuid", для того, чтобы запретить setuid-программы на этом томе (если это не нужно).
    • Не выполняйте монтирование nfs через rpcbind - сервис mount решит, что запрос локальный и разрешит suid. Такая функция является источником известных rpcbind-уязвимостей, как сообщено CERT-ом (раздел 4). Используйте измененный rpcbind (раздел 3) который отключает пересылку запроса, или убедитесь, что у Вас установлены последние rpcbind заплаты, которые также отключают перенаправление запроса.
    • Используйте secure-RPC, если это возможно. Иначе, вы используете "AUTH_UNIX" аутентификацию, которая зависит от IP-адреса пользователя. Любая машина, использующая адрес из Вашего списка доступа, может получить доступ к NFS.
    • Отключите NFS, если это возможно. NFS-трафик передается без шифрования - в чистом виде (даже при использовании "AUTH_DES" или "AUTH_KERB" для аутентификации) так, что любые файлы, передаваемые через NFS могут быть перехвачены прослушивающей машиной.
    • Некоторые (хакерские) программы умеют подбирать дескриптор файла из корневой системы и таким образом получать любой файл с NFS станции, независимо от прав доступа. Используйте fsirand, чтобы рандомизировать номера inode на NFS-серверах.

    2.24) Как могу я защитить sendmail

    С Solaris 2.5, SUN поставляет намного более современный sendmail. Однако, имеются новые ошибки, сообщяемые ежемесячно. Как можно сделать sendmail более безопасным?

    • Установите последнюю версию Berkeley sendmail (см. раздел 3)
    • Используйте smrsh (раздел 3)
    • Удалите "decode" из /etc/aliases
    • Установите права на /etc/aliases в 644
    • Рассмотрите возможность использования брандмауэра с фильтрацией SMTP-трафика, для отбрасывания ненужных команд SMTP.

    2.25) Хорошо ли защищен NIS и как его сделать еще более защищенным?

    NIS - не защищенный распределенный сервис имен. NIS+ более безопасен когда правильно отконфигурирован. NIS отдаст всю информацию из таблиц, если его доменное имя будет подобрано. Чтобы закрыть эту дырку, поместите адреса доверенных серверов/сетей в файл /var/yp/securenets. Также рассмотрите использование secure-RPC или NIS+. В конце-концов, не включайте root-а и другие системные входы в NIS таблицы.

    2.26) Что необходимо для обеспечени защиты анонимного ftp-сервиса?

    Solaris 2.5 ftpd(1M) содержит неплохой набор примеров конфигурации. Необходимо проделать тоько следующие действия:

    • cp /etc/nsswitch.conf ~ftp/etc
    • Удостоверитесь, что файловая система, содержащая ~ftp не примонтирована с опцией "nosuid".
    • Ни один файл под ~ftp, не должен принадлежать "ftp"
    • Более детальные инструкции могут быть найдены в разделе 4.

    2.27) Как можно сделать X-Windows более защищенным?

    • Используйте SUN-DES-1, чтобы получить Secure RPC, для передачи авторизации/аутентификации X-Windows.
    • Используйте xhost +user@host при раздаче доступа

    2.28) Как включить SUN-DES-1 аутентификацию?

    • set DisplayManager*authorize: true
    • set DisplayManager._0.authName: SUN-DES-1
    • rm ~/.Xauthority
    • Добавьте разрешение для локального компьютера с помощью xauth local/unix:0 SUN-DES-1 unix.local@nisdomain and xauth local:0 SUN-DES-1 unix.local@nisdomain
    • Запустите X: xinit -- -auth ~/.Xauthority
    • Добавьте себя и удалите всех остальных: xhost +user@ +unix.local@nisdomain -local -localhost

    Теперь, чтобы дать пользователю "foo" разрешение обращаться к серверу:

    • Дайте "foo" права на сервер: xhost +foo@
    • Создайте подходящую авторизацию: xauth add node:0 SUN-DES-1 unix.node@nisdomain
    • Теперь, "foo" может подсоединиться к серверу: xload -display node:0

    2.29) Какие заплатки я должен установить?

    Используйте showrev -p для просмотра заплат , установленных на систему. Проверьте SUN-овский список заплат (раздел 4) для текущей версии системы. Загрузите и установите все подходящие заплаты защиты. Иногда порверяйте список заново. Не обязательно ставить все заплаты на всех машинах, но защищенные сервера или сервера с публичным доступом должны проверяться постоянно. Программа patchdiag, которую можно найти на SunSolve CD и на SunSolve Web-сайте, автоматически сравнит версии заплат на сервере с текущими рекомендациями SUN-a и покажет Вам различия.

    2.30) Как я могу предотвратить выполнение кода в стеке?

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

    Чтобы защитить систему от взломов, основанных на переполнении буфера, добавьте следующие строки в файл /etc/system:

    set noexec_user_stack=1
    
    set noexec_user_stack_log =1
    

    Первая строка предотвратит выполнение стека. Необходимо учесть, что некоторые программы, могут законно пробовать выполнить код в стеке. Эти программы перестанут работать. В принципе, если система установлена для одной цели например Web-сервер, Вы можете без опаски использовать эту установку. Вторая строка заставляет систему записывать все события, когда кто-то пробует запустить порграмму для взлома.

    3) Какие программы я должен заменить или добавить?

    3.1) inetd?

    inetd может быть заменен на ftp://qiclab.scn.rain.com/pub/security/xinetd* для того, чтобы записывать события. (Эта программа не поставляется с Solaris-ом)

    3.2) ifstatus?

    ifstatus может определить, находятся ли ваши сетевые интерфейсы в прослушивающем режиме. Проблема в том, что для Solaris-а, она не годится, так как он не устанавливает статус прослушивания сетевой карты.

    3.3) xntp?

    xntp более защищенная версия службы сетевого времени - ntp(network time protocol).

    Начиная с Solaris 2.6, SUN поставляет xntpd вместе с операционной системой.

    3.4) sendmail?

    Самый современная (и обычно наиболее безопасная) версия sendmail всегда доступна из Berkeley. Она включает в себя пакет smrsh. В этот пакет включена так же программа smrsh (sendmail restricted shell), которая вызывается sendmail-ом для обработки любых вызываемых программ.

    Предупреждение: в оригинальной версии SUN-a, имеются специфические изменения, который будут потеряны, если Вы установите Berkeley sendmail. Также, SUN-овские заплаты для sendmail-а имеют обыкновение заменять все чужие версии своим кодом. После установки заплат, всегда проверяйте, остался ли на месте установленный Вами sendmail.

    SUN поставляет версию sendmail-а 8.9.1b с системами Solaris 7.

    3.5) rpcbind?

    Желательно поставить более защищенный rpcbind вместо стандартного. Эта версия предоставляет tcpwrapper-подобную функциональность и отключают пересылку запросов NFS через rpcbind. Последние SUN-овские заплаты также решают эту проблему.

    3.6) Программы проверки паролей?

    К сожалению, passwd+ и npasswd еще не выпущены для Solaris-а. Они заменяют простые программы установки паролей, которые не проверяют сложность вводимых слов.

    Имеется программа, подобная npasswd но только для NIS-сервиса: ftp://autoinst.acs.uci.edu/pub/uci-yppasswd . Согласно автору (Дэну Стромбергу), код для проверки плохих паролей маленький и можно просто скопировать его в другие программы.

    Начиная с Solaris 2.6 и выше, можно улучшить или заменить механизм аутентификации, используемый Solaris-ом с помощью средств PAM(ПАМ). За дополнительной информацией можно обратиться по адресам: http://www.sun.com/solaris/pam/, http://www.sun.com/software/events/presentations/ENP2.Lai/ENP2.Lai.html, и Pete's Wicked World.

    Довольно просто установить модуль PAM, который будет проверять вводимые пароли, чтобы пользователи не использовали слова из словаря (так же можно установить свои правила).

    Для использования модулей PAM, нет необходимости заменять какие-либо компоненты ОС, включая passwd, login и т.д.

    3.7) crack?

    Программа crack может быть использована для того, чтобы подобрать пароли используя информацию из Вашего файла /etc/shadow. Она требует очень много машинного времени, но зато сообщит 10% паролей после первого же запуска.

    3.8) ftp?

    wu-ftpявляется наиболее распространенной заменой для стандартного ftpd-сервиса. Этот пакет обеспечивает оличную запись событий и управление доступом.

    3.9) fix_modes?

    fix-modes, это shell-скрипт, который корректирует права на файлы и каталоги, после установки системы Solaris.

    3.10) noshell?

    Программа noshellможет быть использованна как оболочка для пользователей, которые никогда не должны входить в систему. Так же она записывает все попытки их использовать. (не входит в стандартную поставку Solaris-a)

    3.11) bind?

    Стандартный bind для Solaris-а содержал в себе некоторые проблемы безопасности (См. CERT в разделе 4) Эти проблемы были исправленны, но Solaris-овский bind всегда содержит какие-либо недостатки. Последняя версия альтернативного bind-а всегда доступна здесь: ISC.

    3.12) netcat?

    NetCat, это инструмент, который может оказаться полезным как для руководителей службы безопасности, так и для хакеров. Это - гибкий "создатель" сетевых подключений, который позволяет исследовать произвольные порты на различных системах.

    4) Какие еще полезные ресурсы я должен знать?

    4.1) Списки рассылки компании Sun?

    SUN обеспечивает рассылку бюллетеня по вопросам безопасности, посредством электронной почты. Чтобы подписаться, пошлите email по адресу "security-alert@sun.com" с полем Subject, содержащим фразу "subscribe CWS Ваш_обратный_e-mali_адрес" Старые выпуски бюллетеня доступны здесь: ftp://ftp.uu.net/systems/sun/sun-dist. Телефон контактной службы: (415) 688-9081

    4.2) Обновления от Sun-а?

    Заплатки, связанные с безопасностью систем доступны по адресам: http://sunsolve1.sun.com (для людей, имеющих договор с SUN-ом)и ftp:// ftp.uu.net/systems/sun/sun-dist (для всех остальных). А так же через http-интерфейс: http://sunsolve.Sun.COM/pub-cgi/patchpage.pl

    4.3) Другие ответы на вопросы по системам Solaris?

    Отличный Solaris FAQ можно найти здесь: http://www.wins.uva.nl/pub/solaris/solaris2/Разумеется, он на английском.

    4.4) Полезные группы новостей?

    Полезными можно считать все группы новостей, содержащие слова "sun" в своих названиях :-)

    comp.security.announce

    4.5) Полезные списки рассылки?

    SUN поддерживает список рассылки о последних обновлениях "patch club" в котором рассылается детальная информация по последним заплаткам. Так же, каждую неделю рассылаются краткие сводки. Все, кто подписаны на этот список рассылки получают т.н. "EarlyNotifier Alerts" - важную информацию об этих обновлениях. Для того, чтобы подписаться на этот список рассылки, пошлите письмо по адресу SunSolve-EarlyNotifier@Sun.COM

    Если Вы хотите подписаться на списки рассылки связанные с защитой информации, подпишитесь на список рассылки best-of-security: best-of-security-request@suburbia.net. Так же можно получать краткие версии этих рассылок: best-of-security-d-request@suburbia.net.

    Большинство проблем защиты возникает из-за ошибок в операционных системах или прикладных программах. Для того, чотбы быть всегда в курсе событий, подпишитесь на список рассылки Bugtraq. В этом списке обсуждаются последние найденные дырки. Скотт Часин был первым организатором этого списка. Чтобы подписаться на bugtraq, пошлите письмо по адресу send mail to listserv@netspace.org содержащее фразу "subscribe bugtraq". Архив списка адресатов доступен в http://www.geek-girl.com/bugtraq/index.html.

    "Florida SunFlash" - закрытый список рассылки, только для владельцев систем SUN. Обычно по нему рассылаются официальные сообщения для прессы от SNU-a и его партнеров. Чтобы получить информацию относительно доступности этих сообщений из Вашей страны, пошлите запрос в infosunflash@Sun.COM Для того, чтобы подписаться, пошлите запрос по адресу sunflash-request@Sun.COM Архивы можно найти на сайтах solar.nova.edu, ftp.uu.net, sunsite.unc.edu, src.doc.ic.ac.uk и ftp.adelaide.edu.au

    Так же имеется список рассылки для администраторов систем. Он немодерируемый и служит обычно для срочных сообщений. Перед тем как посылать туда сообщения, подпишитесь и немного почитайте, о чем там пишут. Так же необходимо прочесь правила работы списка. Подписаться можно по адресу: sun-managers@sunmanagers.ececs.uc.edu

    Список расслыки "Sneakers" создан для обсуждения ЗАКОННЫХ продуктов и экспериментов в тестировании различного рода брандмауэров Internet, а так же других программ защиты TCP/IP.

    Вы можете подписаться на список рассылки CIAC, заполнив эту форму.

    Список рассылки по брандмауэрамсоздан для дискуссий, отсносящихся только к его теме.

    Для того, чтобы узнать об остальных списках рассылки, посетите Security Mailing Lists FAQ на сайте ISS. Здесь вы найдете аннотируемый список многих списков рассылки, связанных с защитой систем и информацию о том, как на них подписаться.

    4.6) Полезные статьи?

    Прошлые выпуски статей питера Гальвина в бюллетене SunWorld Solaris Security известные как "Pete's Wicked World", можно найти по адресу http://www.sunworld.com/sunworldonline/common/swol-backissues-columns.html#security

    Еще некоторые статьи Кэролин Феннели: Wizard's Guide to Security.

    4.7) Полезные WWW-сайты?

    Возможно, наибольшее количество информации можно найти на сайте COAST.

    Компания ISS продает сканеры безопасности, а так же предоставляет полезную информацию на своем сайте. Особенно полезным является страница Security FAQs.

    The Computer Security Institute публикует обзоры в которых отслеживается текущая информация используемая профессионалами в области защиты данных.

    Группа Qualix публикует полезную информацию о Firewall-1 FAQ

    Компания Memco продает программное обеспечение, обеспечивающее улучшение защиты компьютеров.

    Университет Хьюстона предоставляет свой собственный Информационный справочник по безопасности. Особенно рекомендуется тем, кто составляет политику безопасности для своего сайта.

    Если Вам интересна тема защиты Web-сервиса, почитайте WWW Security FAQ. Так же может показаться интересным страница Security Issues in WWW.

    Bellcore продает некоторые программы для защиты.

    Trusted Systems проводит консультирование и обучение по безопасности.

    V-One продает продукты аутентификации и шифрования.

    Информация о PGP.

    Лучший сервис по обнаружению дырок и по рекомендациям защиты предоставляет CERT. Там же можно найти изаплатки.

    NIH представляет полезный сайт по компьютерной безопасности, с особенно полезным списком программ.

    Raptor продает Proxy Gatewayбрандмауэры для систем Unix и NT. Здесь же можно найти некоторые документы об их продуктах.

    The Unix Guru Universe - полезный сайт со ссылками.

    CIAC - отделение департамента Министерства Энергетики США, занимающееся вопросами информационной безопасности. Предоставляет информацию и для остальной части населения :)

    RSA содержит очень полезный cryptography FAQ, в котором объясняется большое количество аспектов криптографии.

    Узнайте приемы хакеров, прочитав Phrack Newsletter

    Еще один полезный крякерский сайт: http://www.geocities.com/Area51/5537/.

    Неплохой список сравнений брандмауэров доступен в свободном и коммерческом виде.

    Интересная коллекция ссылок по безопасности: http://www.fish.com/security/.

    5) Как я могу сделать свою станцию Solaris более защищенной?

    Имеются несколько шагов для установки "защищенного" Web-сервера. Но что можно считать "защищенным"? Любая машина, которая доступна извне - не может считаться защищенной на 100% Подсоединяя ее к сети Internet, Вы открываете дверь и позволяете любому зайти и посмотреть. Зато, можно защитить дверь, обить ее железом, поставить горилл и наблюдать за тем, чтобы посетители находились только в одной комнате. Устанавливая систему со всеми предосторожностями, добавляя системы мониторинга и аудитинга, Вы можете сделать свой WWW-сервер намного более защищенным.

    Предыдущая версия этого документа была создана из двух статей Питера Галвина и Хала Померанза - SunWorld, Апрель 1996 и SunWorld, Май 1996

    Насколько должен быть защищен web-сервер? Ответ - "очень защищен!". Постоянно происходят неприятные инциденты с заменой информации на популярных серверах. Некоторое количество существующих инструментальных средств могут позволить любителям стать настоящими террористами. Хорошей новостью для вас может быть тот факт, что, если Вы сможете отразить атаки популярных средств взлома, то 90 процентов хакеров пойдут искать другой, менее защищенный сервер.

    Следующие методы могут сделать Solaris-систему, очень защищенной, но они должны объединяться с продуманной сетевой архитектурой, использующей брандмауэры или фильтрующие маршрутизаторы (нет никакого смысла в управлении доступом по IP-адресу, если хакер может послать Вам пакеты с подделанными адресами). Подобная архитектура может только надежно существовать только вместе со всесторонней стратегией защиты, покрывающей всю Вашу организацию.

    Кроме того, никакая система не может считаться полностью защищенной. Любые услуги для пользователей (web-сервера и анонимный FTP), которые Вы запустили на своем серере, уменьшают общую защиту системы. Не устанавливайте другое программное обеспечение, не перечисленное в нижеследующем списке. Эта машина, как предполагается, должна быть именно защищенной, а не удобной в управлении.

    5.0) Список мер по защите WWW-сервера

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

    • Отключите систему от сети, пока она не готова для использования.
    • Установите только основную операционную систему и добавьте только необходимые программные пакеты.
    • Установите рекомендуемые заплатки защиты.
    • Уменьшите количество запускаемых сервисов, удалив ненужные файлы запуска (только осторожно!)
    • Запретите перенаправление IP-пакетов в /etc/init.d/inetinit.
    • Добавьте скрипт в системные файлы начальной загрузки, для исправления прав на /tmp (кроме Solaris 2.5).
    • Посмотрите, какие процессы запущены, с помощью програмы ps.
    • Запускайте sendmail из cron-а, чтобы иногда проверять список отправляемых писем.
    • Установите и отконфигурируйте tcp_wrappers, S/Key, wu-ftp, и tripwire как необходимо для вашей работы.
    • Удалите всё, кроме wu-ftp и telnet из /etc/inetd.conf, и отредактируйте /etc/hosts.allow для ограничения машин, разрешенных использовать этот сервис.
    • С помощью syslog-а, включите запись всех событий, касающихся доступа к компьютеру через telnet.
    • Где возможно, монтируйте файловые системы в режиме read-only и no-suid.
    • Сделайте /noshell входом по умолчанию для всех пользователей, исключая пользователей root и access (см. ниже).
    • Удалите /etc/auto_*, /etc/dfs/dfstab, /var/spool/cron/crontabs/* (кроме файла root).
    • Используйте статическую маршрутизацию.
    • Протестируйте свою систему, включая разрешенный и запрещенный доступ а так же запись событий.
    • Рассмотрите замену продуктов sendmail, syslog, bind, и crontab на более защищенные версии.
    • Установите xntp для точного определения времени.
    • Рассмотрите разрешения доступа в систему.
    • Продолжайте наблюдать и тестировать www-сервер.

    Даже если Вы выполните только некоторые из этих шагов защиты, ваш Web-сервер будет намного более защищен, нежели после стандартной установки. Но, для того, чтобы он был действительно защищен, доделайте до конца работу и используйте все рекомендованные инструментальные средствам и методы.

    5.1) Настройка оборудования

    Не подключите систему к сети прежде, чем она установлена и защищена. Теоретически, некоторые хакеры могут войти и оставить черный ход, пока Вы пытаетесь защитить сервер. Есть зарегистрированные случаи, когда хакеры взламывали систему за те пять минут, пока она была подключена к сети Internet.

    Вам будет необходим CD-ROM, чтобы установить систему и ленточное устройство или дисковод, для копирования программ и файлов, созданных Вами, на другие сервера. Эти инструкции подходят для систем Solaris 2.5. Если Вы используете другую версию ОС, процесс защиты может отличаться.

    5.2) Установка операционной системы

    Начните с последней версии Solaris 2.X. Каждая версия Solaris-а делается более защищенной, чем предыдущая.

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

    При установке Solaris, минимальная версия OS, которую Вы можете выбрать - кластер установки Core SPARC. Фактически, даже этот кластер имеет слишком много лишних свойств. Этот кластер - то, что Вы должны сначала установить на своей станции. После того, как Вы выбрали Core SPARC в меню установки, выберите Customize и добавьте Terminal Information пакет, который обеспечивает поддержу виртуальных терминалов, таких как xterm.

    Одно из преимуществ установки Core SPARC состоит в том, что требуется намного меньше дискового пространства чем при остальных типах установки. Следующая таблица разделов соответствует машинам, с загруженным кластером Core SPARC:

    s0:	/	 	256 megabytess1:	swap		256 megabytes
    s2:	overlap
    s3:
    s4:	
    s5:	
    s6:	/local		??? megabytes (rest of the drive)
    s7:
    
    

    /var достаточно большой, чтобы хранить логи и информацию аудитинга. Swap подходит для Вашего оборудования, но дополнительное место в нем, позволит избежать атак типа "denial of service" (отказ в обслуживании).

    Теперь, используя другой компьютер зайдите по FTP сюда: sunsolve.sun.com/pub/patches и заберите "рекомендованные" обновления и заплатки для Solaris 2.x (2.X_Recommended.tar.Z). Запишите этот пакет на ленту, вставьие ее в "защищаемый" сервер и установите заплатки. Некоторые заплаты не будут установленны, так как программное обеспечение, которое они заменяют, не включено в кластер Core SPARC.

    5.3) Изменение настроек

    При работе с Solaris-ом, Вы управляете порядком запуска программ при начальной загрузке, добавляя и удаляя файлы /etc/rc[S0-3].d (файлы в /etc/rc[S0-3].d являются ничем иным, как ссылками на файлы в /etc/init.d). Многие из этих скриптов запуска выполняют процессы, которые Вам абсолютно не нужны. Например, сервер NFS.

    Займитесь удалением всех посторонних файлов запуска из /etc/rc2.d. Мы советуем Вам удалить всё из /etc/init.d, за исключением следующих файлов:

    K15rrcd         S05RMTMPFILES   K15solved       S20sysetup
    S72inetsvc      S99audit        S21perf         
    S99dtlogin      K25snmpd        S30sysid.net    S99netconfig
    K50pop3         S74syslog       S75cron         S92rtvc-config 
    K60nfs.server   K65nfs.client   S69inet                     
    K92volmgt       README          S95SUNWmd.sync
    S01MOUNTFSYS    S71sysid.sys    S88utmpd        S95rrcd
    
    

    Этот список будет больше или меньше, в зависимости от того, имеете лы Вы графическую плату в машине, используете ли Solstice DiskSuite, и так далее. Удалите эти файлы и в /etc/rc3.d

    Для Solaris 2.4, отредактируйте /etc/init.d/inetinit и добавьте следующие строки ближе к концу файла:

    ndd -set /dev/ip ip_forward_directed_broadcasts 0ndd -set /dev/ip ip_forward_src_routed 0
    ndd -set /dev/ip ip_forwarding 0
    
    

    Эти строки выключают свойство, называемое IP forwarding. Практически каждая машина, которая использует работу с сетями, основанными на IP, способна действовать как маршрутизатор. Это означает, что нехорошие товарищи могут перенаправить пакеты через вашу машину во внутренюю сеть или на другие защищенные сервера, которые "доверяют" Вашему! Отключите это свойтсво и спите спокойно.

    Так же, установите переменную ядра "ip_strict_dst_multihoming": ndd -set /dev/ip ip_strict_dst_multihoming 1

    Тогда Solaris будет просто выбрасывать пакеты, которые пришли с одного интерфейса, но предназначены для другого. Это предотвратит атаку типа "host spoofing".

    * Для Solaris 2.5, создав файл /etc/notrouter, Вы выключите пересылку IP-пакетов.Для обратного включения маршрутизации просто удалите /etc/notrouter и перегрузите сервер. Важно обратить внимание на то, что между тем, как Вы создали файл и фактическим запрещением маршрутизации остается немного времени, в течении которого, система может пересылать пакеты.

    Для Solaris 2.4, добавьте новый скрипт, с названием /etc/init.d/tmpfix:

    #!/bin/sh#ident  "@(#)tmpfix 1.0    95/08/14"
     
    if [ -d /tmp ]
    then
    	/usr/bin/chmod 1777 /tmp
    	/usr/bin/chgrp sys /tmp
    	/usr/bin/chown root /tmp
    
    

    и затем выполните: ln /etc/init.d/tmpfix /etc/rc2.d/S79tmpfix. Таким образом, этот скрипт будет запускаться при загрузке. Он предотвращает атаки, которые могут позволить хакеру получить права администратора на сервере. Для Solaris 2.5 этот скрипт не нужен. (См. "Re-tooling" SunWorld Октябрь 1995.)

    Хороший совет от Каспера Дика. Удостоверьтесь что все скрипты запуска, выполняются с соответствующими значениями umask, чтобы файлы, которые они создают, не были доступны на запись группе или всем подряд. Вот самый легкий метод сделать это:

         umask 022  # make sure umask.sh gets created with the proper mode     echo "umask 022" > /etc/init.d/umask.sh
         for d in /etc/rc?.d
         do
             ln /etc/init.d/umask.sh $d/S00umask.sh
         done
    
    
    

    Обратите внимание: расширение ".sh", после имени скрипта, важно. Если Вы не определите это расширение, то скрипт будет выполнен в т.н. "sub-shell" (вторичная оболочка), а не в основной оболочке, которая выполняет все другие скрипты.

    Удалите /etc/auto_*. Удаление /etc/init.d/autofs должно предотвратить авто-монтирование при загрузке и нет смысла сохранять эти файлы.

    Удалите /etc/dfs/dfstab. И еще раз: очистка /etc/init.d должна предотвратить запуск NFS-сервера на машине, но все же лучше удалить и dfstab.

    Удалите файлы crontab. Вы должны удалить все файлы из директории/var/spool/cron/crontabs, кроме файла root.

    Используйте статическую маршрутизацию. Создайте файл /etc/defaultrouter вместо того, чтобы полагаться на информацию от routed (который может быть обманут хакером). Если Вам необходимо использовать различные маршрутизаторы, лучше запускайте /usr/bin/route из /etc/init.d/inetinit, а не routed.

    Когда Вы закончили - перегрузите машину. Всегда проверяйте изменения файла начальной загрузки. Когда машина загрузится, просмотрите загруженные процессы ps -ef. Экран должен выглядеть примерно так:

         UID   PID  PPID  C    STIME TTY      TIME COMD    root     0     0 55   Mar 04 ?        0:01 sched
        root     1     0 80   Mar 04 ?       22:44 /etc/init -
        root     2     0 80   Mar 04 ?        0:01 pageout
        root     3     0 80   Mar 04 ?       33:18 fsflush
        root  9104     1 17   Mar 13 console  0:00 /usr/lib/saf/ttymon -g -h -p myhost console login:  -T sun -d /dev/console -l co
        root    92     1 80   Mar 04 ?        5:15 /usr/sbin/inetd -s
        root   104     1 80   Mar 04 ?       21:53 /usr/sbin/syslogd
        root   114     1 80   Mar 04 ?        0:11 /usr/sbin/cron
        root   134     1 80   Mar 04 ?        0:01 /usr/lib/utmpd
        root   198     1 25   Mar 04 ?        0:00 /usr/lib/saf/sac -t 300
        root   201   198 33   Mar 04 ?        0:00 /usr/lib/saf/ttymon
        root  6915  6844  8 13:03:32 console  0:00 ps -ef
        root  6844  6842 39 13:02:04 console  0:00 -sh
    
    

    Заметьте, что сервис /usr/lib/sendmail не загружен - это специальное свойство. Процессы, которым понадобится послать почту из системы могут и будут вызывать sendmail непосредственно (возможно, через некоторую другую программу, типа mailx). Но Вы не должны запускать сервис sendmail, который "вешается" на 25-й порт и обеспечивает немедленную доставку почты. Вам нужно добавить в crontab файл пользователя root следующую строку:

    0 * * * * /usr/lib/sendmail -q > /var/adm/sendmail.log 2>&1
    

    Эта строка будет вызывать sendmail каждый час, для того, чтобы он обработал всю очередь писем, ждущих его.

    5.4) Установка программного обеспечения других производителей
    Вам понадобятся следующие три программы, для того, чтобы защитить сервер и для того, чтобы им управлять без опасений за перехват Вашего пароля. Из-за того, что на защищенном сервере не должно быть никакого компилятора, Вам необходимо скомпилировать эти программы на каком-либо другом копьютере, после чего, перенести их на Ваш сервер.

    Первый программный пакет это TCP Wrappers, написанный Витсом Венемой. Из исходного кода необходимо скомпилировать маленький бинарник, называющийся tcpd. Он может использоваться для контролирования доступа к различным службам (наподобие telnet и ftp). tcpd запускается из /etc/inetd.conf. Контроль доступа может быть реализован по IP-адресу, доменному имени и по различным другим параметрам. tcpd может оповестить Вас о различных ситуациях (например, о неавторизованных соединениях) с помощью syslog-а или электронной почты.

    Затем, сконфигурируйте S/Key для удаленного защищенного доступа. См Q5.6 о подробностях конфигурирования S/Key.

    Если Вы планируете разрешить ftp-доступ на Ваш защищенный сервер (все равно, для публичного или административного доступа), Вы должны получить копию WU-Archive ftp-сервиса. Необходимо взять версию 2.4 или больше, так как предыдущие версии имеют дыры в защите. Если Вы собираетесь использовать ftp для административного доступа, (а не только для anonymous ftp), Вы должны добавить поддержку S/Key в бинарник ftp-сервера. На Crimelabs S/Key distribution, Вы найдете файл skey/misc/ftpd.c, который покажет Вам, как сделать поддержку S/Key для предыдущей версии ftp. Вы должны сделать изменения в своей версии, по их образу и подобию. Так же можете почитать wu-ftp FAQ

    Скомпилируйте и установите пакеты (tcpd, wu-ftpd, и keyinit, keysu, keysh из S/Key) в/usr/local/bin. При компилировании wu-ftpd, Вы должны указать каталоги для конфигурации и для логов: мы рекомендуем Вам установить конфигурационную директорию в /etc и файлы записи событий в /var (так как они имеют обыкновение быстро расти). См Q5.7 с более точными инструкциями по конфигурированию wu-ftp.

    Используйте /noshell для всех пользователей, которые не должны "входить" в систему. Эта неработающая оболочка запрещает вход пользователя. Ура, товарищи! Теперь-то хакеры никогда не смогут получить доступ через этих пользователей! :)

    5.5) Ограничение доступа к системе

    Когда Ваша машина наконец будет подкючена в сеть, наверно, Вы захотите использовать telnet и ftp для доступа к ней. Заметьте, что для того, чтобы сделать машину более защищенной, Вы не должны разрешать эти сервисы. Это значит, что Вы сможете зарегистрироваться на сервере только с консоли и переносить файлы на ленте или дискете.

    Сервисы telnet и ftp запускаются процессом inetd. Его конфигурационный файл /etc/inet/inetd.confсодержит много других сервисов, кроме telnet и ftp. Лучше, просто удалите это файл и создайте новый, содержащий только следующие строки:

    ftp stream tcp nowait root /usr/local/bin/tcpd /usr/local/bin/wu-ftpdtelnet stream tcp nowait root /usr/local/bin/tcpd /usr/sbin/in.telnetd
    
    

    Заметьте, что мы уже используем tcpd для контролирования доступа к обоим сервисам и используем wu-ftpd вместо простого ftp-сервера, который поставляется с Solaris-ом. Если Вы не хотите разрешать доступ посредством telnet-а или ftp в Вашу систему, просто удалите подходящую строку из inetd.conf или удалите этот файл, после чего, процесс inetd просто не будет запускаться при загрузке системы.

    Управление доступом для tcpd осуществляется с использованием файлов /etc/hosts.allow и /etc/hosts.deny. tcpd просматривает сначала hosts.allow, следовательно, Вы можете разрешить нескольким компьютерам подсоединияться к сервисам telnet или ftp и затем запретить всем остальным доступ, в файле hosts.deny (часто это называют политикой "запрещено все, что не разрешено"). Ниже идет пример файла hosts.allow:

    ALL: 172.16.3.0/255.255.255.0
    

    Этот пример разрешает всем пользователям сети 172.16.3.0 получить доступ ко всем сервисам (telnet и ftp) на Вашей машине. Эти пользователи все равно должны предоставить необходимый пароль или S/Key (см ниже). В файле hosts.allow всегда используйте именно IP-адрессацию, так как доменные имена могут быть подделанны (если Вы используете DNS через Internet или другие сервисы имен, такие как NIS).

    Теперь, мы хотим запретить доступ всем остальным пользователям. Включите следующую строку в файл /etc/hosts.deny:

    ALL: ALL: /usr/bin/mailx -s "%d: connection attempt from %c" root@mydomain.com
    

    Такая установка не только запретит использование всех ресурсов со всех остальных компьютеров, но и заставит tcpd просигнализировать Вам посредством электронной почты, что кто-то пытается получить доступ на сервере. Вместо root@mydomain.com, подставьте e-mail адрес того, кто читает почту регулярно.

    Теперь, необходимо заставить tcpd записывать все попытки доступа через syslog. Вставьте следующие строки в файл /etc/syslog.conf:

    auth.auth.notice;auth.info           /var/log/authlog
    

    Пробел в строке необходимо делать именно табуляцией, иначе syslog не сможет правильно проанализировать файл и регистрации никакой не получится. Кстати, средство регистрации это конфигурируемый параметр при компилировании tcpd, но все равно рекуомендуется использовать AUTH, а не средства LOCAL*.

  • Другие файлы в /etc/init.d: Каспер повторяет, что выбор скриптов, которые нужно удалить из /etc/init.d сильно зависит, от той версии Solaris-а, которую Вы используете. Список файлов, предоставленный выше, был предоставленн для Solaris 2.4. Поэтому, желательно знать, что Вы делаете, при конфигурации систем Solaris 2.5

  • Sendmail: Вместо того, чтобы вызывать sendmail из cron-а, Вы можете также вызывать программу без параметров -bd. Это заставит ее быть только в ожидающем очередь режиме. Мы советуем не запускать лишний сервис, чтобы не заботится об еще одном работающем участке кода, но Вы можете поступить по своему.

  • /etc/syslog.conf: Мы допустили ошибку в командах для конфигурирования /etc/syslog.conf для tcpd. Правильная строка выглядит так

    auth.info		/var/log/authlog
    

    Эта управляющая команда позволит регистрировать все события авторизации в файл /var/log/authlog. Не забудьте, что пустое место это табуляция.

    5.6) Конфигурирование системы S/Key

    Вам понадобится пакет S/Key, для удаленного и защищенного доступа в систему (часть пакета logdaemon). S/Key, это механизм одноразового пароля. Вместо того, чтобы печатать свой пароль и посылать его через всю сеть, S/Key пошлет Вам "challenge"-строку, и Вы вычислите ответ на вашем локальном компьютере, используя эту строку и свой пароль. Если Вы пошлете соответствующий ответ, то S/Key даст Вам доступ к серверу, но ответ, который Вы послали, никогда больше не будет верным для получения доступа к машине. Это означает, что, если кто-то использует перехватчик пакетов, они не смогут использовать ваш ответ, для того, чтобы взломать сервер. S/Key также включен в команду su, которая использует медод запрос/ответ для того, чтобы дать защищенный доступ администратору сети.

    Чтобы начинать использовать S/Key, создайте пользователя, который использует /usr/local/bin/keysh как оболочку для входа в систему. Вы войдете в систему под этим пользователем с некоторым паролем, многократного использования и затем, keysh спросит у Вас ответ на S/Key-вызов, перед тем, как предоставить Вам нормальную оболочку.

    Вы должны добавить

    access:x:100:100:Access Account:/tmp:/usr/local/bin/keysh
    

    в конец файла /etc/passwd и

    access:NP:6445::::::
    

    в конец файла /etc/shadow. Затем, используйте команду passwd access, для того, чтобы установить пароль пользователю access. Пароль, который Вы введете, не обязательно делать слишком заумным, так как Вы будете полагаться на keysh, для обеспечения защиты этого пользователя.

    Так как /usr/local/bin/keysh не является стандартным, Вам придетсясоздать файл /etc/shells со следующими строками:

    /sbin/sh/usr/local/bin/keysh
    
    
    

    Только те пользователи, чья оболочка для входа в систему прописана в этом файле, смогут получить доступ к машине.

    Теперь, создайте файл /etc/skeykeys и поставьте на него права 600 пользователю root:

    touch /etc/skeykeyschmod 600 /etc/skeykeys
    chown root /etc/skeykeys
    chgrp root /etc/skeykeys
    
    

    Используйте команду keyinit access, чтобы инициалиализировать S/Key для пользователя access. Теперь, Вы закончили установку пакета S/Key для этого пользователя.

    Сейчас можно позволить пользователю access использовть команду keysu, чтобы стать администратором. Сначала измените строку для группы root в файле /etc/group:

    root::0:root,access
    

    Только те пользователи, которые содержатся в этой строке, могут стать администраторами используя keysu. Теперь, Вы должны запустить keyinit root, чтобы инициализировать S/Key для администратора. Мы рекомендуем использовать другой пароль, нежели был у пользователя access.

    С этого момента, Вы можете удалить /bin/su, чтобы пользователи были вынуждены использовать keysu. К сожалению, много различных скриптов используют /bin/su, чтобы запустить процессы, не требующие полного доступа. В таком случае, выполните chmod 500 /bin/su, чтобы только администратор мог запускать эту программу.

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

    5.7) Конфигурирование сервиса wu-ftp

    Конфигурирование wu-ftpd довольно сложная задача, даже для экспертов. Когда Вы компилировали wu-ftpd, Вы должны были определить каталог, где програма будет искать файлы конфигурации. Этот каталог будет содержать директорию pid и три файла. ftpconversions должен быть пустым, но должен существовать. ftpusers должен содержать список пользователей, которым НЕ разрешен доступ в систему посредством ftp. Пользователь root обязательно должен быть в этом списке! Файл должен содержать всех пользователей из файла /etc/passwd - позднее мы добавим пользователя, которому разрешен доступ по ftp.

    Последний файл в каталоге конфигураций - ftpaccess. Вместо того, чтобы полностью его расписывать, приведем пример, который нужно использовать, если Вы не хотите давать анонимный доступ по ftp в вашу систему, но хотите, чтобы некоторые пользователи могли записывать свои файлы на сервер.

    class users real 172.16.3.* 
    log commands real
    log transfers real inbound,outbound
    
    

    Таким образом, мы позволяем пользователям зайти по ftp с любого компьютера сети 172.16.3.0 и ниоткуда больше (это уже не обязательно, так как Вы уже используете tcpd, но эшелонированная оборона никогда не помешает). Все команды и передачи файлов будут записаны в файле, который Вы определили при компиляции программы (как мы рекомендовали, он должен быть в каталоге /var).

    Конфигурирование анонимного ftp-доступа выходит за рамки данного справочника, но будьте очень осторожны,так как слишком просто сделать ошибку и отдать доступ всем подряд в вашу систему. Перечитайте документацию, которая поставлялась вместе с wu-ftpd и просмотрите другие докуметы, в которых даются рекомендации по установке анонимного ftp.

    5.8) Ограничение доступа к файлам и файловым системам

    Загрузите и измените переустановленные права. Программа в этом пакете убирает все небезопасные права группам на некоторые каталоги. Этот скрипт был переделан для запуска на системах Solaris 2.5.

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

    Используйте параметр nosuid в файле /etc/vfstab для того, чтобы предотвратить возможность выполнения на некоторых томах UFS вашей системы:

    /proc           	-       /proc      proc    -   no   -fd              	-       /dev/fd    fd      -   no   -
    swap            	-       /tmp       tmpfs   -   yes  -
    /dev/dsk/c0t3d0s1       -       -          swap    -   no   -
     
    /dev/dsk/c0t3d0s0 /dev/rdsk/c0t3d0s0  /       ufs  1   no   remount,nosuid
    /dev/dsk/c0t3d0s4 /dev/rdsk/c0t3d0s4  /usr    ufs  1   no   ro
    /dev/dsk/c0t3d0s5 /dev/rdsk/c0t3d0s5  /var    ufs  1   no   nosuid
    /dev/dsk/c0t3d0s6 /dev/rdsk/c0t3d0s6  /local  ufs  2   yes  nosuid
    
    

    Обратите внимание, что /usr содержит некоторые setuid-программы (еще и те, которые принадлежат S/Key в /usr/local/bin), так что мы монтируем этот том только для чтения вместо nosuid. Корневая файловая система монтируется при загрузке boot-PROM'ом, так что она должна быть перемонтирована повторно установки параметра nosuid.

    Вы не должны применить директиву nosuid к специальным файловым системам. Обратите внимание, что тип файловых систем TMPFS (как для /tmp) - автоматически устанавливается как nosuid в последних версиях Solaris.

    5.9) Проверка конфигурации

    Перезагрузите вашу систему, в последний раз и подключите ее в сеть. Проверьте, что следующие пункты выполнены:

    • Вы можете зайти через telnet и ftp на ваш сервер с тех компьютеров, которые перечислены в конфигурации tcpd.

    • Попытка обращения к серверу с любой другой машины, должна завершиться отказом в доступе и посылкой уведомления по электронной почте по соответствующему адресу.

    • Вы должны суметь войти в систему через telnet и ftp как пользователь access, но не как root или любой другой пользователь.

    • Пользователь access способен запустить /usr/local/bin/keysu, чтобы стать администратором.

    • ps -ef должна выдать очень маленькое количество процессов; в частности, sendmail и процессы NFS не должны быть запущены.

    • touch /usr/FOO не должна сработать с появлением об ошибке: "the filesystem is read-only".

    • Как пользователь root, скопируйте программу ps в корневой каталог / и удостоверьтесь, что на ней установлен бит setuid. Вам должно быть оказано в доступе, при попытке выполнить /ps -ef. После чего, удалите /ps.

    Поздравляем! Теперь Ваш сервер надежно защищен!

    5.10) Дополнительные предложения


    Имеется ряд свободно доступных замен для общих системных программ, которые защищены значительно лучше, чем версии, поставляемые с системой Solaris. Рассмотрите замену sendmail-а последней версией. Замените библиотеку bind. Замените syslog и crontab (проверьте свой локальный Archie-сервер).

    Ваши файлы записи событий могут оказаться бесполезными если на сервере стоит неправильное время.Рассмотрите выполнение службы XNTP, чтобы часы системы были всегда в норме и синхронизовывались с точными источниками из Internet и с другими машинами вашей сети. Если кто-то взломал Вашу сеть, то Вам придется побегать по всем файлам регстрации событий по всей сети, в таком случае, очень желательно, чтобы на всех машинах время шло синхронно.

    Прежде чем ваша система начнет свою жизнь в сети, загрузите tripwire и сделайте базу данных MD5 контрольных сумм для всех файлов сервера. Поместите эту базу данных на сменные устройства (лента или гибкий диск) так, чтобы никто, даже вломившись на Ваш сервер, не смог изменить эти данные. Иногда выполняйте tripwire, для полной уверенности, что никто не подменил Ваши файлы.

    Рассмотрите сбор информации о запускаемых процессах, чтобы иметь запись всех выполняемых порграмм. Эффективность Вашей системы может понизиться (от 10 до 20 %) в том случае, если Вы включите этот учет процессов. См. man acct для получения дополнительной информации.

    Регулярно изменяйте ваши S/Key-ключи (каждые 30 дней, если Вы сможете выдержать это) и выбирайте хорошие пароли (использоуйте не алфавитно-цифровые символы и длинные слова). Изменяйте эти ключи с консоли или используйте keyinit -s, для изменения их через сеть. Не используйте одинаковые пароли для обоих пользователей root и account.

    6) Благодарности

    Следующие люди внесли свой вклад в содержание этого FAQ-а:

    • Casper Dik (везде)
    • Hal Pomeranz (в основном раздел 5)
    • Michele Crabb (разделы 1 и 2)
    • Dan Stromberg (информация о программах проверки паролей)
    • Darren J Moffat (Дополнения по Solaris 2.6 и 7)
    • Jan Koum (Q 2.30)

    Об авторе
    Питер Баер Гальвин - Главный Технолог в Corporate Technologies, системный интегратор, а так же VAR. Перед этим, Питер был Системным Администратором в Отделе Информатизации Университета Brown. Он писал статьи для журналов Byte и некоторых других. Так же перед этим писал статьи в секции "Pete's Wicked World", электронного журнала SunWorld. Питер - соавтор книги Operating Systems Concepts. Как консультант и преподаватель, Питер создал учебники по защите и системному администрированию, а так же выступал на многих конференциях. Вы можете связяться с ним по адресу peter.galvin@sunworld.com.



  • Партнёры и спонсоры проекта:

    Все материалы сайта распространяются по лицензии GNU/GPL
    © ProUNIX 2003-2009, UnixLib 2005-2009, SoftLib 2006-2009.