SNORT + BASE

Snort – это система обнаружения вторжений(атак), способная выполнять анализ трафика в режиме реального времени с целью обнаружения попыток взлома системы.
Base – это веб-интерфейс для просмотра событий поступающих от Snort.

Задача:
1. У вас имеется несколько сетей состоящих из нескольких серверов и компьютеров соединенных через интернет. Вам необходимо настроить систему обнаружения вторжений Snort таким образом, чтобы данные об обнаруженных атаках фаервола записывались в БД (MySQL, PostgreSQL).
2. Настроить веб-интерфейс Base(Basic Analysis and Security Engine) для просмотра событий с сенсоров.

Предполагается, что:
1. IP-адрес сервера на котором будет работать БД MySQL и
веб-сервер – 10.110.225.40;
2. Используемая БД – MySQL.
3. Операционная среда CentOS 6 i686

Настройка MySQL
1. На сервере с IP-адресом 10.110.225.40 установите пакет snort.
2. Запустите сервер MySQL командой:
# service mysqld start
3. После старта MySQL сервера введите в коммандной строке:
# mysql
Создайте базу данных с именем snort_db:
mysql> create database snort_db;
 Query OK, 1 row affected (0.00 sec)
4. Создайте пользователя snort c паролем 12345678
mysql> grant all on snort_db.* to snort identified by '12345678';
 Query OK, 0 rows affected (0.01 sec)
5. Выйдите из интерфейса MySQL:
mysql> \q
6. Перейдите в каталог /usr/share/doc/snort-XXX, где XXX – ваша версия snort.
7. Выполните команду:
# mysql snort_db <create_mysql
Тем самым мы создали все необходимые таблицы в БД snort_db.

Настройка BASE
BASE – это продолжение развития проекта ACID.
1. Скачайте последнюю версию BASE с сайта www.snort.org.
2. Распакуйте содержимое архива BASE в каталог /var/www/base
3. Сделайте владельцем этого каталога и его содержимого пользователя и группу apache:
# chown -R apache.apache /var/www/base
4. В каталоге /etc/httpd/conf.d создайте файл base.conf следующего содержания:
 Alias /base/ /var/www/base/
 <Directory /var/www/base>
  AllowOverride None
 </Directory>
5. Установите пакеты
daq-0.6.1-1.i386.rpm,
libdnet-1.11-1.2.el6.rf.i686.rpm,
perl-Time-modules-2006.0814-5.el6.noarch.rpm,
php-adodb-4.81-1.el6.rf.noarch.rpm,
php-jpgraph-1.19-1.2.el6.rf.noarch.rpm,
snort-2.9.1-1.RHEL6.i386.rpm,
snort-mysql-2.9.1-1.RHEL6.i386.rpm,
php-mysql-5.3.2-6.el6_0.1.i686,
php-common-5.3.2-6.el6_0.1.i686,
php-pdo-5.3.2-6.el6_0.1.i686,
php-pear-1.9.0-2.el6.noarch,
php-cli-5.3.2-6.el6_0.1.i686,
php-gd-5.3.2-6.el6_0.1.i686
6. Перезапустите сервер apache командой:
# service httpd restart
7. В любом веб-браузере откройте страницу http://10.110.225.40/base/
Вы должны увидеть страницу начального конфигурирования BASE:


8. Нажмите Continue:
9. Выберите язык Russian и введите путь до ADODB, который по умолчанию устанавливается в каталог /var/www/adodb:


10. Выберите тип БД MySQL и введите:
Database name: snort_db
Database host: localhost
Database port: 3306
Database User Name: snort
Database User Password: 12345678

11. Если Вы хотите установить пароль при входе на страницу просморта событий BASE поставьте галочку в пункте Use Authentication System и задайте имя пользователя и пароль:


 12. В появившемся окне нажмите кнопку Create BASE AG:


 Первоначальное конфигурирование BASE законченно.



