入侵检测系统的检测信息来源都是通过自身的检测部分Sensor 得到的。
基于网络的入侵检测,主要是通过对网络数据包的截取分析,来查找具有攻击特性和不良企图的数据包的。在网络里基于网络的入侵检测系统的检测部分Sensor 一般被布置在一个交换机的镜象端口(或者一个普通的HUB任意端口),听取流经网络的所有数据包,查找匹配的包,来得到入侵的信息源。
基于主机的入侵检测系统的Sensor 不可能直接从系统内部获取信息的,它是要通过一个事先做好的代理程序,安装在需要检测的主机里的,这些代理程序主要收集系统和网络日志文件,目录和文件中的不期望的改变,程序执行中的不期望行为,物理形式的入侵信息。
(1) 它是一个轻量级的网络入侵检测系统,所谓轻量级是指该软件在运行时只占用极少的网络资源,对原有网络性能影响很小。
(2) 从数据来源上看,它是一个基于网络入侵的检测软件,即它作为嗅探器对发往同一网络的其他主机的流量进行捕获,然后进行分析。
(3) 它的工作采用误用检测模型,即首先建立入侵行为特征哭,然后在检测过程中,将收集到的数据包和特征代码r进行比较,以得出是否入侵的结论。
(4) 它是用c语言编写的开放源代码网络入侵检测系统。其源代码可以被自由的读取、传播和修改,任何一个程序员都可以自由地为其添加功能,修改错误,任意传播。这使它能迅速发展完善并推广应用。
(5) 它是一个跨平台的软件,所支持的操作系统非常广泛,比如windows,linux,sunos等都支持。在windows下安装比较简单:首先下载windows下网络数据包捕获工具winpcap([url]www.winpc[/url]ap.org),然后下载snort安装包,直接双击安装即可。
(6) Snort有三种主要模式:信息包嗅探器、信息包记录器或成熟的入侵探测系统。
Snort的一些功能:
实时通信分析和信息包记录。
包装有效载荷检查。
协议分析和内容查询匹配。
探测缓冲溢出、秘密端口扫描、CGI攻击、SMB探测、操作系统入侵尝试。
对系统日志、指定文件、Unix socket或通过Samba的winpopus进行实时报警。
1) 嗅探器sniffer:
命令:snort -v [-d][-X]
-v verbose
-d 转储应用层数据
-X 转储从链路层开始的原始包
2) 分组日志模式
命令:snort -l dir [-h hn][-b]
这种模式下以ASCII格式记录解析出的分组。
-l directory snort将把日志放在这个目录下
-h X.X.X.X 设置本地子网号
-b 日志使用TCPDUMP二进制格式
3) 入侵检测模式
命令: snort -c snort.conf [-l dir]
必须载入规则库才能进入入侵检测模式。即
#./snort -c snort.conf
snort将报警信息放入/var/log/snort目录下,可以用-l选项来改变目录。
表1 安装snort所需软件
软件名称 |
下载网站 |
作用 |
Apache |
Linux下Aapche服务器 | |
PHP |
PHP脚本支持 | |
MySQL |
数据库支持 | |
libpcap |
网络抓包工具 | |
Snort |
Windows下的Snort安装包 | |
ACID |
基于PHP的入侵检测数据库分析控制台 | |
ADOdb |
为PHP提供统一的数据库连接函数 | |
JpGraph |
PHP所用图形库 |
tar -xzvf zlib-xx.tar.gz
cd zlib-xx
/configure;
make install
cd ..
2.安装LibPcap0.7.2
tar -xzvf libpcap.tar.gz
cd libpcap-xx
/configure
Make
make install
cd ..
3.安装MySQL4.0.12
tar -xzvf mysql-xx.tar.gz
cd mysql-xx
/configure --prefix=/usr/local/mysql
Make
make install
cd scripts
/mysql_install_db
chown -R root /usr/local/mysql
chown -R mysql /usr/local/mysql/var
chgrp -R mysql /usr/local/mysql
cd ./support-files/my-medium.cnf /etc/my.cnf
向/etc/ld.so.conf中加入两行:/usr/local/mysql/lib/mysql
/usr/local/lib
载入库,执行
ldconfig –v
测试mysql是否工作:
4.安装Apache2.0.45和PHP4.3.1
tar -zxvf httpd-2.0.xx.tar.gz
cd httpd_2.xx.xx
/configure --prefix=/www --enable-so
make
make install
cd ..
tar -zxvf php-4.3.x.tar.gz
cd php-4.3.x
/configure --prefix=/www/php --with-apxs2=/www/bin/apxs --with-config- filepath=/www/php --enable-sockets --with-mysql=/usr/local/mysql --with-zlibdir=/
usr/local --with- gd
cp php.ini-dist /www/php/php.ini
编辑httpd.conf(/www/conf):
加入两行
LoadModule php4_module modules/libphp4.so
AddType application/x-httpd-php .php
httpd.conf中相关内容如下:
#
# LoadModule foo_module modules/mod_foo.so
LoadModule php4_module modules/libphp4.so
# AddType allows you to tweak mime.types without actually editing it, or ?$
# make certain files to be certain types.
#
AddType application/x-tar .tgz
AddType p_w_picpath/x- icon .ico
AddType application/x-httpd-php .php
测试一下Apache和PHP:
5.1建立snort配置文件和日志目录
mkdir /etc/snort
mkdir /var/log/snort
tar -zxvf snort-2.x.x.tar.gz
cd snort-2.x.x
/configure --with-mysql=/usr/local/mysql
Make
make install
5.2安装规则和配置文件
cd rules (在snort安装目录下)
cp * /etc/snort
cd ./etc
cp snort.conf /etc/snort
cp *.config /etc/snort
5.3修改snort.conf(/etc/snort/snort.conf)
var HOME_NET 10.2.2.0/24
var RULE_PATH ./rules 修改为 var RULE_PATH /etc/snort/
改变记录日志数据库:
output database: log, mysql, user=root password=your_password
dbname=snort host=localhost
5.4设置snort为自启动:
在snort安装目录下
cd /contrib.
cp S99snort /etc/init.d/snort
vi /etc/init.d/snort
修改snort如下:
CONFIG=/etc/snort/snort.conf
#SNORT_GID=nogroup (注释掉)
#8194;$SNORT_PATH/snort -c ?$CONFIG -i ?$IFACE ?$OPTIONS
chmod 755 /etc/init.d/snort
cd /etc/rc3.d
ln -s /etc/init.d/snort S99snort
ln -s /etc/init.d/snort K99snort
cd /etc/rc5.d
ln -s /etc/init.d/snort S99snort
ln -s /etc/init.d/snort K99snort
6 在mysql中建立snort数据库,结果如下:
7.安装ADOdb
cp adodb330.tgz /www/htdocs/
cd /www/htdocs
tar -xzvf adodb330.tgz
rm -rf adodb330.tgz
8.安装JgGraph
cp jpgraph-1.11.tar.gz /www/htdocs
cd /www/htdocs
tar -xzvf jpgraph-1.xx.tar.gz
rm -rf jpgrap-1.xx.tar.gz
cd jpgraph-1.11
rm -rf README
rm -rf QPL.txt
9.安装配置数据控制台ACID
cp acid-0.0.6b23.tar.gz /www/htdocs
cd /www/htdocs
tar -xvzf acid-0.9.6b23.tar.gz
rm -rf acid-0.9.6b23.tar.gz
cd /www/htodcs/acid/
编辑acid_conf.php,修改相关配置如下:
#8194;$DBlib_path = "/www/htdocs/adodb";
#8194;$alert_dbname = "snort";
#8194;$alert_host = "localhost";
#8194;$alert_port = "";
#8194;$alert_user = "root";
#8194;$alert_password = "Your_Password";
/* Archive DB connection parameters */
#8194;$archive_dbname = "snort";
#8194;$archive_host = "localhost";
#8194;$archive_port = "";
#8194;$archive_user = "root";
#8194;$archive_password = "Your_Password ";
And a little further down
#8194;$ChartLib_path = "/www/htdocs/jpgraph-1.11/src";
/* File format of charts ('png', 'jpeg', 'gif') */
#8194;$chart_file_format = "png";
进入web界面:
[url]http://yourhost/acid/acid_main.php[/url]
Snort规则分成两个逻辑部分:规则头和规则选项。规则头包含规则的动作,协议,源和目标ip地址与网络掩码,以及源和目标端口信息;规则选项部分包含报警消息内容和要检查的包的具体部分。下面是一个规则范例:
alert tcp any any -> 192.168.1.0/24 111 (content:"|00 01 86 a5|"; msg: "mountd access";)
mysql.rules中的一部分规则。我们查看其中的一条如下:
alert tcp $EXTERNAL_NET any -> $SQL_SERVERS 3306 (msg:"MYSQL root
login attempt"; flow:to_server,established; content:"|0A 00 00 01 85 04 00 00
80|root|00|"; classtype:protocol-command-decode; sid:1775; rev:2;)
码),那么就在记录中或报警“MYSQL root login attempt“。