LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2606|回复: 4

[原创]Implement a distribution NIDS by snort

[复制链接]
发表于 2003-12-3 13:48:34 | 显示全部楼层 |阅读模式
欢迎转载,请保留作者信息
包子@郑州大学网络安全园
http://secu.zzu.edu.cn

Snort是非常出名的一个入侵检测系统,他可以分析流经他的数据,并产生检测报告,可是默认产生的报告给人一种很乱,毫无头绪的感觉,但是如果我们把他的日志输出到MySQL数据库的话,我们就可以比较方便的查询我们所关心的信息了。
Roman Danyliw写了一套叫Analysis Console for Intrusion Databases (ACID)的PHP程序,可以让我们很方便直观的分析snort的日志并且可
以收集来自多个sensor(探头)的数据以实现分布式的NIDS或建立分布式的蜜罐网络信息收集中心。

今天,我们就说说如何在一个FreeBSD的系统下利用Snort,MySQL和ACID建立一个完整的NIDS
本文涉及到的任何软件都可以在郑州大学网络安全园下载的到,我把所有需要的软件打了个包,方便大家下载
http://secu.zzu.edu.cn

本文假设你有一定的BSD系统和MySQL数据库的操作经验
我们的操作系统是FreeBSD 5.0

首先以root用户登陆系统
把zip包解压缩到/down目录之后,把dist目录的文件全部复制到/usr/port/distfiles下面
#mv port/* /usr/port/distfiles

先使用port安装mysql server
#cd /usr/ports/databases/mysql323-server/ ; make ; make install
初始化并启动mysql server
#/usr/local/bin/mysql_install_db
#/usr/local/etc/rc.d/mysql-server.sh
确认Mysql服务已经打开
#netstat -an | grep 3306
tcp4 0 0 *.3306 *.* LISTEN
接着给root用户设置一个密码并登陆
#mysqladmin -u root password yourpassword
#mysql -u root -p
password

先创建一个叫"snort"的数据库。
简单的说明一下grant的用法
格式:grant 操作权限 on 数据库.* to 用户名@登录主机 identified by "密码" ,详细内容
mysql> create database snort ;
mysql>use snort;
创建数据表
mysql> source /usr/src/snort-1.9.1/contrib/create_mysql
现在为snort创建一个叫"zzu"的用户,如果要做多个snort sensor的话,这个用户最好有点含义,因为等会我们配置snort的时候不容易弄乱。
mysql>grant insert,select,create,delete on snort.* to zzu@ur sensor'ip identified by "urpassword"
如果你需要做多个sensor的数据收集的话,重复这个步骤并更改用户名和IP,这样等会配置起来方便很多的。
mysql>grant insert,select,create,delete on snort.* to smth@another sensor'ip identified by "urpassword"
………………
#############################################################################################
然后cd /usr/src
#tar zxvf /down/apache_1.3.27.tar.gz
#tar zxvf /down/php-4.3.1.tar.gz
#tar zxvf /down/webmin-1.030.tar.gz

安装apache
#./configure --prefix=/usr/local/apache --enable-shared=max ; make ; make install

使用port装GD2
#cd /usr/ports/graphics/gd/ ; make ; make install

装PHP
#./configure --with-mysql --with-apxs=/usr/local/apache/bin/apxs --with-zlib --with-jpeg --with-gd --with-png
--enable-track-vars --enable-sockets --disable-debug ; make ; make install

复制并修改php.ini
cp php.ini-dist /usr/local/lib/
把display_errors设置成Off
修改httpd.conf文件并添加下面几行
把ServerSignature On
改成ServerSignature Off
添加
AddType Application/x-httpd-php .php
AddType Application/x-httpd-php .php3
AddType Application/x-httpd-php .php4

#cp /usr/local/apache/bin/apachectl /usr/sbin/
#apachectl start
在WWW目录下vi info.php
<? phpinfo(); ?>
看看输出的结果有没启动gd,sockets,mysql支持,如果没有请检查上面步骤是否有疏漏

