Установка и настройка snort&&mysql&&base


Исходный данные:

OS Centos 5.1
eth0 192.168.50.175

Скачиваем исходники и пакеты:

snort-2.8.0.2.tar.gz
snortrules-pr-2.4.tar.gz
base1.3.9.tar.gz
php-adodb-4.94-1.fc6.noarch.rpm


Устанавливаем snort

Создаем например в катологе root папку snort и записываем все туда наши скаченные файлы:

/root/snort
[root@localhost snort]# ls -l
итого 6032
-rw-r--r-- 1 root root  487292 Дек 13 15:01 base-1.3.9.tar.gz
-rw-r--r-- 1 root root  513361 Сен 30 19:42 php-adodb-4.94-1.fc6.noarch.rpm
-rw-r--r-- 1 root root 4340169 Мар 25 07:12 snort-2.8.0.2.tar.gz
-rw-r--r-- 1 root root  789097 Сен 30 22:04 snortrules-pr-2.4.tar.gz

Устанвливаем пакет php-adodb-4.94-1.fc6.noarch.rpm:

/root/snort
[root@localhost snort]# rpm -ihv php-adodb-4.94-1.fc6.noarch.rpm
предупреждение: php-adodb-4.94-1.fc6.noarch.rpm: Заголовок V3 DSA signature: NOKEY, key ID 1ac70ce6
Подготовка...     ########################################### [100%]
   1:php-adodb              ########################################### [100%]

1.Теперь будем собирать из исходников snort rpm c поддержкой mysql

1.1 Распоковываем архив snort-2.8.0.2.tar.gz

/root/snort
[root@localhost snort]# tar -zxf base-1.3.9.tar.gz
[root@localhost snort]# ls | grep snort-2.8.0.2
snort-2.8.0.2
snort-2.8.0.2.tar.gz

1.2 Скопируем из каталога /snort-2.8.0.2/rpm/ файлы в:
snort.spec -------------->/usr/src/redhat/SPECS/
snort.logrotate ---------->/usr/src/redhat/SOURCES/
snort.sysconfig ---------->/usr/src/redhat/SOURCES/
snortd ------------------->/usr/src/redhat/SOURCES/
snort-2.8.0.2.tar.gz ----->/usr/src/redhat/SOURCES/

/root/snort
[root@localhost snort]# cd snort-2.8.0.2/rpm/
[root@localhost rpm]# cp snort.spec /usr/src/redhat/SPECS/
[root@localhost rpm]# cp snort.logrotate /usr/src/redhat/SOURCES/
[root@localhost rpm]# cp snort.sysconfig /usr/src/redhat/SOURCES/
[root@localhost rpm]# cp snortd /usr/src/redhat/SOURCES/
[root@localhost rpm]# cp /root/snort/snort-2.8.0.2.tar.gz /usr/src/redhat/SOURCES/snort-2.8.0.2.tar.gz

1.3 Правим фаил snort.spec. Везде где есть --without-mysql правим на --with-mysql и параметр %define mysql 0 меняем на 1

/usr/src/redhat/SPECS
[root@localhost SPECS]# cat snort.spec | grep with-mysql
        --with-mysql \
        --with-mysql \
        --with-mysql \
        --with-mysql \
        --with-mysql \
[root@localhost SPECS]# cat snort.spec | awk '$1~/%define/ && $2~/mysql/ && $3~/1/{print $1,$2,$3}'
%define mysql 1
%{?_with_mysql:%define mysql 1}
%define mysql 1

1.4 Собираем rpm:

/usr/src/redhat/SPECS
[root@localhost SPECS]# rpmbuild -ba snort.spec 
ошибка: Неудовлетворенные зависимости сборки:
        pcre-devel нужен для snort-2.8.0.2-1.i386
        mysql-devel нужен для snort-2.8.0.2-1.i386
 

Доставляем нужные пакеты(их можно взять с интернета или с диска Centos5.1) и пробуем снова:

/usr/src/redhat/SPECS
[root@localhost SPECS]# rpm -ihv /root/pcre-devel-6.6-1.1.i386.rpm
предупреждение: /root/pcre-devel-6.6-1.1.i386.rpm: Заголовок V3 DSA signature: NOKEY, key ID e8562897
Подготовка...     ########################################### [100%]
   1:pcre-devel             ########################################### [100%]

