СЕРГЕЙ ЯРЕМЧУК, фрилансер. Автор более 800 статей и шести книг. С «СА» с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС
Контролируем безопасность сети с помощью OSSIM
Сегодня для полноценной защиты сети уже недостаточно тандема «межсетевой экран + система обнаружения атак». Для всестороннего контроля и анализа ситуации необходимо задействовать разные инструменты. Но только в том случае, когда возможно собрать все данные в одном месте, можно получить действительно полную информацию о событиях, происходящих в сети. Разработчики системы OSSIM (Open Source Security Information Management) предоставили системным администраторам такую возможность.
Стандартом де-факто для обеспечения безопасности сети считается использование систем обнаружения атак. В мире открытого кода несомненным лидером среди такого рода продуктов является Snort. Это весьма функциональный и понятный инструмент, который может очень многое рассказать о происходящем в подконтрольной сети. Но все же несмотря на достоинства систем обнаружения атак, они не всегда могут дать полную картину происходящего. Довольно часто такой инструмент, как tcptrack, способен рассказать о проблемах сети гораздо больше. Кроме того, внушительный объем выдаваемой СОА информации и ошибки в определении событий приводят к тому, что администратор получает большое количество ложных тревог. Поэтому приходится использовать и другие утилиты, помогающие получить более ясное представление о событии.
С другой стороны, практически все основные утилиты и Snort в том числе предназначены для сбора данных. Их анализ лежит полностью на плечах исследователя. Поэтому вполне естественно появились разработки, которые приводят полученные данные в удобный для анализа вид.
Другая категория проектов своей основной задачей ставит интеграцию как можно большего числа приложений и предоставляет инструменты для анализа собранных данных. К примеру, sguil (http://sguil.sourceforge.net). Его главной особенностью (помимо интеграции различных инструментов), является вывод информации пользователю в реальном времени.
Разработчики решения OSSIM основной упор делают не на развитие новых возможностей имеющихся утилит, а именно на максимальную интеграцию имеющихся приложений, создаваемых программистами всего мира. Для этого их объединяют в пределах единой открытой архитектуры, способной сохранить возможности и путем слияния и поиска взаимосвязей в собранной информации получить более точный результат. Кроме обнаружения, OSSIM осуществляет сопоставление сетевых событий, отсеивая часть ложных оповещений, и предлагает высокоуровневые индикаторы, позволяющие производить инспекцию и оценивать ситуацию в сети.
В настоящее время в OSSIM интегрировано большое количество разнообразных свободных инструментов: Snort, Nessus, Acid, Ntop, Nmap, P0f, Arpwatch, oinkmaster, pads, tcptrack, tcpdump и некоторые другие. Дополнительно возможен анализ данных, поставляемых другими приложениями (например, preludeIDS, Osiris, NTsyslog, Snare, Cisco Secure IDS), которые могут быть доставлены при помощи разных способов: syslog, snmp, сокетов и пр. Открытая архитектура позволяет добавить новый датчик в течение нескольких часов.
В качестве детекторов может выступать любая программа, которая способна производить обработку информации (сетевой или системной) в реальном времени, все равно каким способом: сравнением с образцом или определением аномалий и выдачей предупреждения, когда такое событие происходит.
В процессе обнаружения используются все три возможные фазы:
- предварительная обработка;
- коллекционирование данных;
- последующая централизованная обработка информации.
Если первые две фазы можно считать традиционными, то последующая обработка собранной информации является центральным звеном всей системы OSSIM. Ведь именно на этой стадии возможно применение механизмов, позволяющих улучшить чувствительность к обнаружению различных событий, в том числе и достаточно сложных, например распределенных или растянутых по времени атак. Для этого на последней стадии события располагаются по приоритетам, производится оценка риска и сопоставление с целью выявления взаимосвязи. Для оценки приоритета события используется несколько составляющих. Так, если происходит нападение на сервер из внешней сети и к тому же сканер nessus показывает наличие уязвимости на сервисе, используемом нападающим, то такому событию присваивается более высокий приоритет, чем событию, в котором пользователь внутренний сети не может подключиться к принтеру. Если нападение направлено на сервис, не используемый в данной сети, то такое событие вообще может быть отброшено для уменьшения объема выводимой информации.
Оценка риска происходит по трем факторам:
- данные, на основании которых выработано предупреждение;
- угрозы, которые представляет событие;
- вероятности успешного осуществления атаки.
На более высоком уровне система имеет монитор, названный riskmeter, оценивающий риск, накопленный в течение определенного промежутка времени для сети или группы машин. Модель корреляции позволяет создавать как образцы, позволяющие определять известные и обнаруживаемые атаки, так и образцы, определяющие неизвестные и не обнаруживаемые ранее угрозы, строить более сложные модели, а также связать детекторы (обеспечивающие индикаторы) и мониторы (обеспечивающие предупреждения) рекурсивно. Для этого применяется два принципа:
- Корреляция, основанная на последовательности событий, построенных на известных уязвимостях, связывающая известные образцы и поведение, определяющее нападение, с помощью правил, осуществляемых статическим аппаратом. Например, если происходит событие А, затем Б, необходимо выполнить действие В. Сложность состоит в составлении правил, способных анализировать события абстрактно.
- Корреляция, использующая эвристические алгоритмы, накопление по событиям и времени, что делает возможным обнаружение неизвестных вариантов атак и обеспечивает более глобальный обзор ситуации. Для этих целей используется накопление событий (как для всей сети, так и отдельных машин) с целью получения нового индикатора или моментальный снимок безопасного состояния сети. В результате создается так называемый накопленный риск, который может быть использован для оценки критических ситуаций посредством алгоритма CALM (Compromise and Attack Level Monitor). На его входе размещается множество событий, а на выходе – индикатор безопасного состояния сети.
После такой обработки предупреждения (alerts), собранные детекторами и достойные внимания, будут выданы уже как тревоги (alarms).
Кроме того, в OSSIM уделено внимание детальному контролю за каждой машиной, для чего используются три типа мониторинга. Каждый из этих типов существенен для системы безопасности, и без них администратор фактически слеп и не может отличить нормальную деятельность от аномальной:
- мониторинг использования, который обеспечивает общую информацию о машине, например среднее число данных, передаваемых за день;
- мониторинг профиля обеспечивает информацию об активности пользователя, позволяя вывести характер деятельности, например, «POP3-почта, http и ftp» – нормальный режим работы пользователя;
- мониторинг сессии обеспечивает в реальном времени показ сессий с возможностью отображения характера активности машины в сети.
Но это еще не все уровни мониторинга. На основании данных монитора сессии и монитора риска рath-монитор следит за маршрутами, используемыми различными компьютерами для связей, и вычисляет составной риск. При этом строятся графики постоянных ТСР-сессий, позволяющие идентифицировать сетевые нападения, совершаемые одновременно на несколько компьютеров, и отдельно графики хаотически изменяющихся UDP, TCP и ICMP связей. Кроме этого, OSSIM производит инвентаризацию сети, используя как активные, так и пассивные методы, запоминая тип операционной системы, МАС-адрес сетевого устройства, netbios и DNS-имя, предоставляемые сервисы и версии используемого в них программного обеспечения и пр. При выявленном отклонении сразу же генерируется предупреждение.
Затем эту информацию можно получить при помощи Forensic console и Control panel. Forensic console обеспечивает доступ ко всем данным и представляет собой поисковик, который в отличие от монитора риска позволяет исследовать каждое событие, происходящее в системе, с максимальной детализацией. Сontrol panel позволяет просматривать сетевую ситуацию на более высоком уровне. С его помощью можно получить доступ ко всем инструментам мониторинга, оценить уровень риска для сетей, отслеживать машины и подсети, уровень риска которых превысил порог безопасности, оценивать производительность основных сервисов, потоки в сетях, количественные характеристики полученной пользователями почты, доступа извне, обнаруженных вирусов. Для удобства работы некоторым событиям задается порог, превышение которого свидетельствует об аномальной активности в сети.
Структурно оssim может быть разделен на 4 компонента:
- агенты – призваны объединить и обеспечить занесение в базу данных информации, снятой с различных датчиков: snort, pads, ntop, tcptrack, p0f, arpwatch, nessus и пр.;
- база данных – открытый интерфейс, обеспечивающий занесение информации в реляционную базу данных (основные составляющие – MySQL, ossim, snort/acid и phpgacl);
- сервер – производит управление корреляционным движком, нормализацию данных, оценку риска и приоритета событий;
- консоль – позволяет управлять работой всей системы, анализировать данные, производить оценку риска и содержит структуры, обеспечивающие веб-интерфейс, при помощи которого производится управление (основные составляющие: Apache, PHP c ADOdb, phpgacl, rrdtool, mrtg, acid, Nessus, Nmap, Ntop, FPDF и пр.).
Каждый из представленных компонентов может быть установлен на отдельном узле, при этом информация между ними передается исключительно в зашифрованном виде при помощи SSL. Естественно, возможно разместить все компоненты и на одном узле. Структурно база данных OSSIM разбита на три части (см. схему).
Схема. Структура БД OSSIM
OSSIM может быть установлен на любую POSIX-совместимую систему – Linux, *BSD, есть сведения об успешном использовании в Mac OS X.
Что необходимо для установки OSSIM
Учитывая большое количество разнородных приложений, предназначенных для сбора и вывода информации, плюс необходимость реализации всех зависимостей, установка OSSIM дело если нетрудное, но требующее внимательного и тщательного подхода. Кроме того, на момент написания статьи последней версией была 0.9.8rc2, имеющая небольшие отличия в установке от стабильной версии 0.9.7. В основном они касаются настройки агентов. Возможно, к выходу стабильного 1.0 релиза, а, судя по активности разработчиков, он уже не за горами, ситуация изменится. Кстати, в версии 0.9.8 сделан первый шаг к интернационализации интерфейса, пока доступны только английский, французский, немецкий, португальский, испанский, чешский и японский языки. В статье будет рассмотрен процесс установки 0.9.8rc2, так как с выходом полноценного релиза читателю будет легко ориентироваться в тех местах, где будут отличия для 0.9.7, о них будет сказано дополнительно.
Исходные коды OSSIM и документацию можно получить:
На сайтах, кроме исходных текстов, доступны и прекомпилированые rpm-пакеты, в том числе необходимые для удовлетворения всех зависимостей и построения датчиков, например для Fedora Core: http://www.ossim.net/download/fedora/RPMS.ossim.
Мы рассмотрим общий случай: установку из исходных текстов на один компьютер с минимально необходимой информацией по конфигурированию сопутствующих компонентов, т.к. более подробное изложение займет слишком много места. Наибольшую помощь в установке может оказать документ INSTALL.Debian, который вы найдете в архиве с исходными кодами. Это наиболее полный документ с информацией об установке, поэтому он актуален и для пользователей других дистрибутивов.
Кроме того, в этом же архиве лежит несколько README файлов с более подробным описанием особенностей установки того или иного приложения.
Для установки из исходных текстов вам понадобятся:
и другие приложения, необходимые для построения датчиков и удовлетворения зависимостей.
При установке использовался дистрибутив ALTLinux 2.4 Master, на дисках которого можно найти подавляющее число необходимых компонентов. В крайнем случае их можно доустановить при помощи apt-get.
Создаем базы данных и таблицы
Итак, начинаем с создания баз данных, необходимых для хранения информации. Распакуем архив, далее для краткости этот каталог будем обозначать как $OSSIM_PATH. Запускаем MySQL:
# /etc/init.d/mysqld start
Starting safe_mysqld service: [ DONE ] |
Устанавливаем пароль, если до этого MySQL не использовался.
# mysqladmin -u root password root_password
Создаем две базы данных ossim и snort (эта база данных используется при построении датчика Snort).
# mysql -u root –p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1 to server version: 4.0.20-log
Type "help;" or "h" for help. Type "c" to clear the buffer.
|
mysql> create database ossim;
Query OK, 1 row affected (0.09 sec) |
mysql> create database snort;
Query OK, 1 row affected (0.00 sec) |
mysql> exit
Далее создаем таблицы при помощи готовых шаблонов, лежащих в подкаталоге db архива.
# cd $OSSIM_PATH/db
# cat create_mysql.sql | mysql -u root ossim -p
# cat ossim_data.sql snort_nessus.sql realsecure.sql | mysql -u root ossim -p
После чего в базе данных ossim должна появиться структура таблиц, описанная в файле $OSSIM_PATH/doc/ossim_db_structure.txt. Для доступа к базам данных ossim использует файл /etc/ ossim/framework/ossim.conf. Чтобы не создавать его вручную, используем готовый шаблон.
# mkdir /etc/ossim/
# cp $OSSIM_PATH/contrib/debian/framework/ossim.conf /etc/ossim/
Теперь редактируем этот файл. В данный момент нас интересует секция для доступа к базе ossim.
#################################################
# OSSIM db configuration
#################################################
ossim_type=mysql
ossim_base=ossim
ossim_user=root
ossim_pass=root_passwd
ossim_host=localhost
ossim_port=3306
Как видите, для доступа к базе данных используется пользователь root, имеющий максимальные права. С точки зрения безопасности, такой подход не совсем правилен. Это упрощение сделано, чтобы минимизировать объем информации. К тому же из-за большого количества элементов на этапе настройки, скорее всего, возникнут проблемы (особенно при первой попытке). Благодаря пользователю root можно быть спокойным хотя бы за этот участок работы. После отладки, уже в рабочей системе, лучше избегать такого подхода и создать для каждого случая своего пользователя с минимально необходимыми правами, частично пример такого подхода вы найдете в конце статьи.
Далее для создания таблиц нам потребуются исходные тексты в Snort и Acid. Если же их планируется использовать как датчики на этом же компьютере, то устанавливаем и настраиваем, как описано в документации.
Создаем базы данных для snort.
# tar –xzvf snort-2.3.2.tar.gz
# cd snort 2.3.2
# cat ./schemas/create_mysql | mysql -u root -p snort
В более ранних версиях скрипты находились вместо schemas в contrib.
После этого переходим к таблицам Acid. На сценарии необходимо предварительно наложить патчи.
# cd /var/www
# tar -xzvf /tmp/acid-0.9.6b23.tar.gz
# cd acid
# patch -p1 < $OSSIM_PATH /contrib/acid.patch
patching file acid_cache.inc
patching file acid_common.php
patching file acid_conf.php
patching file acid_hdr2.html
patching file acid_main.php
patching file acid_output_query.inc
patching file acid_qry_common.php
patching file acid_qry_form.php
patching file acid_qry_sqlcalls.php
patching file acid_state_citems.inc
patching file acid_state_criteria.inc
patching file acid_update_db.php
patching file create_acid_tbls_mysql.sql
patching file create_acid_tbls_pgsql.sql
|
Далее настройка ACID происходит обычным образом, не забудьте только изменить параметры доступа к базе данных в acid_conf.php.
$alert_dbname = "snort";
$alert_host = "localhost";
$alert_port = "3306";
$alert_user = "root";
$alert_password = "root_passwd ";
Создаем необходимые таблицы.
# cat ./create_acid_tbls_mysql.sql | mysql -u root snort -p
Устанавливаем и настраиваем датчики Snort и Spade
Так как мы устанавливаем все компоненты OSSIM на один компьютер, то теперь инсталлируем Snort как датчик. Для этого первым делом ставим Spade (Statistical Packet Anomaly Detection Engine). Ранее он поставлялся вместе с Snort, сейчас для удобства он поставляется вместе с ossim, его можно взять и с официального сайта (http://www.silicondefense.com).
# cd $OSSIM_PATH/contrib/spade/Spade-040223.1.tgz
# tar -xzvf Spade-040223.1.tgz
# cd Spade-040223.1
# vi Makefile
Редактируем переменную SNORTBASE, указывающую на месторасположение исходных текстов Snort:
# make
...............
Spade installed!
|
Накладываем патчи на Snort, номера версий в моем случае не совпадают, но проблем замечено не было:
# cd snort-2.3.2
# patch -p0 < $OSSIM_PATH/contrib/snort-2.1-ossim.patch
patching file src/output-plugins/spo_database.c
Hunk #2 succeeded at 69 with fuzz 1.
Hunk #3 succeeded at 184 (offset 1 line).
Hunk #5 succeeded at 327 (offset 1 line).
Hunk #6 succeeded at 684 (offset 9 lines).
Hunk #7 succeeded at 860 (offset 1 line).
Hunk #8 succeeded at 928 (offset 9 lines).
Hunk #9 succeeded at 1735 (offset 1 line).
Hunk #10 succeeded at 2844 (offset 9 lines).
Hunk #11 succeeded at 2855 (offset 1 line).
|
И далее устанавливаем Snort обычным образом, не забывая добавить опцию --with-mysql, для того чтобы он мог заносить данные в MySQL:
# ./configure --with-mysql
# make
# make install
После чего создаем каталог /etc/snort:
# mkdir /etc/snort
И копируем в образовавшийся каталог необходимые файлы:
# cp snort-2.3.2/etc/snort.conf /etc/snort/
# cp snort-2.3.2/etc/unicode.map /etc/snort/
# cp $OSSIM_PATH/contrib/spade/spade.conf.sample /etc/snort/spade.conf
Далее редактируем эти файлы, при этом в snort.conf должны быть строки, настраивающие уровень критичности заносимых сообщений для syslog и параметры базы данных:
###################################
# Step #3: Configure output plugins
###################################
output alert_syslog: LOG_AUTH LOG_ALERT
output database: alert, mysql, user=root dbname=snort host=localhost logfile=fast.log
И подключаем файл spade.conf директивой:
Includespade.conf
После чего заполняем секцию в файле ossim.conf, которая отвечает за доступ к БД для сенсора Snort:
# ########################
# # SNORT db configuration
# # (look at snort.conf)
# ########################
snort_type=mysql
snort_base=snort
snort_user=root
snort_pass=root_passwd
snort_host=localhost
snort_port=3306
Настройку доступа к базе данных на этом этапе можно считать законченной.
Настраиваем сервер OSSIM
Приступаем к установке сервера:
# cd $OSSIM_PATH/
# ./autogen.sh
По умолчанию утилита конфигурируется с опциями ./configure --sysconfdir=/etc --localstatedir=/var, если удобнее разместить всю структуру, например в /opt/ossim их можно переопределить.
# cd src/
# make
После чего в /etc/ossim должен появиться ряд подкаталогов, сейчас нас интересует только один – /etc/ossim/server, содержащий несколько XML-файлов (config.xml, directives.xml, generic.xml, trojans.xml, directives.xml). Кроме того, при установке должен быть создан каталог /var/log/ossim, предназначенный для журнала, а исполняемый файл ossim-server нужно переместить в /usr/local/bin/. Проверьте их наличие, если чего-то нет – скопируйте или создайте вручную.
На следующем шаге необходимо отредактировать файл /etc/ossim/server/config.xml. Структура его проста и понятна, в нем содержатся данные для доступа к базам ossim и snort, IP-адрес (не используйте 127.0.0.1, иначе не сможете подключиться к серверу) и интерфейс, на котором сервер будет слушать подключение агентов и консоли, e-mail, на который будут отсылаться предупреждения. Дополнительно могут указываться IP-адреса дублирующих (replication) серверов в случае совместной работы нескольких серверов OSSIM.
Здесь становится очевидно одно из неудобств настройки OSSIM: для всех компонентов используются свои конфигурационные файлы, информация в некоторых из них (например, параметры доступа к БД) дублируются, что приводит к увеличению объема работ, а также путанице и ошибкам.
Когда все готово, сервер можно запускать.
# ossim-server -d -c /etc/ossim/server/config.xml
При этом не должно быть выдано никаких ошибок, а в журнале должна появиться запись:
# cat /var/log/ossim/server.log
OSSIM-Message: sim_thread_scheduler
OSSIM-Message: sim_thread_organizer
OSSIM-Message: sim_thread_server
OSSIM-Message: Waiting for connections...
|
Сервер готов принимать подключения.
Приступаем к настройке консоли
Все настройки производятся в конфигурационном файле /etc/ossim/framework/ossim.conf, который мы использовали ранее. Кроме параметров доступа к базам ossim и snort, требуется указать пути к некоторым приложениям.
###################
# Base dir
###################
data_dir=/opt/ossim
base_dir=/var/www/ossim
# я переместил подкаталог www поближе к остальным файлам веб-сервера
ossim_interface=eth0
ossim_link=/ossim/
adodb_path=/usr/share/adodb/
phpgacl_path=/var/www/phpgacl/
И в самом конце файла:
jpgraph_path=/usr/share/jpgraph/
Заходим в /var/www/phpgacl/, редактируем два файла gacl.class.php и admin/gacl_admin.inc.php, где в переменных «db_type», «db_host», «db_user», «db_password» и «db_name» указываем параметры доступа к базе данных ossim (параметр «db_table_prefix» оставляем пустым). Здесь же создаем подкаталог admin/templates_c с возможностью записи в него с правами пользователя, от имени которого работает веб-сервер.
Копируем шаблон конфигурации веб-сервера.
# cp $OSSIM_PATH/etc/httpd/ossim.conf /etc/httpd/conf/
И проверяем правильность путей внутри него:
<IfModule mod_alias.c>
Alias /ossim "/var/www/ossim"
</IfModule>
<Directory /var/www/ossim>
<IfModule mod_php4.c>
php_value include_path .:/usr/share/ossim/php/
</IfModule>
</Directory>
<Directory /var/www/phpgacl>
AuthType Basic
AuthName OSSIM
AuthUserFile /var/www/ossim-users
Require valid-user
AllowOverride None
</Directory>
Как видите, для доступа необходимо завести пользователя ossim и задать пароль:
# htpasswd -c /var/www/ossim-users ossim
New password:
Re-type new password:
Adding password for user ossim
|
Теперь рассмотрим конфигурационный файл Apache httpd.conf и проверим загрузку модулей mod_php4 и mod_ssl, а также подключим при помощи параметра Include файл /etc/httpd/conf/ossim.conf. Перезапускаем веб-сервер и вводим в браузере http://localhost/phpgacl/setup.php, для настройки phpgacl. Теперь, когда phpgacl установлен, необходимо перейти к странице http://localhost/ossim/setup/ossim_acl.php, что приведет к автоматическому заполнению базы данных с заданными по умолчанию параметрами доступа (пользователь admin пароль admin, который необходимо затем обязательно изменить, используя «Сonfiguration -> Main»).
Установка RRDTool проста, скачиваем последнюю версию с http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/download.html и устанавливаем обычным образом. После чего указываем в файле /etc/ossim/framework/ossim.conf местонахождение исполняемых файлов и библиотек.
rrdtool_path=/usr/bin/
rrdtool_lib_path=/usr/lib/perl5/
Следующим шагом идет настройка mrtg, здесь работы немного больше. Скачиваем с http://people.ee.ethz.ch/~oetiker/webtools/mrtg/pub, накладываем патчи:
# tar –xvzf mrtg-2.10.5.tar.gz
# cd mrtg-2.10.5/bin
# patch -p0 < $OSSIM_PATH/contrib/mrtg/mrtg.diff
Затем компилируем и устанавливаем, как описано в doc/unix-guide.txt. После чего создаем необходимые каталоги и прописываем путь к ним в конфигурационных файлах.
# mkdir /var/www/mrtg
# cd /var/www/mrtg
# mkdir host_qualification net_qualification global_qualification level_qualification
Теперь редактируем /etc/ossim/framework/mrtg-rrd.cfg:
WorkDir: /var/www/mrtg
Include: /var/www/mrtg/hosts/host_qualification.cfg
Include: /var/www/mrtg/nets/net_qualification.cfg
Include: /var/www/mrtg/global/global_qualification.cfg
И в файле /etc/httpd/conf/ossim.conf редактируем переменные:
mrtg_rrd_files_path=/var/www/mrtg
rrdpath_host=/var/www/mrtg/host_qualification/
rrdpath_net=/var/www/mrtg/net_qualification/
rrdpath_global=/var/www/mrtg/global_qualification/
font_path=/opt/ossim/contrib/fonts
Далее необходимо, чтобы интерпретатор Perl видел модуль ossim_conf.pm. Для достижения этого можно создать символическую ссылку:
# ln -s $OSSIM_PATH/include/ossim_conf.pm /usr/lib/perl5/
Можно также указать другой каталог, перечисленный в массиве @INC (вывести весь список можно, perl -e ’print «@INC »’), либо сделать видимым путь к $OSSIM_PATH/include/ в массиве @INC, указав эти данные в скрипте draw_graph.pl, добавив вначале строку:
use lib "/opt/ossim/include";
либо поместив модуль и скрипт в один каталог (переменная @INC обычно включает текущий каталог). Другие варианты решения смотрите perldoc -q @INC.
Сам скрипт draw_graph.pl копируем каталог cgi-bin веб-сервера:
# cp $OSSIM_PATH/scripts/draw_graph.pl /var/www/cgi-bin/
Запускаем скрипт launch-mrtg, который создаст необходимые файлы:
# cd $OSSIM_PATH/mrtg
# ./launch-mrtg
И обеспечиваем ему периодический запуск:
# crontab –e
0-59/5 * * * * $OSSIM_PATH/mrtg/launch-mrtg |
либо используя готовый шаблон:
# cp $OSSIM_PATH/etc/cron.d/ossim /etc/cron.d/
Для обновления данных, используемых утилитами mrtg и rrdtool, применяется скрипт control_panel.py, который необходимо поместить в каталог, где он будет виден переменной PATH:
# cp $OSSIM_PATH/scripts/control_panel.py /usr/local/bin/
# chmod +x /usr/local/bin/control_panel.py
Ставим ntop. При построении OSSIM он может быть размещен в принципе на любом компьютере, хотя в документации описана установка на компьютер, выполняющий роль консоли. Перед установкой на него необходимо наложить патчи.
# tar –xzvf ntop-3.1.tar.gz
# cd ntop-3.1/
# patch -p0 < $OSSIM_PATH/contrib/ntop/ntop-3.1-ossim.diff
В указанном каталоге находятся патчи для нескольких версий ntop. Далее все проходит,как описано в документации. Если все прошло нормально, на результат можно посмотреть, набрав http://localhost:3000, активируем rrdPlugin зайдя в «Admin -> plugins».
Редактируем файл ossim.conf:
ntop_link=http://your_ntop_host:3000/
rrdpath_ntop=/var/lib/ntop/rrd
Начиная с версии 0.9.7, консоль OSSIM может создавать отчеты в формате pdf, что очень удобно при выводе на печать. Для реализации такой возможности используется FPDF – специализированный класс PHP, представляющий собой свободную (не требующую отчислений при коммерческом использовании) замену Pdflib. Установка проста. Скачиваем архив и копируем файл fpdf.php в каталог, указанный в параметре include_path т.е. /usr/share/ossim/php/ (или в php.ini) файла настройки ossim.conf веб-сервера.
# tar -xzvf fpdf153.tgz
# cd fpdf153
# cp fpdf.php /usr/share/ossim/php/
Интеграция OSSIM и nessus описана в README.nessus, поэтому за более подробной инструкцией обращайтесь к нему. Ничего необычного в установке нет. Заносим в /etc/ossim/framework/ossim.conf данные для доступа к серверу nessus:
nessus_user=ossim
nessus_pass=your_password
nessus_host=localhost
nessus_port=1241
nessus_path=/usr/bin/nessus
nessus_rpt_path=/var/www/ossim/vulnmeter/
Пароль задается так.
# /usr/sbin/nessus-adduser
Using /var/tmp as a temporary file holder
Add a new nessusd user
----------------------
Login : ossim
Authentication (pass/cert) [pass] :
Login password : your_password
|
Для обновления подключаемых модулей вводим:
# nessus-update-plugins
# perl $OSSIM_PATH/scripts/update_nessus_ids.pl
Кроме того, для запуска сканирования используется Perl-скрипт $OSSIM_PATH/scripts/do_nessus.pl, который заносит результат работы в базу данных ossim.
Настраиваем работу с агентами
И наконец, настройка работы с агентами. Установка управляющего скрипта (написанного на Python), при помощи которого осуществляется контроль над агентами, несколько отличается в версиях 0.9.7 и 0.9.8. Ранее необходимо было просто скопировать файлы на свое место, теперь этим руководит отдельный сценарий. При этом если просто скопировать скрипт в каталог, перечисленный в переменной PATH, то при работе выдается множество ошибок, лучше всего создать ссылку:
# cd $OSSIM_PATH/agent
# ln -sf `pwd` /usr/local/bin
# python setup.py install
Копируем конфигурационный файл на свое место:
# mkdir /etc/ossim/agent
# cp $OSSIM_PATH/etc/agent/config.xml /etc/ossim/agent
и запускаем, проверяя на наличие ошибок:
# ossim-agent -v
Если агент запустился без проблем и жалуется на отсутствие датчиков, то все нормально и можно открывать конфигурационный файл для редактирования. Файл config.xml имеет простую и понятную структуру, поэтому особых сложностей не предвидится.
В самом начале идет описание сервера:
<!-- Ip and port number where the ossim server is listening -->
<serverip>192.168.0.10 </serverip>
<serverport>40001</serverport>
<watchdog enable="yes" interval="30"/>
<logdir> /var/log/ossim</logdir>
Секция <plugins> описывает датчики. Если какой-то из датчиков не установлен, то пункт, отвечающий за его запуск, следует «закомментировать», чтобы при работе не засорять файлы журнала ненужными сообщениями об ошибках. Например, датчик snort описан так:
<plugin id="1001" process="snort" type="detector" start="yes" enable="yes">
<startup>/etc/init.d/snort start</startup>
<shutdown>/etc/init.d/snort stop</shutdown>
<source>fast</source>
<interface>eth0</interface>
<sensor>192.168.0.10</sensor>
<location>/var/log/snort/fast.log</location>
</plugin>
В принципе здесь все просто и должно быть понятно, но это не значит, что все сразу и заработает. Причин может быть две: неправильная строка запуска команды, либо команда недоступна из PATH. Поясню на примере. В ALTLinux, как и во многих других дистрибутивах, а также при установке snort из исходников, скрипт запуска называется snortd, а не snort. С Apache неразберихи еще больше, скрипт может называться и apache, и httpd, и httpd2. Поэтому проконтролируйте правильность написания названий. Во втором случае вместо строки, записанной по умолчанию в файле:
tcptrack -i eth0 -P 40003 -F 10 –D
укажите полный путь к утилите (это даже считается хорошим тоном).
/usr/bin/tcptrack -i eth0 -P 40003 -F 10 –D
Записываем в файл /etc/services следующие строки:
ossim-agent 40001/tcp #ossim-agent
ossim-agent 40001/udp #ossim-agent
Теперь можно запускать в боевом режиме:
# ossim-agent -d -c /etc/ossim/agent/config.xml
(->) Agent: Waiting for server...
(<-) Agent: Server connected
|
C точки зрения безопасности агентам лучше дать минимальные права для работы с базой данных:
# mysql -u root –p
mysql> GRANT INSERT, SELECT on snort.* to root@sensor_ip
IDENTIFIED BY "mysql_password"; |
mysql> GRANT INSERT, SELECT on ossim.* to root@sensor_ip
IDENTIFIED BY "mysql_password"; |
mysql> exit;
хотя на этапе настройки это можно пропустить.
Рисунок 1. Пункты меню конфигурации позволяют получить более точный результат
Рисунок 2. Получение подробных отчетов – одна из положительных сторон OSSIM
Теперь, когда самая трудная часть позади и все настройки произведены, можно заходить в консоль. Вызываем веб-браузер и вводим https://localhost/ossim, используя в качестве имени/пароля admin-admin. При первом запуске система активирует все необходимые для работы параметры и установит настройки для Control Panel. Дальнейшее изучение вы можете продолжить самостоятельно, щелкая мышкой и наблюдая за информацией выдаваемой системой.