Подводные камни Дополнительные настройки
Если возникают проблемы с настройками, то:
1. Дайте права
# chown -R apache:apache /var/www/base
# chmod 644 /var/www/base/*
2. в файл /etc/php.ini добавим
date.timezone = "Europe/Moscow"
и раскомментировать строку E_ALL & ~E_NOTICE в пункте error_reporting
3. в файлы /var/www/base/base_conf.php и /var/www/base/base_main.php добавим
date_default_timezone_set("Europe/Moscow");
4. В файле /etc/httpd/conf/httpd.conf изменим строчки на
IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable Charset=windows-1251
AddDefaultCharset windows-1251
5. Устанавливаем дополнительно
# pear install Mail
# pear install Mail_mime
# pear install Image_Graph (если пишет ошибку, то ставим альфа версию)
# pear install Image_Color
# pear install Image_Canvas-alpha
# pear install Image_Graph-alpha

Настройка сенсора Snort
1. Перейдите в каталог /etc/snort/ и отредактируйте файл snort.conf, добавив/изменив следующие строки:
output database: log, mysql, user=snort password=12345678 dbname=snort_db host=localhost
var RULE_PATH /etc/snort/rules
2. Теперь нам необходимо скачать актуальные правила(rules) для Snort:
# wget http://www.snort.org/pub-bin/downloads.cgi/Download/vrt_pr/snortrules-pr-2.4.tar.gz
3. Распакуем содержимое файла snortrules-pr-2.4.tar.gz в каталог /etc/snort/, в этом каталоге должен создаться каталог rules содержащий правила Snort.
Подводные камни Дополнительные настройки
Если возникают проблемы с настройками, то:
Нам необходимо поправить стартовый скрипт /etc/init.d/snortd.
Если запуск происходит с параметром -А , то в базу логи не пишутся, создаются лог-файлы ( а нам надо в базу данных) и запуск демона происходит раньше старта демона MySQL, вот пример моего файла:

[root@snort /]# cat /etc/init.d/snortd
#!/bin/sh
# chkconfig: 2345 94 60
# Source function library.
. /etc/rc.d/init.d/functions
# Source the local configuration file
. /etc/sysconfig/snort
# See how we were called.
case "$1" in
  start)
        echo -n "Starting snort: "
        #  start interface eth0
        /sbin/ifconfig eth0 0.0.0.0 up -arp
        sleep 5
        /usr/sbin/snort -D -i eth0 -l /data/log -c /etc/snort/snort.conf
        touch /var/lock/subsys/snort
        echo
        ;;
  stop)
        echo -n "Stopping snort: "
        killproc snort
        rm -f /var/lock/subsys/snort
        /sbin/ifdown eth0
        sleep 3
        echo
        ;;
  reload)
        echo "Sorry, not implemented yet"
        ;;
  restart)
        $0 stop
        $0 start
        ;;
  condrestart)
        [ -e /var/lock/subsys/snort ] && $0 restart
        ;;
  status)
        status snort
        ;;
  *)
        echo "Usage: $0 {start|stop|reload|restart|condrestart|status}"
        exit 2
esac
exit 0
Директории /data я специально выделил 200Гб из винчестера 250Гб и туда перенёс базы и директорию логирования. Для подключения и настройки используем интерфейс eth1, для прослушки snort'ом eth0 (автозапуск выключен ONBOOT=no )
Настроил CISCO 2960
monitor session 1 source interface Gi0/11
monitor session 1 destination interface Gi0/1 encapsulation replicate
на порту Gi0/11 фаервол, а на порту Gi0/1 snort
# chkconfig –del snortd
# chkconfig –add snortd
5. Запустите Snort:
# service snortd start

Проверка работоспособности
1. Просканируйте сервер, на котором Вы установили сенсор Snort, сканером nmap. Допустим IP-адрес сервера 10.110.224.94, тогда выполните:
# nmap -sS 10.110.224.94
2. Войдите в интерфейс BASE http://10.110.225.40/base/
При правильной настройке вы должны увидеть примерно следующее: