Q011 如何将Snort报警存入MySQL数据库?
将Snort报警存入MySQL数据库需要如下几个步骤。
步骤1.安装MySQL数据库及PHP扩展。
#yum install -y mysql-server mysql-devel php-mysql php-pear php-gd libtool php-imap php-ldap php-mbstring php-odbc php-pear php-xml php-pecl-apc #chkconfig --level 235 mysqld on //将MySQL服务设置为在运行级别为2、3、5时都是开启状态 #/etc/init.d/mysqld start
步骤2.为数据库管理员root赋予密码。
#/usr/bin/mysqladmin -u root password '123456'
注意,root用户登录phpMyAdmin时,同样使用这个密码。
步骤3.创建Snort数据库并设定读取权限。
#mysql -u root -p
输入步骤2中设置的密码“123456”。
mysql>create database snort; mysql>use snort; mysql>create user 'snort'@'localhost' IDENTIFIED BY '123456';
在以上命令中,“123456”是MySQL中用户Snort的密码。
接着创建名为snort、密码为“123456”的数据库用户,并赋予名为“snort”的数据库权限(先解压barnyard2-1.9.tar.gz包)。
mysql>grant create,select,update,insert,delete on snort.* to snort@localhost identified by '123456'; mysql>set password for ‘snort’@’localhost’=password('123456');//为用户snort设置访问密码 mysql>source /usr/local/src/barnyard2-1.9/schemas/create_mysql; //该命令不可重复输入 mysql>show tables; mysql>flush privileges; //刷新数据库权限 mysql>exit
注意:先解压barnyard2-2-1.13压缩包;在执行前确保Snort库被选中;barnyard2-2-1.13所在路径要正确(使用绝对路径)。
步骤4.安装和配置Barnyard2。
Barnyard2的作用是读取Snort产生的二进制事件文件并存储到MySQL中。Snort的配置文件自身含有插件,它允许将Snort报警记录到MySQL中,但这样一来,系统数据会激增。当IDS系统检测到攻击行为时,它会用INSERT语句向数据库中写入数据,导致更新非常慢。所以如果直接将Snort输出到数据库,在数据量增大时这种方案的效率并不高,故使用外部代理将报警输出到Barnyard2。
·源码包安装。
#cd /usr/local/src/ #tar zxvf barnyard2-1.9.tar.gz #cd barnyard2-1.9/ #./configure --with-mysql --with-mysql-libraries=/usr/lib64/mysql //此处配置参数很重要,切勿出错
#make //见到如下内容后,才可继续安装
只有确保上面关键两步不出错,才能继续安装。
#make install
·配置Barnyard2。
首先在/var/log/中创建目录Barnyard2和文件barnyard2.waldo。
#mkdir /var/log/barnyard2 #touch /var/log/snort/barnyard2.waldo
·设置文件barnyard2.waldo的属主。
#chown snort.snort /var/log/snort/barnyard2.waldo
·复制Barnyard2的配置文件。
与Snort配置类似,Barnyard的初始化配置也是通过复制已有的.conf配置文件来完成。因此先将Barnyard2的配置模板文件复制到/etc/snort目录下。
#cp /usr/local/src/barnyard2-1.9/etc/barnyard2.conf /etc/snort
·修改配置文件barnyard2.conf。
#vi /etc/snort/barnyard2.conf
找到对应行并将其修改成如下内容:
第44行config logdir:/var/log/barnyard2 //该目录权限为snort.snort 第56行 config hostname: localhost 第57行 config interface: eth0 第131行 config waldo_file:/var/log/snort/barnyard2.waldo
修改完成之后保存并退出。
下面这条语句用来设置数据库访问权限,其中定义了用户名为snort,密码为123456,数据库名称为snort,主机名为localhost。
第318行 output database: log,mysql,user=snort password=123456 dbname=snort host=localhost
编辑完成后保存退出。
·修改目录的属主。
#chown snort.snort /var/log/barnyard2
·启动Snort和Barnyard2进行联合测试。
#snort -q -u snort -g snort -c /etc/snort/snort.conf -i eth0 –D
·测试Barnyard2。
#barnyard2 –c /etc/snort/barnyard2.crnf –d/var/log/snort/ -f snort.log –w /var/log/snort/barnyard2 waldo -g snort –u snort -T
此时不会看到输出结果,因为程序在后台运行(“-D”参数表示后台运行)。
同样ping主机,继续执行以下命令。
#barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort/ -f snort.log –w /var/log/snort/barnyard2.waldo
命令参数的解释如下所示。
·-c:该选项指定Barnyard配置文件的路径。该参数为必选项。
·-d:指定Unified格式文件的路径,这里指定为/var/log/snort/,所有Unified文件必须放在该目录下。该参数为必选项。
·-f:该选项指定Barnyard以连续方式运行时的Unified文件名。Snort在每次生成的Snort Unified文件后面都加了一个UNIX时间戳,去掉时间戳后缀就是文件名。
·-w:该选项打开检验功能,告诉Barnyard检验文件名(也称为waldo文件)。该文件用于记录文件中最近处理的报警。如果不使用waldo文件,则Barnyard必须完整地载入一个日志文件,该参数的作用是将报警信息传送至入侵数据库。
如果在以上显示中发现最后一行出现“Waiting for new spool file”,则表示上面的操作成功。在/var/log/snort目录下有一些snort.log+times_stamp的二进制文件,这些文件由Snort输出插件所生成。
步骤5.使用下述命令查询报警信息是否存入数据库。
#mysql -u snort -p -D snort -e "select count(*) from event"
实际操作效果如下所示。
如果在count(*)下方没有数字,则表示报警信息没有存入数据库,那么需要从头检查配置过程。参数含义如下。
[root@localhost ~]# barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort/ -f snort.log -w /var/log/snort/barnyard2.waldo -g snort -u snort Running in Continuous mode --== Initializing Barnyard2 ==-- Initializing Input Plugins! Initializing Output Plugins! Parsing config file "/etc/snort/barnyard2.conf" Log directory = /var/log/barnyard2 database: compiled support for (mysql) database: configured to use mysql database: schema version = 107 database: host = localhost database: user = snort database: database name = snort database: sensor name = localhost:eth0 database: sensor id = 1 database: sensor cid = 1 database: data encoding = hex database: detail level = full database: ignore_bpf = no database: using the "log" facility --== Initialization Complete ==-- ______ -*> Barnyard2 <*- / ,,_ \ Version 2.1.9 (Build 263) |o" )~| By the SecurixLive.com Team: http://www.securixlive.com/about.php + '''' + (C) Copyright 2008-2010 SecurixLive. Snort by Martin Roesch & The Snort Team: http://www.snort.org/team.html (C) Copyright 1998-2007 Sourcefire Inc., et al. WARNING: Ignoring corrupt/truncated waldofile '/var/log/snort/barnyard2.waldo' Waiting for new spool file