构建简易Snort网络入侵检测系统(NIDS)
TsengYia#126.com 2008.11.16
建立基于入侵特征规则库的SNORT NIDS系统。
###########################################################################################
系统环境:
Red Hat Enterprise Linux (2.6.18-8.el5)
软件环境:
◇ RHEL5系统自带的rpm包(多数默认已有,带“[*]”标记的可能需要额外安装):
httpd-2.2.3-6.el5
mysql-5.0.22-2.1
mysql-server-5.0.22-2.1
mysql-connector-odbc-3.51.12-2.2
mysql-devel-5.0.22-2.1 [*]
php-mysql-5.1.6-5.el5 [*]
php-5.1.6-5.el5
php-common-5.1.6-5.el5
php-pdo-5.1.6-5.el5 [*]
php-cli-5.1.6-5.el5
php-gd-5.1.6-5.el5 [*]
libpcap-0.9.4-8.1
libpcap-devel-0.9.4-8.1 [*]
pcre-6.6-1.1
pcre-devel-6.6-1.1 [*]
◇ 下载的软件包(保存到/dl_pkgs/目录):
snort主程序
snort规则包(未注册用户版)
snort规则包(注册用户版,需要注册为网站用户)
adodb工具(优化数据库连接性能的PHP扩展)
用于base数据绘图的相关插件:
###########################################################################################
一、安装相关rpm软件及配置AMP环境
1、安装(过程略)
2、配置、启动httpd、mysqld
均按默认配置(过程略)。
shell> service httpd start
shell> service mysqld start
shell> chkconfig httpd on
shell> chkconfig mysqld on
二、配置并启动snort进程
1、编译安装snort
shell> useradd -d /etc/snort -s /sbin/nologin snort
shell> mkdir -p /var/log/snort/
shell> chown snort /var/log/snort/
shell> cd /dl_pkgs/
shell> tar zxvf snort-2.8.3.1.tar.gz
shell> cd snort-2.8.3.1
shell> ./configure --with-mysql
shell> make && make install
2、安装规则文件(已包含etc/配置、doc/手册)
shell> tar zxvf /dl_pkgs/snortrules-snapshot-2.8.tar.gz -C /etc/snort/
#//关于Snort rules的具体应用,请参考其他资料。
3、修改snort.conf配置文件
shell> cd /etc/snort/etc/
shell> cp snort.conf snort.conf.bak
shell> vi snort.conf
var HOME_NET [192.168.0.0/24,192.168.1.0/24,10.1.1.0/24]
var EXTERNAL !$HOME_NET
var RULE_PATH ../rules
output database: log, mysql, user=snort password=secret dbname=snort_log host=localhost
#//如果用内部主机做入侵测试,HOME_NET、EXTERNAL变量可以先不要修改
4、建立snort_log数据库
shell> mysql -u root -p
mysql> create database snort_log;
mysql> grant all on snort_log.* to identified by 'secret';
mysql> quit
shell> mysql -u snort -p snort_log < /dl_pkgs/snort-2.8.3.1/schemas/create_mysql
5、启动snort
shell> snort -dD -u snort -g snort -c /etc/snort/etc/snort.conf
其中,-D选项表示以daemon模式启动后置于后台,
若ps aux | grep snort发现未能正常启动,请去掉-D选项运行snort,根据提示信息进行排错。
[带规则启动snort时,若使用的是2.4版规则包(未注册用户版),可能会出现报错,根据提示将web-misc.rules文件中的对应行(97/98/452)注释掉即可]
附:snort工具的几个常用选项
-v 显示调试信息,将数据包输出到终端(作为IDS系统工作时不要使用该选项)
-c 指定rules规则集文件的位置
-d 输出应用层数据
-e 输出数据链路层数据
-l 将数据记录到日志文件(可以指定保存日志的目录,缺省为/var/log/snort/)
-b 使用tcpdump格式记录数据
-A 指定告警模式(fast,full,none,unsock),不同的模式决定了告警信息的详细程度
-T 运行自检(在使用-D运行daemon模式前,可以用于检查命令参数、配置文件、规则集等是否正常)
-D 以daemon模式在后台运行
-u 指定运行用户(初始化完成后切换为该用户)
-g 指定运行组
----> 为了更方便控制snort的运行,可以建立一个snort服务脚本
shell> vi /etc/init.d/snort
#!/bin/sh
# chkconfig: - 99 99
# description: Snort NIDS DAEMON
PROG=/usr/local/bin/snort
CONF=/etc/snort/etc/snort.conf
ARGS="-dD -u snort -g snort"
case "$1" in
start)
$PROG $ARGS -c $CONF
;;
stop)
killall -9 snort
;;
restart)
killall -9 snort
$PROG $ARGS -c $CONF
;;
*)
echo $"Usage: $0 "
exit 1
;;
esac
shell> chmod +x /etc/init.d/snort
shell> chkconfig --add snort
shell> chkconfig --level 2345 snort on
shell> service snort start
三、配置base+adodb的web前端
1、安装php-pear及相关插件
包括php-pear及下载的Image、Mail、Numbers等插件:
Image_Canvas-0.3.1.tar、Image_Color-1.0.2.tar、Image_Graph-0.7.2.tar
Mail-1.1.14.tar、Mail_Mime-1.5.2.tar、Mail_mimeDecode-1.5.0.tar
Numbers_Roman-1.0.2.tar、Numbers_Words-0.15.0.tar
shell> rpm -ivh /dl_pkgs/php-pear-1.7.2-2.fc10.noarch.rpm
shell> cd /dl_pkgs/pear-plugin/
shell> pear install *.tar
2、解压adodb、base源码包
shell> cd /var/www/html/
shell> tar zxvf /dl_pkgs/adodb506a
shell> tar zxvf /dl_pkgs/base-1.4.1-tar.gz
shell> mv base-php4 base
3、配置base
shell> cd /var/www/html/base/
shell> cp base_conf.php.dist base_conf.php
shell> vi base_conf.php #//根据实际情况修改相关变量
$BASE_Language = 'simplified_chinese'; #//为了保持兼容性,建议使用默认的英文(English)
$BASE_urlpath = '/base';
$DBlib_path = '/var/www/html/adodb5';
$DBtype = 'mysql';
$alert_dbname = 'snort_log';
$alert_host = '3306';
$alert_user = 'snort';
$alert_password = 'secret';
$archive_exists = 0;
4、初始化安装
在浏览器中访问 ,根据提示进行“安装页面(setup)”-->“Create BASE AG”。
5、添加管理员用户(可选)
1) 可以在 界面中,单击下方的“管理(Administration)”链接,新建立一个“admin”用户。
2) 修改/var/www/html/base/base_conf.php文件,打开Auth_System开关,即“$Use_Auth_System = 1;”。
3) 在浏览器中重新访问 ,则需要使用admin用户登录。
四、测试
1) 修改snort.conf文件,添加一条规则
shell> vi /etc/snort/etc/snort.conf
alert tcp any any -> any any (flags:S; msg:"SYN Packets Alert!"; sid:20081122;)
//该规则的告警条件过于严格,仅用于测试,完毕后请即删除)
2) 重新启动snort,并跟踪告警日志
shell> service snort restart
shell> tail -f /var/log/snort/alert
3) 在其他主机中,使用nmap等工具对snort服务器进行sync扫描,如“nmap -sS Server_IP”,观察上一步中alert日志的变化。
4) 刷新 页面,查看报警信息,点击右侧的“Graph Alert Data”,可以设置查看告警图片(使用中文界面时,图片可能无法显示)。
###########################################################################################
关于Snort中文手册可以参考:
阅读(1076) | 评论(0) | 转发(0) |