[root@localhost SPECS]# rpm -ihv /root/mysql-devel-5.0.22-2.1.0.1.i386.rpm предупреждение: /root/mysql-devel-5.0.22-2.1.0.1.i386.rpm: Заголовок V3 DSA signature: NOKEY, key ID e8562897 Подготовка... ########################################### [100%] 1:mysql-devel ########################################### [100%]
[root@localhost SPECS]# rpm -ihv /root/libpcap-devel-0.9.4-11.el5.i386.rpm предупреждение: /root/libpcap-devel-0.9.4-11.el5.i386.rpm: Заголовок V3 DSA signature: NOKEY, key ID e8562897 Подготовка... ########################################### [100%] 1:libpcap-devel ########################################### [100%]
[root@localhost snort]# rpm -ihv php-pdo-5.1.6-15.el5.i386.rpm предупреждение: php-pdo-5.1.6-15.el5.i386.rpm: Заголовок V3 DSA signature: NOKEY, key ID e8562897 Подготовка... ########################################### [100%] 1:php-pdo ########################################### [100%]
[root@localhost snort]# rpm -ihv php-mysql-5.1.6-15.el5.i386.rpm предупреждение: php-mysql-5.1.6-15.el5.i386.rpm: Заголовок V3 DSA signature: NOKEY, key ID e8562897 Подготовка... ########################################### [100%] 1:php-mysql ########################################### [100%]
[root@localhost snort]# rpm -ihv php-odbc-5.1.6-15.el5.i386.rpm предупреждение: php-odbc-5.1.6-15.el5.i386.rpm: Заголовок V3 DSA signature: NOKEY, key ID e8562897 Подготовка... ########################################### [100%] 1:php-odbc ########################################### [100%]
[root@localhost snort]# rpm -ihv php-gd-5.1.6-15.el5.i386.rpm предупреждение: php-gd-5.1.6-15.el5.i386.rpm: Заголовок V3 DSA signature: NOKEY, key ID e8562897 Подготовка... ########################################### [100%] 1:php-gd ########################################### [100%]
[root@localhost snort]# rpm -ihv php-pear-1.4.9-4.noarch.rpm предупреждение: php-pear-1.4.9-4.noarch.rpm: Заголовок V3 DSA signature: NOKEY, key ID e8562897 Подготовка... ########################################### [100%] 1:php-pear ########################################### [100%]
[root@localhost SPECS]# rpmbuild -ba snort.spec + umask 022 + cd /usr/src/redhat/BUILD + LANG=C + export LANG + unset DISPLAY + cd /usr/src/redhat/BUILD + rm -rf snort-2.8.0.2 + /bin/gzip -dc /usr/src/redhat/SOURCES/snort-2.8.0.2.tar.gz ........................ Записан: /usr/src/redhat/SRPMS/snort-2.8.0.2-1.src.rpm Записан: /usr/src/redhat/RPMS/i386/snort-2.8.0.2-1.i386.rpm Записан: /usr/src/redhat/RPMS/i386/snort-mysql-2.8.0.2-1.i386.rpm Записан: /usr/src/redhat/RPMS/i386/snort-debuginfo-2.8.0.2-1.i386.rpm Выполняется(%clean): /bin/sh -e /var/tmp/rpm-tmp.79924 + umask 022 + cd /usr/src/redhat/BUILD + cd snort-2.8.0.2 + /bin/rm -rf /var/tmp/snort-2.8.0.2-1-root-root + exit 0

1.4 Устанавливаем полученные rpm:

/usr/src/redhat/SPECS
[root@localhost i386]# cd /usr/src/redhat/RPMS/i386
[root@localhost i386]# ls -l
итого 5264
-rw-r--r-- 1 root root 1952381 Мар 25 16:38 snort-2.8.0.2-1.i386.rpm
-rw-r--r-- 1 root root 2928154 Мар 25 16:38 snort-debuginfo-2.8.0.2-1.i386.rpm
-rw-r--r-- 1 root root  483076 Мар 25 16:38 snort-mysql-2.8.0.2-1.i386.rpm

