Укрепление (hardening) сервера
9.4.3 Запрет внешней службы inetd
Служба inetd – это "суперсервер Интернета" в UNIX. В основном это процесс-демон6Процесс-демон – это такой процесс, который постоянно находится в оперативной памяти компьютера и работает в фоновом режиме, без вывода в консоль. Аналоги – службы в Windows или резидентные программы в DOS., который вызывается во время загрузки системы и который читает текстовый конфигурационный файл, находящийся обычно в /etc/inetd.conf.
Служба inetd слушает входящие соединения по предопределенным IP-портам. Когда соединение по заданному порту установлено, она вызывает заранее настроенную программу для обработки запроса. После того как соединение завершилось, процесс вызывает службу, которая обрабатывает запрос. Первоначальная причина для создания данной службы состояла в том, чтобы уменьшить нагрузку и ресурсы, требуемые для ИТ-системы.
Через inetd запускается целый набор служб, и почти все из них следует запретить, как часть должным образом укрепленного сервера. Помимо стандартно-запрещаемых FTP, TFTP, Telnet и команд Berkley r*, также следует запретить и следующее.
Служба in.named. Это демон служб разрешения имен BIND. Помимо серверов, которые специально определяются в качестве DNS-серверов организации, DNS не следует запускать на укрепленном сервере UNIX.
Служба in.fingerd. Это демон программы finger, которую можно использовать для отображения информации о пользователе и для вывода списка пользователей, в данный момент находящихся в системе. На должным образом укрепленном сервере UNIX нет причин для афиширования подобной информации, которая могла бы оказаться полезной для предполагаемых взломщиков.
Служба daytime. Эта служба выводит дату и время в системе в строковом формате. Не позволяйте возможным взломщикам получить дату и время системы, так как они могут воспользоваться этими данными для реализации повторяющихся атак.
Служба time. Это служба, которая возвращает время в виде 32-битового значения, представляющего количество секунд, прошедших после полуночи 1 января 1900 г. Не позволяйте возможным взломщикам получить точное системное время.
Служба echo. Это диагностическая служба, которая отражает входящие данные обратно к подсоединившийся машине. Не позволяйте возможным взломщикам получить информацию о системах, которые отвечают на подобные запросы.
Служба discard. Это диагностическая служба, которая не отражает входящий поток данных обратно к подсоединившейся машине (таким образом, просто избавляясь от них). Не позволяйте возможным взломщикам посылать информацию в "черную дыру".
Служба chargen. Это диагностическая служба, которая автоматически генерирует поток символов для отправки к подсоединившейся машине. Не позволяйте возможным взломщикам получить машину для генерации потока данных, который будет отослан другой машине в пределах или за пределами сети организации.
Служба systat. Эта служба предоставляет список всех процессов и их статусов. Не позволяйте возможным взломщикам получать такую жизненно важную информацию.
Служба netstat. Эта служба предоставляет список всех текущих сетевых подключений и их статусов. Не позволяйте возможным взломщикам получать такую жизненно важную информацию.
Этот список ни в коем случае не является исчерпывающим. Для определения, какие службы могут быть установлены, что открывает уязвимые точки входа и методы для доступа к серверу и внутри сервера UNIX, следует провести надлежащее рассмотрение устанавливаемой системы UNIX.
9.4.4 Установка и настройка tcp_wrappers
Мы рекомендуем на укрепляемый сервер UNIX установить tcp_wrappers (созданные Wietse Venema), которые позволят вам задать контроль доступа к различным службам по ограниченному набору критериев, таких, как, например, имя пользователя, IP-адрес или домен DNS. Они невелики и чрезвычайно полезны на внутренних серверах, не только на внешних боксах, которые могут быть настроены как брандмауэры, серверы DMZ или прокси-серверы (не важно, основные ли они или резервные). Так вот, они по умолчанию устанавливаются и конфигурируются большинством дистрибутивов GNU/Linux и релизов BSD. Для тех же систем UNIX, в которых tcp_wrappers по умолчанию не установлены, исходники можно найти по следующему URL (затем их можно откомпилировать и полученные исполняемые модули установить на сервер):
ftp://ftp.porcupine.org/pub/security/index.html
Причина для установки такого дополнительного компонента в существующую конфигурацию UNIX состоит в том, чтобы избежать единых точек отказа (single points of failure) и обеспечить безопасность по всем уровням. Если один уровень взломан или обойден, другие уровни будут стоять на страже перед взломом.
Полезно помнить, что большинство пробоев информационной безопасности, случайных или преднамеренных, происходит изнутри. Внимание прессы же привлекают только внешние взломы, массивные распределенные атаки вида отказа от обслуживания (DDoS, Distributed Denial of Service), горячие вирусы/"черви"/"трояны" и украденные базы данных кредитных карт.
Добавочный компонент tcp_wrappers имеет два основных файла, которые разрешают доступ к индивидуально определенным службам. Два нижеприведенных файла проверяются на правила, определяющие доступ к индивидуальным или заданным по шаблону службам.
/etc/hosts.allow /etc/hosts.deny
Как и в большинстве машин, осуществляющих фильтрацию tcp/ip-запросов (таких, как брандмауэры или серверы, доступ к которым сильно ограничен), доступ предоставляется или запрещается на основании первого же совпадающего правила.
Правила проверяются в следующем порядке: сначала в hosts.allow, затем в hosts.deny. Будьте осторожны в использовании шаблонов KNOWN или UNKNOWN. ALL всегда будет совпадать, какие бы критерии ни тестировались. За дальнейшими подробностями по синтаксису и по написанию правил обращайтесь к man-странице7В системах UNIX и GNU/Linux документация, как правило, поставляется в виде так называемых man-страниц (man pages), которые вызываются из командной строки командой man [параметры] "имя запрашиваемой команды/процедуры/файла/службы/темы". Например, man hosts_access или man bash. hosts_access, идущей в комплекте с tcp_wrappers.
9.4.5 Сжатие опций по умолчанию программы sendmail
Sendmail идет едва ли не с каждой установкой UNIX (включяя GNU/Linux) как агент по умолчанию для пересылки почты (Mail Transfer Agent, MTA). В результате такого широкого распространения по приблизительным оценкам оказалось, что sendmail обрабатывает подавляющее большинство почты в Интернете. А поскольку он запускается как suid root8Атрибут (бит) прав доступа suid (set-UID) позволяет программам запускаться от имени и с правами пользователя-владельца программы (т. е. соответствующего исполняемого файла), а не того пользователя, который запустил программу (как происходит обычно). Например, "suid root" обозначает, что программа принадлежит пользователю root и обычный пользователь исполняет ее с правами root., взлом sendmail влияет на миллионы машин.
Последняя версия sendmail поддерживает такие новые возможности, как STARTTLS и шифрование SMTP AUTH. Если в комплект с устанавливаемой операционной системой UNIX входит более старая версия sendmail (подразумевается та, которая не поддерживает эти новые возможности), вам следует подумать об обновлении ее на самую последнюю из имеющихся в наличии. По крайней мере убедитесь, что эта версия не старее версии 8.9.3 из-за хорошо известных "дыр" безопасности.
Чтобы разрешить Realtime Blackhole List (черный список реального времени), который помимо прочего защитит систему и пользователей от спама, в файл sendmail.mc следует вписать следующее:
FEATURE(rbl)dnl
Кроме того, в самом sendmail рекомендуется запретить команды SMTP VRFY и EXPN. Эти команды зачастую используются взломщиками для сбора информации о сервере. Запретите их при помощи следующего:
define('confPRIVACY_FLAGS', 'novrfy,noexpn')dnl
Есть несколько дополнительных флагов, которые вы можете установить, чтобы заставить sendmail вести себя более безопасным образом:
- authwarnings: при определенных условиях в сообщения следует добавлять заголовок X-Authentication-Warning, что может сообщить почтовой системе о попытках обмана;
- needmailhelo: требует от сайта-отправителя при начале соединения для отправки почты сначала использовать команду SMTP HELO ;
- needexpnhelo: требует от сайта-отправителя использовать команду SMTP HELO до разрешения какого бы то ни было применения EXPN;
- needvrfyhelo: требует от сайта-отправителя использовать команду SMTP HELO до разрешения какого бы то ни было применения VRFY;
- noreceipts: запрещает уведомления о статусе доставки (Delivery Status Notifications, DSNs) и чтение подтверждений;
- goaway: устанавливает все флаги, кроме restrictmailq и restrictqrun ;
- restrictmailq: не дает возможности пользователям употреблять команду mailq для просмотра содержимого почтовой очереди;
- restrictqrun: удерживает пользователей от обработки очереди.
Верно также, что при запущенном сервере Domino поверх операционной системы UNIX или GNU/Linux можно также sendmail отключить вообще и больше не забивать себе голову данным вопросом9Если вы используете в качестве почтового (SMTP) сервера Domino, то вам необходимо отключить службу sendmail, так как она применяет тот же стандартный порт 25..
9.4.6 Задачи, характерные для Linux
В мире существует много дистрибутивов GNU/Linux. Самый маленький из них так мал, что полностью помещается на флоппи-диске 1.44 Мб (и называется Minix). У каждого производителя имеется свой собственный процесс установки, который обычно еще и изменяется от версии к версии дистрибутива данного производителя.
Среди дистрибутивов GNU/Linux лидерами являются Red Hat, SUSE, TurboLinux, Mandrake, Caldera, Slackware и Debian. Хотя основная идея состоит в том, что следует использовать такой дистрибутив GNU/Linux, который поддерживается Domino, многие серверы могут использовать вообще другие дистрибутивы. Это происходит потому, что большое количество дистрибутивов позволяет производителям подгонять свои дистрибутивы GNU/Linux под специфические задачи, такие, как встроенные системы, маршрутизаторы и брандмауэры. Внимательно ознакомьтесь с доступными дистрибутивами и определите, который из них наилучшим образом подходит для нужд организации, исходя из того места, где должен быть размещен сервер, и его роли в общей ИТ-инфраструктуре организации.
В свете вышесказанного из наиболее распространенных дистрибутивов особо выделяются двое, но по разным причинам.
Red Hat. Данный дистрибутив обладает самым признаваемым именем и, как правило, первым получает любой вид корпоративной поддержки в плане коммерческого программного обеспечения или коммерческой технической службы. Многие производители, включая Oracle, IBM и Check Point, сделали релизы своих продуктов под дистрибутивы Red Hat. Это не означает, что данные программные релизы не будут работать под другими дистрибутивами GNU/Linux, но в случае каких-либо проблем производитель может не оказать поддержки вашей установке своего продукта на дистрибутиве, отличном от Red Hat.
Debian. Этот дистрибутив тоже заслуживает упоминания. Прежде всего не потому, что он полностью бесплатен, а потому, что он поддерживается некоммерческой организацией, созданной исключительно из добровольцев. Эти добровольцы очень сильно мотивированы качеством и гордятся своими усилиями сделать Debian самым стабильным и полностью на все 100 % бесплатным дистрибутивом изо всех имеющихся в наличии. Debian зарекомендовал себя как в высшей степени стабильный и легкий в управлении и удаленном обновлении. Процесс обновления общепризнанно является самым легким среди всех дистрибутивов GNU/Linux. Установки Debian можно обновлять без необходимости перезагрузки, замещая любой из установленных пакетов и затем перезапуская его процесс, за исключением ядра ОС. Кроме того, пакетная система Debian и его пользовательские интерфейсы обеспечивают очень подробный контроль относительно того, какие пакеты, утилиты, библиотеки и файлы есть в вашей системе. Также в настоящий момент Debian поддерживает шесть различных архитектур и включает в себя более 3 900 пакетов программного обеспечения, которые можно выбрать при установке.
Другие достойные упоминания дистрибутивы – это SUSE, являющиеся самыми предпочитаемыми в Германии и предлагающие действительно хороший инструмент для установки, называемый YAST2, который делает процесс установки дистрибутива невероятно легким. В списке поддерживаемых дистрибутивов GNU/Linux, на которых будет запускаться сервер Domino, находятся также TurboLinux и Caldera.
Для всех дистрибутивов GNU/Linux, в которых имеется программа установки, следует выбирать установку компонентов вручную по выбору пользователя (Custom Installation) и устанавливать только те конкретные пакеты, которые требуются для установки сервера. Кроме как для удобства использования, нет никакой необходимости устанавливать пакеты для разработчиков, какие бы то ни было новые настольные системы KDE или GNOME, и определенно не X Windows (особенно в сочетании с Domino, поскольку Domino работает на сервере через консоль). К сожалению, ни один из вышеупомянутых дистрибутивов не предлагает такого варианта установки, как минимальный по объему защищенный сервер. Поэтому приходится укреплять сервер вручную.
Во время процесса установки обязательно следует выбрать поддержку файла теневых паролей (enable shadow password); также вместо стандартной функции crypt для паролей следует выбрать хеширование MD5. Если данные опции недоступны во время установки, их можно изменить после нее. В Red Hat следует использовать утилиту setup. В Debian для разрешения или запрещения теневых паролей – утилиту shadowconfig. В других дистрибутивах GNU/Linux о подробностях по данному вопросу смотрите man-страницы. Для разрешения хеширования MD5 и включения хешей md5 в строки паролей следует отредактировать соответствующие файлы в папке /etc/pam.d.
Также следует включить поддержку ipchains, даже если данный сервер в DMZ, так как ipchains добавляет дополнительные уровни защиты и закрывает сервер от трафика, по каким-то причинам миновавшего брандмауэр.
Кроме того, нужно следить за информацией относительно безопасности и списками исправлений/обновлений на сайтах производителей дистрибутивов GNU/Linux. В Debian очень легко автоматически устанавливать обновления системы безопасности с помощью утилиты apt-get. В установках Red Hat, начиная с версии 6.0, для получения обновленных пакетов вашего релиза введена утилита up2date. За информацией о деталях реализации подобных инструментов, если они есть, обращайтесь к сайтам производителей данных дистрибутивов GNU/Linux.
Для тех людей, которые решили устанавливать Red Hat Linux, существует занимающийся вопросами безопасности проект, называемый Bastille Linux, целью которого является не просто укрепить вашу установку Linux, а именно обучить администраторов, как вообще укреплять систему.
Bastille Linux поддерживает дистрибутивы Red Hat и Mandrake Linux10В настоящий момент проектом Bastille Linux поддерживаются следующие дистрибутивы: Red Hat (Fedora Core, Enterprise, Numbered/Classic), SUSE, Debian, Gentoo, Mandrake и HP-UX. Также в стадии бета находится разработка поддержки для Full Mac OS X., и цель данного проекта – сделать дистрибутив, и привкус UNIX в нем, более агностическим. Сам по себе продукт Bastille Linux является набором сценариев, которые задают ряд вопросов и затем дают возможность тому, кто устанавливает дистрибутив (или администратору, это не всегда бывает одно и то же лицо), применить эти модификации к своей системе. Вопросы описывают, что нужно сделать, почему это следует делать и почему делать этого может быть нежелательно. Очень познавательно, особенно для тех администраторов, которые только начинают знакомиться с Linux. Bastille Linux можно найти по следующему URL:
http://www.bastille-linux.org/
Еще один замечательный источник информации для администраторов – "Руководство по безопасности для администраторов Linux". Оно охватывает чрезвычайно широкий спектр тем касательно Linux и безопасности. "Руководство по безопасности для администраторов Linux" может быть найдено по адресу: