Chinaunix首页 | 论坛 | 博客
  • 博客访问: 156070
  • 博文数量: 61
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 345
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-29 10:46
文章分类

全部博文(61)

文章存档

2012年(61)

我的朋友

分类:

2012-05-23 11:26:00

构建简易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规则包(注册用户版,需要注册为网站用户)
           
        php-pear程序包(PHP应用代码库工具,PHP Extension and Application Repository)
            ftp://194.199.20.114/linux/fedora/development/x86_64/os/Packages/php-pear-1.7.2-2.fc10.noarch.rpm
        adodb工具(优化数据库连接性能的PHP扩展)
           
        base工具(查询和分析snort告警信息的web前端)
            http://downloads.sourceforge.net/secureideas/base-1.4.1.tar.gz?modtime=1217804205&big_mirror=0
            用于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中文手册可以参考:
阅读(1253) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~