最近搭建Snort,踩了不少坑,终于找到了一篇靠谱的文章,CentOS6.6基于snort+barnyard2+base的 入侵检测系统的搭建,感谢这位作者的分享,以下是我按照文章步骤进行实验的笔记。
环境:Vmware+CentOS 6
snort+barnyard2+base
文件下载
备注:
- base:基于PHP,可以搜索、处理各种IDS、防火墙、网络监视工具生成的安全事件数据;
- libdnet:提供的简单、可移植的接口来操作底层网络,包括:网址操作、内核 arp(4) 缓存和 route(4) 表查找和操作、网络防火墙 (IP filter, ipfw, ipchains, pf, PktFilter, …)、网络接口查找和操作、IP tunnelling (BSD/Linux tun, Universal TUN/TAP device)、原始 IP包和以太网帧传输
yum install -y httpd
yum install -y php php-mysql php-mbstring php-mcrypt php-gd mcrypt libmcrypt libmcrypt-devel
php --version #查看php版本
yum install -y php-pear
pear upgrade pear
pear channel-update pear.php.net
pear install mail
pear install Image_Graph-alpha Image_Canvas-alpha Image_Color Numbers_Roman
pear install mail_mime
yum install -y mysql mysql-server mysql-devel
mysql --version #查看mysql版本
tar -zxvf adodb5.20.9.tar.gz -C /var/www/html
mv /var/www/html/adodb5 /var/www/html/adodb #重命名
tar -zxvf base-1.4.5.tar.gz -C /var/www/html
mv /var/www/html/base-1.4.5 /var/www/html/base
vi /etc/php.ini
error_reporting = E_ALL & ~E_NOTICE
chown -R apache:apache /var/www/html
chmod 755 /var/www/html/adodb
tar -zxvf barnyard2-1.9.tar.gz
service mysqld start #启动mysql
mysql -u root #使用root登录,默认不用密码
use mysql
update user set password=password('123456') where user='root'; #设置用户root的登录密码
create database snort;
grant create,select,update,insert,delete on snort.* to snort@localhost identified by '123456'; #创建名为snort、密码为123456的数据库用户并赋予名为snort数据库权限
exit #退出
mysql -u snort -p -Dsnort < /root/Desktop/snort/barnyard2-1.9/schemas/create_mysql #根据特定的格式创建数据库表
#进入mysql验证表是否创建成功
mysql -u root -p
123456 #密码
use snort;
show tables; #查看snort数据库中表是否创建成功,成功如图
service mysqld start #启动mysql
service httpd start #启动apache
chkconfig iptables off #关闭防火墙
(1)用浏览器打开127.0.0.1/base/setup/index.php
(2)选择【Continue】后,选择显示语言,设置adodb路径
(3)配置数据库,名称为snort,用户名密码是之前设置过的snort,123456
(4)设置admin用户名密码
(5)选择【Create BASE AG】
(6)成功会显示红色”successfully created”
(7)选择【step 5】,成功安装
yum install –y gcc flex bison zlib libpcap tcpdump gcc-c++ pcre* zlib* libdnet libdnet-devel
tar -zxvf libdnet-1.12.tgz
cd libdnet-1.12
./configure
make
make install
tar -zxvf libpcap-1.0.0.tar.gz
cd libpcap-1.0.0
./configure
make
make install
tar -zxvf daq-2.0.4.tar.gz
cd daq-2.0.4
./configure
make
make install
tar -zxvf snort-2.9.7.0.tar.gz
cd snort-2.9.7.0
./configure
make
make install
mkdir /etc/snort
mkdir /var/log/snort #存放日志文件
mkdir /usr/local/lib/snort_dynamicrules
mkdir /etc/snort/rules #存放规则
touch /etc/snort/rules/white_list.rules /etc/snort/rules/black_list.rules #黑白名单
cp /root/Desktop/snort/snort-2.9.7.0/etc/gen-msg.map threshold.conf classification.config reference.config unicode.map snort.conf /etc/snort/
#编辑配置文件
vi /etc/snort/snort.conf
#修改路径
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules
var WHITE_LIST_PATH /etc/snort/rules
var BLACK_LIST_PATH /etc/snort/rules
#设置log目录
config logdir:/var/log/snort
#配置输出插件
output unified2:filename snort.log,limit 128
tar -zxvf snortrules-snapshot-2970.tar.gz -C /etc/snort/
cp /etc/snort/etc/sid-msg.map /etc/snort/
snort -T -i eth1 -c /etc/snort/snort.conf
参数解释:
-T 指定启动模式:测试
-i 指定网络接口
-c 指定配置文件
#之前解压过barnyard2,所以直接cd到解压后的目录
cd root/Desktop/snort/barnyard2-1.9
./configure --with-mysql --with-mysql-libraries=/usr/lib64/mysql/
make
make install
mkdir /var/log/barnyard2
touch /var/log/snort/barnyard2.waldo
cp /root/Desktop/snort/barnyard2-1.9/etc/barnyard2.conf /etc/snort
#修改配置文件
vi /etc/snort/barnyard2.conf
config logdir:/var/log/barnyard2
config hostname:localhost
config interface:eth0
config waldo_file:/var/log/snort/barnyard.waldo
output database: log, mysql, user=snort password=123456 dbname=snort host=localhost
barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /var/log/snort/barnyard2.waldo
参数解释:
-c 指定配置文件
-d 指定log目录
-f 指定log文件
-w 指定waldo文件
出现下图”waiting for new data”,说明配置成功
vi /etc/snort/rules/local.rules
#添加一条检查ping包的规则
alert icmp any any -> any any (msg: "IcmP Packet detected";sid:1000001;)
规则注解:
alert:触发规则后做出的动作
icmp:协议类型
第一个any:源IP(网段),any表示任意
第二个any:源端口,any表示任意
“>”:表示方向
第三个any:目标IP(网段),any表示任意
第四个any:目标端口,any表示任意
Msg字符:告警名称
Sid:id号,个人编写的规则使用1,000,000以上
注意空格
service mysqld start
service httpd start
chkconfig iptables off
barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /var/log/snort/barnyard2.waldo -D
snort -c /etc/snort/snort.conf -i eth0 –D
#-D选项用来让命令转入后台运行
向安装了Snort的机器的IP发送ping包,刷新base页面,可以看到ICMP告警
tail /var/log/snort/alert #查看告警日志
手动停止IDS命令:
killall -9 snort barnyard2
http://www.secbox.cn/skill/8796.html
http://blog.csdn.net/u013816144/article/details/53729153
http://www.cnblogs.com/shadowturtle/archive/2012/11/16/2773445.html