Snort入侵检测系统构建
Snort入侵检测系统构建
难度等级:中等
实验时长:200min
【实验目的】
通过本实验掌握snort入侵检测系统的搭建以及相关配置。
【实验环境】
Snort服务器登录信息:
用户名: college
密码: 360College
【实验原理】
搭建好Snort环境后,利用发包器,发送具有某种特征的数据包,检验规则的有效性。
实验步骤
预置环境说明:
OS为CentOS7.snort服务器已安装了daq、bison、 flex、libpcap、libdnet、ncurses、hwloc、luajit、pcre和zlib等工具插件以及mysql数据库。
***所有需要的软件,均在/home/IDS目录下。
一、snort安装
wget https://www.snort.org/downloads/archive/snort/snort-2.9.11.1.tar.gz
#tar xvf snort-2.9.11.1.tar.gz
#cd snort-2.9.11.1
#./configure --prefix=/usr/local/snort --enable-pthread --enable-gre --enable-mpls --enable-targetbased
#make && make install
#export PATH=$PATH:/usr/local/snort/bin
注意:
以上将snort安装到指定目录。从snort 2.3开始,不再支持mysql,因此,可采用barnyard2插件,将snort输出写入mysql数据库中。
验证 输入命令:#snort -V 出现一头小猪,并显示正确的版本号,说明snort已经安装成功。 注意:大写的-V。
二、建立数据库
首先建立mysql数据库:
1、下载barnyard2。
wget https://codeload.github.com/firnsy/barnyard2/zip/master 将下载的master文件,更名为master.zip。解压:unzip master.zip。 解压缩后,在barnyard2-master/schemas目录下,有一个create_mysql文件。
2、编辑它在文件开始处,加上如下两行:
create database snort;
use snort;
3、用下面的命令运行:
sudo service mysql start
mysql -u root -p < create_mysql
然后输入密码mysql,即可执行。
4、授权给snort用户
mysql> create user 'snort'@'localhost' identified by 'snort'; //创建snort用户 mysql> grant INSERT,SELECT,update on snort.* to snort@localhost; //授权给snort用户 mysql> flush privileges;
三、配置snort
(一)添加默认规则
1. cd snort-2.9.11.1/etc
2. sudo mkdir /etc/snort
3. cp * /etc/snort/
4. sudo tar -xvf /home/IDS/community-rules.tar -C /etc/snort/
5.在/etc/snort/目录下,创建rules目录。
sudo mkdir /etc/snort/rules sudo mv /etc/snort/community-rules /etc/snort/rules
在/etc/snort/rules/下添加black_list.rules、white_list.rules文件: sudo touch /etc/snort/rules/black_list.rules sudo touch /etc/snort/rules/white_list.rules
(二)配置Snort,添加自定义配置
修改Snort配置文件,用vi打开/etc/snort/snort.conf,修改如下: var HOME_NET 192.168.8.0/24 //本地主机所在网段 var EXTERNAL_NET !$HOME_NET //其他网段 var RULE_PATH /etc/snort/rules //规则文件所在目录
(三)设置snort输出插件
Snort输出设置在snort.conf文件的
#Step #6: Configure output plugins 如果输出到数据库,则添加或修改配置文件。 sudo vi /etc/snort/snort.conf: output unified2: filename snort.log, limit 128 //此处将数据输出到snort.log文件
(四)添加snort规则
Snort规则中snort.conf文件的
#7) Customize your rule set 部分下面进行配置。 include $RULE_PATH/local.rules local.rules规则文件可根据需要进行修改名称。
四、运行SNORT
1、启动snort:
cd ../snort/bin
snort --h //帮助,列出snort可用的各种选项 snort -c /etc/snort/snort.conf //指定配置文件启动 $sudo service mysql start snort -T -c /etc/snort/snort.conf
此处如果出现以下错误: /usr/local/lib/snort_dynamicrules 在配置文件snort.conf中,注释掉该行;或者建立/usr/local/lib/snort_dynamicrules文件夹。
2、错误解决:
(1)rpc_decode arguments:
Ports to decode RPC on: 111 32770 32771 32772 32773 32774 32775 32776 32777 32778 32779
alert_fragments: INACTIVE
alert_large_fragments: INACTIVE
alert_incomplete: INACTIVE
alert_multiple_requests: INACTIVE
ERROR size 1312 != 608 (0x520!=260) ERROR: Failed to initialize dynamic preprocessor: SF_SDF version 1.1.1 (-2) Fatal Error, Quitting.. 这个问题产生的原因是权限和归属问题,需要将动态预处理器指向有权限的文件夹。 修改snort.conf文件:
###################################################
#Step #4: Configure dynamic loaded libraries.
#For more information, see Snort Manual, Configuring Snort - Dynamic Modules
###################################################
#path to dynamic preprocessor libraries dynamicpreprocessor directory /usr/local/snort/lib/snort_dynamicpreprocessor/
#path to base preprocessor engine dynamicengine /usr/local/snort/lib/snort_dynamicengine/libsf_engine.so
#path to dynamic rules libraries
#dynamicdetection directory
#/usr/local/snort/lib/snort_dynamicrules
(2)错误:
[ Number of patterns truncated to 20 bytes: 323 ] pcap DAQ configured to passive. Acquiring network traffic from "eth0". Reload thread starting... Reload thread started, thread 0x7f1ed2879700 (28658) ERROR: Can't start DAQ (-1) - socket: Operation not permitted! Fatal Error, Quitting.. 权限不足,切换到root下;测试配置文件:
#snort -T -c /etc/snort/snort.conf
五、安装和配置Barnyard
前面已经下载Barnyard2-master。下载链接: wget https://codeload.github.com/firnsy/barnyard2/zip/master。
(一)编译安装
sudo yum -y install libtool //安装libtool,否则出现no libtoolize错误。
tar zxvf master.tar.gz
cd barnyard2-master
./autogen.sh //自动配置,完毕后,提示运行以下命令。
./configure --with-mysql --with-mysql-libraries=/usr/local/mysql/lib/ --with-mysql-includes=/usr/local/mysql/include 注意:在自己的环境中,需要核对库文件和头文件目录
$ sudo make //编译
$sudo make install //安装完毕
(二)配置用户组及目录
sudo groupadd snort
useradd snort –g snort //创建snort组、snort用户
sudo mkdir /var/log/snort /var/log/barnyard2
touch /var/log/snort/barnyard2.waldo
chown snort.snort /var/log/snort/barnyard2.waldo
sudo chown -R snort.snort /var/log/snort
sudo chown -R snort.snort /var/log/barnyard2 //创建日志目录,并授权
(三)配置输出参数
sudo cp /usr/local/etc/barnyard2.conf /etc/snort 修改: sudo vi /etc/snort/barnyard2.conf
1、找到 output alert_fast: stdout 改为:
output alert_fast
2、访问数据库设置
在database设置部分,找到mysql相关的,去掉注释符号#,并修改为: output database: alert, mysql, user=snort password= snort dbname=snort host=localhost
此处注意:空密码,必须写成‘’的形式。
3、修改barnyard2.conf添加传感器:
config interface: eth0 指定监听网卡(多网卡主机根据需要设置)。
重新运行:
sudo snort -u snort -g snort -c /etc/snort/snort.conf -D 再运行barnyard2: sudo barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /var/log/snort/barnyard2.waldo -g snort -u snort
没有出现错误,即可。
运行后,应该能看到sensor_name,user,database_name等配置参数。 并且,barnyard2等待新到来的数据。
4、测试与错误排除
错误1:进行make时,出现错误:
spo_database.h unkown type name my_bool we will handle it via api 解决: 在src文件夹下,打开spo_database.h文件,将my_bool类型修改为int类型,保存即可。 参考:https://blog.csdn.net/merisc/article/details/17078287
错误2:
Unable to open SID file '/etc/snort/sid-msg.map' 解决: 修改barnyard2.conf文件,指定sid文件路径为:/etc/snort/rules/sid-msg.map。
错误3:
ERROR: Unable to open SID file '/etc/snort/sid-msg.map' (No such file or directory) ERROR: [Barnyard2Init()], failed while processing [/etc/snort/sid-msg.map] Fatal Error, Quitting.. Barnyard2 exiting 出现以上错误,说明sid-msg.map文件不存在,修改为正确路径,或者利用create-sidmap.pl脚本重建。 重新运行。 如果sid-msg.map文件与规则不匹配,则删除snort数据库,重建数据库。然后,snort会自动重新建立sid文件。
小结
通过本次实验,能够了解snort入侵检测系统的搭建过程。在规则验证方面,可在相应的rules目录下放入自己编写的规则,然后加载,进行验证。