构建小型的入侵检测系统(FreeBSD)

1.Snort简介
Snort是一个强大的轻量级的网络入侵检测系统。它具有实时数据流量分析和日志IP网络数据包的能力,能够进行协议分析,对内容进行搜索/匹配。它能够检测各种不同的攻击方式,对攻击进行实时报警。更重要的它是免费的,在中小企业中很好的适应网络环境,不需要太多的资源和资金就能建立起一个优秀的IDS系统。

2.系统平台
安装平台选择FreeBSD4.9,本身足够安全,坚固;特性喜欢PORTS安装起来少了不少麻烦。
Hawk#uname-a
FreeBSDhawk.the94.9-RELEASEFreeBSD4.9-RELEASE

3.需要软件
Mysql-server-3.23.58http://mysql.secsup.org
Snort2.0.6http://www.snort.org
Apache-2.0.47http://www.apache.org
mod_php4-4.3.3,1http://www.php.net
adodb-3.60_1http://phplens.com
acid-0.9.6b23http://acidlab.sourceforge.net
Jpgraph-1.12.2http://jpgraph.techuk.com

4.安装SNORT
1)安装mysql
hawk#cd/usr/ports/databases/mysql323-server
hawk#makeinstall
2)安装apache
hawk#cd/usr/ports/www/apache2/
hawk#makeinstall
3)安装PHP
hawk#cd/usr/ports/www/mod_php4
hawk#makeinstall
4)配置APACHE
编辑httpd.conf(/usr/local/etc/apache2)
DocumentRoot"/usr/local/www/snort"
LoadModulephp4_modulemodules/libphp4.so
AddTypeapplication/x-httpd-php.php
5)安装SNORT
hawk#mkdir/etc/snort
hawk#mkdir/var/log/snort
hawk#tar-zxvfsnort-2.0.6.tar.gz
hawk#mvsnort-2.0.6/etc/snort
hawk#./configure--with-mysql

hawk#make
hawk#makeinstall
hawk#cd/etc/snort/etc
hawk#cpsnort.conf/etc/snort/
hawk#cp*.config/etc/snort

6)安装SNORT的规则库
可以在SNORT站点上下载标准规则库,基本够用了。2.0.0.x的SNORT使用STABLErules,而2.0.1.x的SNORT使用CURRENTrules。
hawk#mkdir/etc/snort/etc
hawk#wgethttp://www.snort.org/dl/rules/snortrules-stable.tar.gz
hawk#tarxvfzsnortrules-stable.tar.gz

7)配置SNORT
修改snort.conf(/etc/snort/snort.conf)
varHOME_NET172.18.0.0/22(修改为你的内部网网络地址)
varEXTERNAL_NETany#外网,关键字any这里表示HOME_NET之外的所有地址
varDNS_SERVERS202.197.32.12#DNS服务器
varRULE_PATH../rules修改为varRULE_PATH/etc/snort/etc/rules
改变记录日志数据库:
outputdatabase:log,mysql,user=rootpassword=your_passworddbname=snorthost=localhost

8)设置snort启动
hawk#vi/usr/local/etc/rc.d/snort.sh
#!/bin/sh
case"$1"in
start)
/usr/local/bin/snort-Dqc/etc/snort/snort.conf>;/dev/null&&echo-n"snort"
;;
stop)
kill`cat/var/run/snort_*.pid`
;;
restart)
killall-1`cat/var/run/snort_*.pid`
;;
*)
echo"Usage:snort.sh[start|stop|restart]"
;;
esac

不过建议是手动启动,我在使用中发现自动启动有一点问题,等系统完全启动完了再启动SNORT就一切正常。

9)在mysql中建立数据库
先建立SNORT使用的数据库
mysql>;createdatabasesnort;
mysql>;grantINSERT,SELECTonroot.*tosnort@localhost;
mysql>;quit;
进入snort安装目录:
mysql-p<./contrib/create_mysqlsnort
>;Enterpassword:
安装DB表:(在contrib目录)
zcatsnortdb-extra.gz|mysql-psnort
>;Enterpassword:

安装完成检查一下表的显示
mysql>;showdatabases;
------------
|Database
------------
|mysql
|snort
|test
------------
3rowsinset(0.00sec)
mysql>;usesnort;
mysql>;showtables;将会有这些:
------------------
|Tables_in_snort|
------------------
|data
|detail
|encoding
|event
|flags
|icmphdr
|iphdr
|opt
|protocols
|reference
|reference_system
|schema
|sensor
|services
|sig_class
|sig_reference
|signature
|tcphdr
|udphdr
------------------
19rowsinset(0.00sec)
mysql>;exit