[root@localhost i386]# rpm -ihv *.rpm Подготовка... ########################################### [100%] 1:snort ########################################### [ 33%] 2:snort-debuginfo ########################################### [ 67%] 3:snort-mysql ########################################### [100%]


Настраиваем mysql и snort

1 Меняем пароль root mysql на 123456:

/usr/src/redhat/SPECS
[root@localhost ~]# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8 to server version: 5.0.22

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
Database changed mysql> UPDATE user SET PASSWORD=NULL WHERE USER='root'; Query OK, 0 rows affected, 2 warnings (0.04 sec) Rows matched: 2 Changed: 0 Warnings: 2
mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec)
mysql> exit Bye [root@localhost ~]# mysql -u root; Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 to server version: 5.0.22
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
Database changed mysql> UPDATE user SET Password=PASSWORD('123456') WHERE User='root'; Query OK, 2 rows affected (0.01 sec) Rows matched: 2 Changed: 2 Warnings: 0
mysql> quit Bye
[root@localhost ~]# service mysqld restart Останавливается MySQL: [ OK ] Запускается MySQL: [ OK ]

1.1 Настраиваем mysql:
создаем базу snort
импортируем туда таблицы из файла create_mysql

/usr/src/redhat/SPECS
[root@localhost i386]# find /root/snort -name "create_mysql"
/root/snort/snort-2.8.0.2/schemas/create_mysql

[root@localhost i386]# mysql -u root -p123456 -Bse "create database snort;" [root@localhost i386]# mysql -u root -p123456 snort < /root/snort/snort-2.8.0.2/schemas/create_mysql [root@localhost ~]# mysql -u root -p123456 -Bse "use snort;show tables;" data detail encoding event icmphdr iphdr opt reference reference_system schema sensor sig_class sig_reference signature tcphdr udphdr

2 Настраиваем snort:
распоковываем snortrules-pr-2.4.tar.gz
полученные катологи копируем в /etc/snort

/usr/src/redhat/SPECS
[root@localhost snort]# tar -zxf snortrules-pr-2.4.tar.gz

[root@localhost snort]# cp -r doc/ /etc/snort/ [root@localhost snort]# cp -r rules/ /etc/snort/

Перейдите в каталог /etc/snort и отредактируйте файл snort.conf добавив/изменив следующие строки.
output database: log, mysql, user=root password=123456 dbname=snort host=localhost
var RULE_PATH /etc/snort/rules

Перейдите в каталог /etc/snort/rules и отредактируйте фаил web-misc.rules закоментируйте в нем строки 97, 98, 452
/etc/snort/rules
#alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"WEB-MISC ///cgi-bin access"; flow:to_server,established;
#alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"WEB-MISC /cgi-bin/// access"; flow:to_server,established;
#alert tcp $EXTERNAL_NET any -> $HOME_NET 8090 (msg:"WEB-MISC TrackerCam ComGetLogFile.php3 log information disclosure"; 

3 Запускаем snort:

/etc/snort/
[root@localhost snort]# /usr/sbin/snort -D -i eth0 -u root -g root -c /etc/snort/snort.conf 

.......................................... Initializing Network Interface eth0 Decoding Ethernet on interface eth0 database: compiled support for ( mysql ) database: configured to use mysql database: user = root database: password is set database: database name = snort database: host = localhost database: sensor name = 192.168.50.175 database: sensor id = 1 database: schema version = 107 database: using the "log" facility
[ Port Based Pattern Matching Memory ] +-[AC-BNFA Search Info Summary]------------------------------ | Instances : 187 | Patterns : 11444 | Pattern Chars : 97540 | Num States : 52756 | Num Match States : 7560 | Memory : 1.40Mbytes | Patterns : 0.31M | Match Lists : 0.30M | Transitions : 0.77M +-------------------------------------------------
.........................................

4 Проверяем общение с mysql: как видно данные в таблицу попадают