##############################################################################################
现在开始装snort
先装port安装libnet

再把把SNORT装上,请使用最新的snort.1.91,编译的时候让他支持mysql,如果有兴趣的话,让他也支持resp,关于resp更多信息请看snort
的man文档
#cd /usr/src/snort-1.9.1
#./configure --help
#./configure --with-mysql --enable-flexresp ; make ; make install

拷贝配置文件和规则文件
#mkdir /usr/local/etc/snort
#cp etc/* /usr/local/etc/snort
#cp -r rules /usr/local/etc/snort/
#cd /usr/local/etc/snort
编辑配置文件snort.conf,
#vi snort.conf
找到102行
把var RULE_PATH ../rules
改成var RULE_PATH ./rules
找到431行
取消注释,并把mysql服务器信息准确输入
output database: log, mysql, user=snort password=ur passwd dbname=snort host=mysql server
把每个sensor的输出都放到同一个中央数据库里面,我们就可以通过ACID查看每个sensor的统计结果了

给系统添加snort用户
#echo /dev/null >> /etc/shells

#adduser
Username: snort
Uid (Leave empty for default):
Login group [snort]:
Login class [default]:
Shell (sh csh tcsh bash null) [sh]: null
Home directory [/home/snort]:
Username : snort
Password : *****
Uid : 1002
Groups : snort
Home : /home/snort
Shell : /dev/null
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (snort) to the user database.
为port scan建一个放日志的目录
#mkdir /var/log/snort
#chown -R snort:snort /var/log/snort
###################################################################
安全起见,在sensor的主机做个到data center的ssh tunnel
ssh -C data center'ip -L 3389:data center's ip:3306
那么在sensor的snort.conf的mysql信息就得相应的修改了
运行snort
#snort -c /usr/local/etc/snort/snort.conf -u snort -g snort -D
###################################################################################
装Net_SSLeay和webmin
#cd /usr/src/
#tar zxvf /down/Net_SSLeay.pm-1.21.tar.gz
#tar zxvf /down/webmin-1.030.tar.gz
安装Net_SSLeay
#cd Net_SSLeay.pm-1.21
#perl Makefile.PL ; make install
#cd ../webmin-1.030
#./setup.sh
在那几个问题之中,注意use SSL选择y
接着你和webmin主机的连接就被加密了的
进入webmin配置界面,更改语言,添加snort模块……
你会发现编辑不到规则,原因就是snort.config的$rulepath没去掉
###################################################################################
配置ACID
把adodb,acid,jpgraph和phplot都解压缩到WWW的根目录去
#cd /where/ur/www/root/
#tar zxvf adodb311.tgz
#tar zxvf acid-0.9.6b22.tar.tar
#mv acid/* /where/ur/www/root/
并且把jpgraph里的文件都CP到phplot的目录里面去
把adodb-版本号,db-版本号,的版本号都去掉
#mv adobd-*.*.* adodb
编辑acid_config.php文件
$DBlib_path = "adodb";
$alert_dbname = "snort";
$archive_user = "snort";
$alert_password = mysql密码;
$ChartLib_path = "phplot";
$portscan_file = "/var/log/snort/portscan.log";

到此,事情已经基本上做完了,可以访问http://ip来看看了
若显示正确,就点"create acid AG",就这样,一个分布式的NIDS数据收集中心就建成了
发表于 2003-12-6 03:40:50 | 显示全部楼层
 楼主| 发表于 2003-12-7 17:02:56 | 显示全部楼层
8客气哦 :)
你也辛苦了
你是伟大D
为论坛付出了许多……
发表于 2004-5-12 00:56:39 | 显示全部楼层
本文涉及到的任何软件都可以在郑州大学网络安全园下载的到,我把所有需要的软件打了个包,方便大家下载
http://secu.zzu.edu.cn


我找了好久也找不到
adodb311.tgz这东西老找不着

可否再提供个连接
thx
发表于 2004-5-12 01:37:02 | 显示全部楼层
找到了
thx
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表