Чтобы включить систему обнаружения атак (IDS) Snort в Smoothwall достаточно установить соответствующую галочку в web-интерфейсе, но такой путь не предоставит всех возможностей для работы с IDS Snort. Данное описание охватывает обновление версии Snort, добавление возможности вести события (alerts) в базе (mysql) и установку инструментария для работы с накопленной базой событий.
Поэтому первым дело необходимо установить обновленную версию Snort для Smoothwall Express 2.0. Последнюю версию данного расширения можно взять
тут.
1. Поместить скаченное расширение на Smoothwall Express можно с помощью scp:
scp user@hostname:~/Snort-Update-2.x.x-MySQL.tgz /tmp
2. Разархивируем содержимое архива и все станет на свои места
tar zxvf ./Snort-Update-2.x.x-MySQL.tgz -C /
3. Переписать файл файл /usr/local/bin/snort новым файлом snort-mysql
cp /usr/local/bin/snort-mysql /usr/local/bin/snort
cp: overwrite `/usr/local/bin/snort'? y
4. Подготовить базу данных Snort, для этого в дистрибутиве Snort в директории schemas имеются скрипты для различных СУБД - для MySQL - create_mysql. Необходимо создать 2 базы данных - snort_db и snort_archive_db - первая непосредственно для отслеживания событий, вторая для архивирования старых событий (понадобится для работы с BASE).
5. Отредактировать /etc/snort.conf
Закомментировать
# include /etc/snort/varsЗадать переменные
var HOME_NET [192.168.1.0/24,212.122.83.100]var EXTERNAL_NET !$HOME_NETВ препроцессор sfportscan можно добавить список хостов для игнорирования событий о сканировании портов сканерами домашней сети (HOME_NET)
ignore_scanners { 192.168.1.0/24 }Добавить output-описания:
output alert_full: alert # Snort будет продолжать писать в /var/log/snort/alertoutput database: log, mysql, user=user password=pass dbname=snort_db host=192.168.1.1 # и в БД6. Проверить работоспособность новой версии Snort можно, запустив комманду:
/usr/local/bin/snort -c /etc/snort.conf -D -u snort -g snort -d -e -z -i eth1
Если все в порядке в списке процессов (ps ax) одним из последних будет Snort.
Скрипт
/usr/local/bin/restartsnort не подходит для использования, поэтому его необходимо заменить на рабочий вариант.
# cat > /usr/local/bin/stopsnort
#!/bin/bash
kill -9 `cat /var/run/snort*.pid`
[Ctrl + C]
# cat > /usr/local/bin/startsnort
#!/bin/bash
/usr/local/bin/snort -c /etc/snort.conf -D -u snort -g snort -d -e -z -i eth1
[Ctrl + C]
# cat > /usr/local/bin/restartsnort
#!/bin/bash
/usr/local/bin/stopsnort; sleep 3; /usr/local/bin/startsnort
[Ctrl + C]
# chmod 755 /usr/local/bin/stopsnort
# chmod 755 /usr/local/bin/startsnort
# chmod 755 /usr/local/bin/restartsnort
Если в конфигурационном файле snort.conf включен препроцессор perfmonitor, то необходимо добавить в ротацию журналов файл /var/log/snort/snort.stats - он достаточно быстро растет. Препроцессор rpc_decode можно выключить (закомментировать), если не используются RPC-службы.
Для удобной работы с накопленной базой событий существует система BASE (Basic Analysis and Security Engine). Это "реинкарнация" старой ACID-системы, которая в данный момент больше не развивается. BASE активно разрабатывается и всегда доступен на SourceForge. Для работы с BASE нужно иметь несколько дополнительных средств:
Если есть pear, ставится элементарно:
pear install Image_Color
pear install Image_Canvas-alpha
pear install Image_Graph-alpha
Если с pear сложности, достаточно скачать все эти пакеты с http://pear.php.net/, распаковать в одну директрию, например Image и эту директорию положить в такое место, куда по умолчанию заглядывает php.
Установка BASE проста
# tar -xvzf base-x.x.x.tar.gz
# cd base-x.x.x
# cp base_conf.php.dist base_conf.php
Редактируем base_conf.php:
$BASE_urlpath = “/base”;
$DBlib_path = "Путь до adodb";
$DBtype = "mysql";
$alert_dbname = "snort_db";
$alert_host = "localhost";
$alert_port = "";
$alert_user = "snort";
$alert_password = "new_password";
$archive_dbname = "snort_archive_db";
$archive_host = "localhost";
$archive_port = "";
$archive_user = "snort";
$archive_password = "new_password ";
Аналогична установка для /base_archive:
$BASE_urlpath = “/base_archive”;$DBlib_path = "Путь до adodb";$DBtype = "mysql";$alert_dbname = "snort_archive_db";$alert_host = "localhost";$alert_port = "";$alert_user = "snort";$alert_password = "new_password";$archive_dbname = "snort_archive_db";$archive_host = "localhost";$archive_port = "";$archive_user = "snort";$archive_password = "new_password ";Теперь Base доступен по адресу http://hostname/base (архив http://hostname/base_archive).
Ссылки:
- Snort 2.x.x (Plain, MySQL, PostgreSQL, ODBC, All)
- Snort, Apache, PHP, MySQL, and BASE on SuSe Setup Guide
- Detection of the Telecommunication Attacks: Theory and Practice, Snort
- The Three Snort Pigs. Snort Sensor Tuning Using SnortCenter
- More Suitable, Faster, Better: Snort + MySQL