5.安装配置Web接口
1)先安装GD库
hawk#cd/usr/ports/graphics/gd
hawk#makeinstall
2)安装jpgraph-1.12.2
hawk#cd/usr/ports/graphics/jpgraph
hawk#makeinstall
3)安装adodb-3.60_1
hawk#cd/usr/ports/databases/adodb
hawk#makeinstall
4)安装acid-0.9.6b23
hawk#cd/usr/ports/security/acid
hawk#makeinstall
5)配置acid
hawk#mv/usr/local/www/data.default/php/adodb/usr/local/www/snort/
hawk#mv/usr/local/www/data.default/php/acid/usr/local/www/snort/
编辑acid_conf.php,修改相关配置如下:
$DBlib_path="/usr/local/www/snort/adodb";
/*Thetypeofunderlyingalertdatabase
*
*MySQL:"mysql"
*PostgresSQL:"postgres"
*MSSQLServer:"mssql"
*/
$DBtype="mysql";
/*AlertDBconnectionparameters
*-$alert_dbname:MySQLdatabasenameofSnortalertDB
*-$alert_host:hostonwhichtheDBisstored
*-$alert_port:portonwhichtoaccesstheDB
*-$alert_user:logintothedatabasewiththisuser
*-$alert_password:passwordoftheDBuser
*
*ThisinformationcanbegleanedfromtheSnortdatabase
*outputpluginconfiguration.
*/
$alert_dbname="snort";
$alert_host="localhost";
$alert_port="";
$alert_user="root";
$alert_password="Your_Password";
/*ArchiveDBconnectionparameters*/
$archive_dbname="snort";
$archive_host="localhost";
$archive_port="";
$archive_user="root";
$archive_password="Your_Password";

6)可以进入进入web界面:
http://172.18.5.198/acid/acid_main.php
点"SetupPage"链接->;CreateAcidAG
然后访问
http://172.18.5.198/acid将会看到ACID界面。

6.最后测试
重新启动系统进入系统,启动SNORT。然后用NMAP,XSCAN,SSS来扫描一下,看看是不是有结果了。我用的是Retina。下面是成功后的界面。


7.SNORT规则编写简介
一条Snort规则可以分为前后两个部分,规则头和后面的选项部分。规则头包含有匹配后的动作命令、协议类型、以及选择流量的四元组(源目的IP及源目的端口)。规则的选项部分是由一个或几个选项的符合,所有主要选项之间是与的关系。选项之间可能有一定的依赖关系,选项主要可以分为四类,第一类是数据包相关各种特征的描述选项,比如:content、fla
gs、dsize、ttl等;第二类是规则本身相关一些说明选项,比如:reference、sid、classtype、priority等;第三类是规则匹配后的动作选项,比如:msg、resp、react、session、logto、tag等;第四类是选项是对某些选项的修饰,比如从属于content的nocase、offset、depth、regex等。由于snort的规则语言语法非常简单,所以可以对新发现的攻击作出快速的反应,迅速开发新的snort规则。编写新的规则,最重要的是知道新攻击的特征码。要得到一个新的攻击的特征码,一般的方法就是进行实际的测试。对一个测试网络进行攻击,使用snort记录在攻击主机和测试网络之间的数据流。然后,对记录的数据进行分析得到其唯一的特征码,最后把得到的特征码加入到规则中。下面是IMAP缓冲区溢出攻击被记录下的数据包:
--------------------------------------------------------------------------
052499-22:27:58.403313192.168.1.4:1034->;192.168.1.3:143
TCPTTL:64TOS:0x0DF
***PA*Seq:0x5295B44EAck:0x1B4F8970Win:0x7D78
9090909090909090909090909090EB3B...............;
5E89760831ED31C931C0886E07896E0C^.v.1.1.1..n..n.
B00B89F36E0889E96E0C89EACD80.....n....n.....
31DB89D840CD809090909090909090901...@...........
9090909090909090909090E8C0FFFFFF................
2F62696E2F7368909090909090909090/bin/sh.........
---------------------------------------------------------------------------
这个攻击的特征码就是/bin/sh字符串及其前面的机器代码。这实际上是一个shellcode。四用这些信息可以很快开发出一条新的规则:
alerttcpanyany->;192.168.1.0/24143(content:"|E8C0FFFFF|/bin/sh";
msg:"NewIMAPBufferOverflowdetected!"
其中的特征码含有文本和16进制两种形式,它们以|分割,snort运行时都被转换为二进制形式。

至此,FREEBSD下的Snort安装建立成功。结果可以直接从WEB界面上看到,一套完整的IDS系统就可以正常运行了。

由于个人水平所限,本文难免会有遗漏和错误之处,希望大家不吝指正。 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值