2007年(213)
分类: 网络与安全
2007-09-08 09:22:20
软件名称 | 下载网站 | 作用 |
Apache | Linux下Aapche服务器 | |
P | PHP脚本支持 | |
MySQL | 数据库支持 | |
libpcap | 网络抓包工具 | |
Snort | Windows下的Snort安装包 | |
ACID | 基于PHP的入侵检测数据库分析控制台 | |
ADOdb | 为PHP提供统一的数据库连接函数 | |
JpGraph | PHP所用图形库 |
1.安装zlib1.1.4
tar -xzvf zlxx.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 image/x- icon .ico
AddType application/x-httpd-php .php
测试一下Apache和PHP:
5.安装 Snort2.0
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界面:
点"Setup Page"链接 ->Create Acid AG
访问将会看到ACID界面。
Snort 规则
Snort规则库是不断更新的,可以在上下载到最新的snort规则库。snrot使用一种简单的轻量级的规则描述语言来描述它的规则配置信息,它灵活而强大。在版本1.8之前snort规则必须写在一个单行上,在现在的版本里可以用‘\’来进行折行。
Snort规则分成两个逻辑部分:规则头和规则选项。规则头包含规则的动作,协议,源和目标ip地址与网络掩码,以及源和目标端口信息;规则选项部分包含报警消息内容和要检查的包的具体部分。下面是一个规则范例:
alert tcp any any -> 192.168.1.0/24 111 (content:"|00 01 86 a5|"; msg: "mountd access";)
括号前的部分是规则头,括号内的部分是规则选项。规则选项部分中冒号前的单词称为选项关键字。注意:不是所有规则都必须包含规则选项部分,选项部分只是为了使对要收集或报警,或丢弃的包的定义更加严格。组成一个规则的所有元素对于指定的要采取的行动都必须是真的。当多个元素放在一起时,可以认为它们组成了一个逻辑与(AND)语句。同时,snort规则库文件中的不同规则可以认为组成了一个大的逻辑或(OR)语句。
如下图是从官方网站下载的Community-Rules-2.4中
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服务器的3306端口时,如果数据流
里匹配到内容0A 00 00 01 85 04 00 00 80 root 00(其中数字表示2进制字节
码),那么就在记录中或报警“MYSQL root login attempt“。
通过对snort规则的分析,我们可以看出,其实snort规则中除了ip地址和端口号以外,最重要的还是模式匹配的内容,即关键字content中包含的内容。我们要提交漏洞攻击代码和工具被利用时的符合snort格式的网络检测特征,应该就是攻击代码中的特征字段。
通过对特征规则以及网上资料的分析,发现对于特征字段,运行攻击代码时用ethreal或其它sniffer工具来截获数据包,然后根据数据包的解码内容,来分析特征字段,然后书写snort的规则。在《用Snort从原理上检测MS05-051攻击》一文中,作者给出了针对MS05-051漏洞怎样通过攻击代码编写规则进而检测攻击的方法和步骤。从文中可以看出,主要是用ethreal截获数据包后,提取匹配的要点,然后用snort中的关键字来书写规则,这样就得到了snort的特征规则。
本文系统讲述了linux下snort的安装与配置,并讲解了snort规则库的相关知识,以及怎样书写自己的符合snort格式的规则库,希望大家学习和理解snort有帮助。