Крепость для пингвина — Bastille Linux

4 Фев
2008

Сегодня как никогда особое внимание уделяется защите персональных компьютеров и серверов от вторжения из вне. В Интернете легко можно отыскать описания различных методов атак, так и инструменты их реализующие, с желающими также проблем обычно не бывает. Но сисадмину или обычному пользователю от этого не легче не становится, приходится уделять время чтению документации, настройке системы, но опыт приходит вместе с ошибками. Существует множество различных подходов от использования специальных дистрибутивов в которых изначально закручены все гайки, до утилит позволяющих улучшить защиту Linux-системы. Разработчики Bastille Linux (www.bastille-linux.org) используют именно второй подход.

Возможности Bastille 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 (www.seifried.org/lasg/) и другие источники.

С помощью программы настройки Bastille Linux настраиваются демоны, изменяются некоторые параметры системы и межсетевого экрана. Дополнительно (при необходимости) отключаются ненужные сервисы вроде печати, rcp и rlogin. С его помощью можно создать среду «chroot jails” уменьшая уязвимость некоторых Интернет сервисов вроде Web и DNS. Фактически Bastille Linux это Perl скрипт, изменяющий параметры в системных файлах, в зависимости от ответа пользователя на заданный вопрос. Проблема здесь одна. В некоторых дистрибутивах для хранения настроек используются разные каталоги, формат файлов может немного отличаться. Поэтому скрипт должен знать, где их искать и как с ними работать. В настоящее время поддерживаются следующие дистрибутивы и системы Red Hat Enterprise и Fedora Core, Debian, Mandriva/Mandrake, SUSE, Gentoo и TurboLinux а также HP-UX и Mac OS X.

Установка

При закачке необходимо по ссылке выбрать пакет под используемый дистрибутив или архив с исходными текстами. Для работы потребуется интерпретатор Perl, perl-Tk для интерактивного режима потребуются и для текстового режима (recommended for high security) Perl/Curses. Bastille Linux есть в репозитарии пакетов Ubuntu поэтому проще его установить, используя команду apt.

$ sudo apt-get update

$ sudo apt-get install bastille

…..

Будут установлены следующие дополнительные пакеты:

libcurses-perl

Предлагаемые пакеты:

acct perl-tk libgtk-perl

Рекомендуемые пакеты:

whois psad

НОВЫЕ пакеты, которые будут установлены:

bastille libcurses-perl

….

Необходимо скачать 484kБ архивов.

WARNING: Bastille-firewall is not configured yet

Please create /etc/Bastille/bastille-firewall.cfg to enable it.

(HINT: use InteractiveBastille)

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

$ sudo apt-get install whois psad acct perl-tk libgtk-perl

Установка с использованием исходных текстов также обычно проблем не вызывает, после распаковки архива, заходим внутрь образовавшегося каталога и вводим ./Instal.sh. После чего программа скопирует все файлы на свои места и установит необходимые для работы модули Perl. Теперь можно запускать.

Запускаем

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

$ sudo InteractiveBastilleЗапустить программу конфигурации в интерактивном режиме можно двумя способами. Первый состоит в запуске perl-скрипта InteractiveBastile, при этому будет запущен Tk-интерфейс требующий Х-Window. Что проверяется установленным значением переменной $DISPLAY. Он очень удобен так как всегда можно вернуться к предыдущему пункту, позволяет использовать выборочную конфигурацию. Пройденное расстояние отражено статус-баром.

Если же система Х-Window не используется, то с заданием ключа , bastille будет запущен с текстовым интерфейсом Perl/Curses.

Но этим способом, не всегда удается запустить программу. В этом случае можно воспользоваться вторым вариантом, вызов bastille напрямую.

$ sudo /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″, «DB3.1″, «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″,»MN8.2″,»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 название дистрибутива, выбрав сокращенное название из приведенного выше списка (только при первом запуске).

$ sudo /usr/sbin/bastille –os DB3.1

Хотя Ubuntu в списке официально поддерживаемых систем нет, но Bastille запускается нормально. Причину можно узнать, проанализировав функцию GetDistro() в файле /usr/lib/Bastille/API.pm. При запуске производится поиск характерных для некоторых дистрибутивов файлов и считывание из нее информации о релизе. А так как для совместимости с Debian в Ubuntuсохранен файл /etc/debian_version.

$ cat /etc/debian_version

testing/unstable

Bastille Linux считает его Debian. Хотя немного подкорректировав файл API.pm можно добавить поддержку Ubuntu.

Bastille Linux в консоли

Работаем

В результате появится окно настройки. Выбрав нужную категорию начинаем отвечать на вопросы, в большинстве пунктов ответом будет выбор из двух вариантов Yes или No, но например при вводе диапазонов портов дополнительно активируется внизу экрана полоса «Answer», куда и следует вводить данные. При ответе на вопросы можно использовать кнопку «Explain More/Explain Less» для более или менее подробного объяснения, правда, для некоторых пунктов доступен только один из вариантов подсказок. К сожалению, локализацией Bastille Linux никто не занимался и судя по тенденции заниматься не будет. Поэтому, чтобы разобраться в вопросах необходимо знания английского (оптом вопросы можно просмотреть, ознакомившись с файлом Questions.txt). После ответа на все вопросы в последнем пункте сохраняем конфигурацию.

в X

Для неинтерактивного режима первоначально проделываем все вышеописанное, для того чтобы создать необходимые файлы конфигурации, все ответы на вопросы они находятся в /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.

Bastille Linux представляет собой легкий в использовании, удобный и интуитивно понятный инструмент позволяющий существенно поднять защищенность компьютера, будь то сервер или десктоп. И дополнительно является неплохим пособием по изучению защиты Linux систем. Linux forever!

Комментировать

Наверх