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目录下放入自己编写的规则,然后加载,进行验证。

posted @ 2020-11-17 20:48  码小农的幸福生活  阅读(1542)  评论(0编辑  收藏  举报