当前位置:Linux教程 - Linux资讯 - implement a distribution NIDS by snort (freebsd5.0)

implement a distribution NIDS by snort (freebsd5.0)

包子@郑州大学网络安全园 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数据收集中心就建成了


[1] [2] 下一页 

 

(出处:http://www.sheup.com)


上一页 [1] [2]