Исходный данные:
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@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@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@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@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
[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:
[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) и пробуем снова:
[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:
[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:
[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
[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
[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/
#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:
[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: как видно данные в таблицу попадают
[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@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
[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
[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