/etc/snort/
[root@localhost snort]# mysql -u root -p123456
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8 to server version: 5.0.22

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use snort; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
Database changed mysql> select * from event; +-----+-----+-----------+---------------------+ | sid | cid | signature | timestamp | +-----+-----+-----------+---------------------+ | 1 | 1 | 1 | 2008-03-25 17:30:10 | | 1 | 2 | 1 | 2008-03-25 17:30:10 | | 1 | 3 | 1 | 2008-03-25 17:30:11 | | 1 | 4 | 1 | 2008-03-25 17:30:11 | | 1 | 5 | 1 | 2008-03-25 17:30:11 | | 1 | 6 | 1 | 2008-03-25 17:30:11 | | 1 | 7 | 1 | 2008-03-25 17:30:11 | | 1 | 8 | 1 | 2008-03-25 17:30:11 | | 1 | 9 | 1 | 2008-03-25 17:30:12 | | 1 | 10 | 1 | 2008-03-25 17:30:12 | | 1 | 11 | 1 | 2008-03-25 17:30:12 | | 1 | 12 | 1 | 2008-03-25 17:30:12 | | 1 | 13 | 1 | 2008-03-25 17:30:12 | | 1 | 14 | 1 | 2008-03-25 17:30:12 | | 1 | 15 | 1 | 2008-03-25 17:30:13 | | 1 | 16 | 1 | 2008-03-25 17:30:13 | | 1 | 17 | 1 | 2008-03-25 17:30:13 | | 1 | 18 | 1 | 2008-03-25 17:30:13 | | 1 | 19 | 1 | 2008-03-25 17:31:33 | | 1 | 20 | 1 | 2008-03-25 17:31:33 | | 1 | 21 | 1 | 2008-03-25 17:34:46 | | 1 | 22 | 1 | 2008-03-25 17:34:46 | +-----+-----+-----------+---------------------+ 22 rows in set (0.00 sec)
mysql>



Настраиваем Base

1 Подготавливаем админку
распоковываем base-1.3.9.tar.gz
полученный католог копируем в /var/www/html

/root/snort
[root@localhost snort]# tar -zxf base-1.3.9.tar.gz
[root@localhost snort]# cp -r base-1.3.9 /var/www/html/
[root@localhost snort]# cd /var/www/html/
[root@localhost html]# mv base-1.3.9/ base
[root@localhost html]# chmod -R 770 base/
[root@localhost html]# chown -R root:apache base/

2 Подготавливаем Apache
создаем фаил snort.conf в каталоге /etc/httpd/conf.d/
запускаем httpd

/etc/httpd/conf.d/
[root@localhost conf.d]# cat snort.conf
Alias /snort /var/www/html/base
<Directory /var/www/html/base>
</Directory>

[root@localhost conf.d]# service httpd start Запускается httpd: [ OK ]

3 Связываем base с mysql
Пишем в браузере http://192.168.50.175/snort и Нажимаем Continue

3.1
Выбираем язык ------------------------> russian
Пишем путь к adodb у меня он такой --> /usr/share/php/adodb
Жмем отправить запрос

3.2
тип БД ------------------>MySQL:
Database name -----------> snort
Database host -----------> localhost
Database port -----------> 3306
Database User Name ------> root
Database User Password --> 123456
Жмем отправить запрос


3.3
Если нужен пароль ставим галочку в "Use Authentication System" и задаем его
Жмем отправить запрос

3.4
Жмем Create BASE AG

3.5
Ну и все переходим на step 5

3.6
Ну и все

4 Решение некоторой проблемы
Так база mysql очень быстро забивается от этого начинает сильно тормозить base, но мне snort нужен только в реальном времени(вчерашние события меня не интересуют), пишем скрипт snort_restart и ставим в cron на выполнение один раз в сутки, но после его выполнения придется повторять шаги 3.4, 3.5, 3.6

/var/www/html/traf_inza/snort
[root@localhost snort]# ls
create_mysql  snort_restart

[root@localhost snort]# cat snort_restart killall -SIGKILL snort mysql -u root -p123456 -Bse "drop database snort;" mysql -u root -p123456 -Bse "create database snort;" mysql -u root -p123456 snort < /var/www/html/traf_inza/snort/create_mysql /usr/sbin/snort -D -i eth0 -u root -g root -c /etc/snort/snort.conf