СЕРГЕЙ ЯРЕМЧУК, фрилансер. Автор более 800 статей и шести книг. С «СА» с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС
Крепость для пингвина
Сегодня, как никогда, особое внимание уделяется защите серверов и персональных компьютеров от вторжения извне. Описание различных методов атак можно найти практически везде, у нападающего способов пробраться в чужой компьютер немало, да и с желающими также проблем обычно не бывает. Но сисадмину или обычному пользователю от этого не легче, все больше и больше приходится уделять времени чтению документации, настройке системы, но время, как правило, не на стороне обороняющегося, да и опыт приходит вместе с ошибками. Ситуация усугубляется тем, что производители в последнее время выпускают дистрибутивы по типу «два в одном», которые могут быть с одинаковым успехом установлены как на сервер, так и на персональный компьютер, причем, по моему мнению, все равно, для того чтобы привлечь большее количество народа, упор делается все-таки на последний. А пользователю главное – удобство, естественно, оно достигается и путем уменьшения требований к защите. Что делать в таком случае? Не ждать же в самом деле, пока сисадмин будет готов к выходу в Интернет. Можно, конечно, пойти на курсы, может, и научат, но фактор времени остается. Существует множество различных утилит, так или иначе предназначенных для улучшения защиты Linux-системы, в данной статье хочу обратить внимание на проект Bastille Linux, домашняя страница которого находится по адресу: http://www.bastille-linux.org.
Помимо главной задачи – укрепление установленной системы – разработчики Bastille Linux преследовали и другие не менее важные цели:
- всесторонность – все, что описано в открытых источниках по поводу усиления защиты Linux, нашло свою реализацию Bastille Linux. В основу легли разработки Джея Била (Jay Beale) по укреплению Solaris и Linux, нашедших свое отражение в книге института SANS (SysAdmin, Audit, Network, Security) «Securing Linux Step by Step», руководство Курта Сеифриеда (Kurt Seifried) Linux Administrator’s Security Guide Linux (http://www.seifried.org/lasg) и другие источники;
- поучительность – Bastille Linux был разработан также с целью обучить администратора проблемам в защите, включенным в каждую из задач сценария. Каждый необязательный шаг содержит описание включенных проблем безопасности;
- сообщество – после того как были сделаны начальные разработки, было создано сообщество разработчиков, которое совместными усилиями вносило изменение в Bastille.
При помощи программы настройки Bastille Linux с целью улучшения общей безопасности настраиваются демоны, изменяются некоторые системные параметры и firewall. Дополнительно (при необходимости) отключаются ненужные сервисы вроде печати, rcp и rlogin. С ее помощью можно создать среду «chroot jails», при помощи которой можно уменьшить уязвимость некоторых интернет-сервисов вроде Web и DNS. В настоящее время поддерживаются следующие дистрибутивы и системы RedHat, Debian, Mandrake, SuSE и TurboLinux, а также HP-UX и Mac OS X (поддержка последней добавилась совсем недавно).
Установка
При закачке необходимо по ссылке выбрать пакет для используемого дитсрибутива или исходные тексты для предпочитающих устанавливать из исходников. Кроме этого потребуется интерпретатор Perl версии не ниже 5.6.1 и для интерактивного режима потребуются на выбор: для ease-of-use X-Window Perl/Tk версии не ниже 800.23 (версия для RedHat: ftp://ftp.redhat.com/pub/redhat/linux/7.1/en/DMA/CPAN/RPMS/perl-Tk-800.022-11.i386.rpm) и для текстового режима (recommended for high security) Perl/Curses версии 1.06 и выше (ftp://ftp.redhat.com/pub/redhat/linux/7.1/en/DMA/CPAN/RPMS/perl-Curses-1.05-10.i386.rpm).
Для установки при помощи rpm-пакетов необходимо ввести все те же rpm -iv, а при установке из исходников после распаковки архива заходим внутрь образовавшегося каталога и вводим ./Instal.sh. После чего программа скопирует все файлы на свои места и установит необходимые для работы модули Perl. Теперь можно запускать.
Как уже говорил, программа может использоваться двумя способами: в интерактивном режиме и в неинтерактивном. В интерактивном режиме интерфейс пользователя позволяет объяснить системному администратору проблемы в защите и попутно позволяет их решить. Этот подход удобен тем, что, с одной стороны, защищает систему, а с другой – обучает на конкретных примерах. Неинтерактивный режим позволяет использовать уже готовые файлы конфигурации, изготовленные в интерактивном режиме для изменения параметров на других системах, что позволяет избегать повторного прохождения всех этапов, т.к. для того, чтобы спокойно и обдуманно ответить на все вопросы, потребуется отвести приличное время. При этом программа должна быть запущена каждый раз после установки нового ПО или установки патча (для RedHat http://www.redhat.com/apps/support/errata), которые могли повлиять на ослабление защиты. Также могут быть случаи, когда применение Bastille может вызвать побочный эффект, когда блокируются ни в чем не повинные программы, поэтому все-таки перед применением на рабочем компьютере поэкспериментируйте на тестовом.
Запустить программу конфигурации в интерактивном режиме можно двумя способами. Первый состоит в запуске perl-скрипта InteractiveBastile, по умолчанию или с указанием дополнительного аргумента -х, используется Tk-интерфейс, требующий запуска Х-Window, что проверяется установленным значением переменной $DISPLAY. При этом всегда можно вернуться к предыдущему пункту, что позволяет использовать выборочную конфигурацию, для удобства обладающую статус-баром, позволяющим оценить «пройденное расстояние». Если же система используется, например, на роутере и не имеет установленной системы Х-Window, то с заданием ключа -с, bastille будет запущен с текстовым интерфейсом Perl/Curses.
Но этим способом, описанным в инструкции, не всегда удается запустить программу. Поэтому в таком случае можно воспользоваться вторым вариантом, вызов bastille напрямую.
# /usr/sbin/bastille
Ключи для выбора интерфейса в этом случае аналогичны предыдущим.
Иногда программа не может узнать, в каком дистрибутиве она установлена, и начинает ругаться, приводя длинный список «совместимых».
Could not determine operating system version!
Bastille does not work on this OS: unknown
Currently, Bastille works on the following:
DB2.2 DB3.0 RH6.0 RH6.1 RH6.2 RH7.0 RH7.1 RH7.2 RH7.3 RH8.0
RH9 MN6.0 MN6.1 MN7.0 MN7.1 MN7.2 MN8.0 MN8.1 HP-UX11.00
HP-UX11.11 HP-UX11.22 HP-UX11.23 SE7.2 SE7.3 SE8.0 TB7.0
OSX10.2.0 OSX10.2.1 OSX10.2.2 OSX10.2.3 OSX10.2.4
|
Для того чтобы все-таки уговорить ее работать, задаем при помощи ключа –os название дистрибутива, выбрав сокращенное название из приведенного выше списка (только при первом запуске).
# /usr/sbin/bastille –os RH8.0
И в результате появится окно, представленное на рисунках. Выбрав интересуемую категорию, начинаем отвечать на вопросы, в большинстве пунктов ответом будет выбор из двух вариантов – Yes или No, но, например, при вводе диапазонов портов дополнительно активируется внизу экрана полоса «Answer», куда и следует вводить данные. При ответе на вопросы можно использовать кнопку «Explain More/Explain Less» для более или менее подробного объяснения, правда, для некоторых пунктов доступен только один из вариантов подсказок. К сожалению, русификацией Bastille Linux еще никто не занимался, поэтому, чтобы разобраться в вопросах, необходимо знание английского (оптом вопросы можно просмотреть, ознакомившись с файлом Questions.txt). После ответа на все вопросы в последнем пункте сохраняем конфигурацию.
Для неинтерактивного режима первоначально проделываем все вышеописаное, для того чтобы содать необходимые файлы конфигурации, все ответы на вопросы находятся в /etc/Bastille/config. После этого устанавливаем Bastille на каждую машину с такой же самой операционной системой, как и та, в которой он был сделан. И вводим на каждой:
# /usr/sbin/bastille -b
При этом могут возникнуть и ошибки. Чтобы просмотреть информацию об изменяемых параметрах для всех систем разом, введите:
# tail -f /var/log/Bastille/action-log
или вывод ошибок:
# tail -f /var/log/Bastille/error-log
Дополнительно в файл /var/log/Bastille/TODO система заносит оставшиеся действия, которые система не может выполнить автоматически и их пользователь должен выполнить вручную (например, перезагрузка сервисов).
Возврат к предыдущему (до Bastill) состоянию можно осуществить при помощи опции -r (revert) или запуском отдельного скрипта RevertBastille.
# /usr/sbin/bastille -r
При этом удаление самой программы Bastille без выполнения этого действия не приведет к автоматическому откату.
Пользователю придется ответить не на один десяток вопросов, чтобы иметь представление об основных разделах программы. При этом разделы, которые касаются только одной из систем, помечены как HP-UX only или Linux only.
Разделы
|
Операционная система
|
Описание
|
FilePermissions
|
|
Выключение бита SUID в некоторых программах (mount/umount, traceroute) и другие изменения в доступе
|
AccountSecurity
|
|
Настройка параметров входа в систему, доступа к cron, пароля, маска для вновь создаваемых файлов
|
BootSecurity
|
Linux only
|
Устанока паролей на GRUB , LILO и single-user режим, отключение комбинации Ctrl+Alt+Del
|
SecureInetd
|
|
Выключение ненужных сервисов Inetd
|
DisableUserTools
|
Linux only
|
Выключает программы которые могли быть очень полезными нападающему (компилятор), установление лимита ресурсов
|
ConfigureMiscPAM
|
Linux only
|
Конфигурирует вход в систему с использованием РАМ (Pluggable Authentication Modules)
|
Logging
|
Linux only
|
Создает и конфигурирует регистрации, чтобы помочь при обнаружении вторжения
|
MiscellaneousDaemons
|
|
Выключение услуг, которые очень часто являются ненужными или рисковаными (apmd, gpm)
|
Sendmail
|
|
Конфигурирует или отключает sendmail для большей безопасности, отключение команд vrfy (verify recipient existence) и expn (expand recipient alias/list contents)
|
DNS
|
|
Выключает или настраивает DNS для повышения безопасности
|
Apache
|
|
Конфигурирует веб-сервер Apache web для повышения защищенности(отключает CGI, ssi)
|
Printing
|
Linux only
|
Настройки печати
|
FTP
|
|
Настройки FTP сервера
|
TMPDIR
|
Linux only
|
Перенастраивают учетные записи пользователя, чтобы избежать использование каталога /tmp для хранения временных файлов, изменяя значения переменных TMPDIR и TMP
|
Firewall
|
Linux only
|
Создает IP-chains-based настройки firewall
|
PSAD
|
Linux only
|
Конфигурирует правила Bastille-firewall использования детектора сканирования портов PSAD (Port Scan Attack Detector)
|
Patches
|
HP-UX only
|
Установка и настройка программ для проверки патчей
|
HP-UX
|
HP-UX only
|
Конфигурирование защиты уникальное для платформы HP-UX
|
IPFilter
|
HP-UX only
|
Создание IPFilter-based правил для firewall
|
Пару слов о PSAD. Эта программа, написанная на Perl (http://www.cipherdyne.com), использует программы firewall для анализа сканирования портов и методы обнаружения сигнатур, используемые в Snort Intrusion Detection System (http://www.snort.org). При этом обнаруживается большинство различных методов сканирования. Все интересные события регистрируются при помощи syslog.
Как видите, Bastille Linux представляет собой легкий в использовании, удобный и интуитивно понятный инструмент, позволяющий существенно поднять защищенность компьютера, будь то сервер или десктоп. И дополнительно является неплохим пособием по изучению защиты Linux-систем. Удачи.