[资料] Linux下入侵检测系统(snort +guardian)
Linux, guardian, snort, 入侵检测系统
文章来源:原创 作者:没长叶子的树 2007-05-09 www.pcmag/solution ... 05/51003176_3.shtml 入侵检测 ▲ 构建小型入侵检测系统 libpcap 下载地址: download.chinaunix/download/0006000/5971.shtml Snort: 下载地址:/dl/current/snort-2.6.1. guardian 下载地址:/dl/contrib/ ... guardian-1. pcre 下载地址: sourceforge/project/s ... p;release_id=472551 安装: ① 解压libpcap包,并进入解压出来的目录,执行 ./configure ② 执行make ; make install 命令编译并安装 ③ 执行updatedb ; locate libpcap 命令,如果有信息返回,则说明libpcap安装成功,如果没有则说明安装未成功,需要重新安装. ④ 解压pcre包,并在解压出的目录中执行 ./configure ; make ; make install 安装. ⑤ 解压snort包并进入其目录,执行 ./configure ⑥ 执行make ; make install 安装snort. 注意:在执行snort的 ./configure时,可以使用--enable-smbalerts选项,该选项可以通过SAMBA把snort的报警消息发送到Windows主机。 配置snort: ① 在解压出来的snort目录下执行 cp f /etc ② 在解压出来的snort目录下执行 mkdir /etc/snort . ③ 在/i 下载snort规则文件,并将其放在 /etc/snort目录下,并对其解包. 注意:snort规则需下载注册用户的. ④ 执行 mkdir /var/log/snort 命令,创建snort日志目录 ⑤ vi /f 文件,跳到第26行,放开 var HOME_NET 字段,并在后面按原来的格式填上要监控的网段. ⑥ 跳到114行,到 var RULE_PATH 字段,并在其后面填上完整的snort规则存放路径,这里为 /etc/snort/rules. ⑦ 跳到第476行, iis_unicode_map 字段,在其后面写上/etc/snort/rules/unicode.map 1252 ⑧ 跳到第905行,到fig 项,将其改为: include /etc/snort/fig ⑨ 跳到第913行,到fig 项,将其改为 include /etc/snort/fig ⑩ 将 /usr/local/bin/snort -d -D -h 10.10.0.0/24 -c /f 添加到 /etc/rc.d/rc.local 文件中. 注意:在此处的-h 后面应该填上要监控的网段,这一部的意思是开机自动启动NIDS入侵检测系统. ⑪ /etc/snort/rules跳到第953行,到 include $RULE_PATH/bad-traffic.rules .从这行开始一直到最后,全部为snort的规则集合,可根据个人需要进行调试.以 # 号为准表示是否启用. ⑫ 建议去掉这些规则前面的 # 号,即放开这些规则. # include $RULE_PATH/web-attacks.rules # include $RULE_PATH/backdoor.rules # include $RULE_PATH/shellcode.rules # include $RULE_PATH/policy.rules # include $RULE_PATH/porn.rules # include $RULE_PATH/info.rules # include $RULE_PATH/icmp-info.rules # include $RULE_PATH/virus.rules # include $RULE_PATH/chat.rules # include $RULE_PATH/multimedia.rules # include $RULE_PATH/p2p.rules # include $RULE_PATH/spyware-put.rules 配置guardian: ① 解包,跳转到解压出来的目录,依次执行以下几条复制命令. ② echo > /etc/guardian.ignore ③ cp guardian.pl /usr/local/bin/ ④ cp scripts/iptables_block.sh /usr/local/bin/guardian_block.sh ⑤ cp scripts/iptables_unblock.sh /usr/local/bin/guardian_unblock.sh ⑥ f /etc/ ⑦ 执行vi /f 命令编辑guardian的配置文件. ⑧ 到 HostIpAddr ,将其前面的 # 好去掉,并在其后面填上本机的IP地址. ⑨ 到Interface,在后面写上监控的网卡地址名称. ⑩ LogFile 定义 guardian的日志文件. 注意:该文件需要根据定义的路径手动创建,其权限设为600 ⑪ IgnoreFile 要忽略的IP地址存放文件,即要对某个IP地址不做检测,将其加在该文件中即可. ⑫ TimeLimit 定义封锁IP的最长时间,当为99999999时为没有时限. ⑬ AlertFile 定义从那里读取snort的日志,在此处为 /var/log/snort/alert ,这里要填写绝对路径. ⑭ 将 /usr/bin/perl /usr/local/bin/guardian.pl -c /f 命令加入到 /etc/rc.d/rc.local 文件中,让其开机自动执行. 配置snort规则自动更新 ① 编写以下脚本: #!/bin/sh cd /etc/snort wget /pub-bin/dow ... ot-CURRENT_ tar zxvf exit 0 ② 将以上内容保存为snortupdate.sh ,并用chmod a+x 给予其可执行权限. ③ 将snortupdate.sh文件放到 /etc/cron.daily文件夹中,或者用 crontab -e 命令,在cron程序的配置文件中加入 “0 3 * * * snortupdate.sh文件存放路径”一行,让其每天3点自动执行一次更新脚本. 解决guardian程序自动退出问题 有时候guardian程序会自动退出,所以编写以下脚本 #!/bin/bash /usr/local/bin/snort -d -D -h 10.10.0.0/24 -c /f /usr/bin/perl /usr/local/bin/guardian.pl -c /f 将其保存为可执行文件,放到 /etc/cron.hourly 文件夹中,让其每小时自动启动一次. 说明: 该IDS系统首先用snort来进行监控,并记录日志,然后通过 guardian 程序对日志文件进行分析,发现有恶意IP访问时自动将其转给iptables 并将拒绝其访问请求.所以需要iptables的支持,使用chkconfig --level 2345 iptables on 命令让iptables 自动启动.用 chkconfig --level 2345 crond on 设置cron 程序自动运行.snort的日志文件为 /var/log/snort/alert guardian需要perl语言的支持,需先安装perl语言. ▲ 构建大型入侵检测系统 软件包: mysql 下载地址: sql/ httpd 下载地址: mirrors.sirium/pub/apache/httpd/httpd-2.2. php 下载地址: cn2.php/ adodb 下载地址: nchc.dl.sourceforge/sourceforge/adodb/adodb494.zip base 下载地址: sourceforge/project/showfiles.php?group_id=103348 注意:在该方案中mysql版本为5.0.37 ,PHP版本为 4.4.2 。 ㈠ .搭建apache+php+mysql环境 安装mysql 说明:在安装mysql之前,建议用linux图形界面中的软件包管理工具删除掉系统原有的mysql数据库及其相关的所有程序 ① groupadd mysql ② useradd -g mysql mysql ③ 解压mysql安装包包,将解压出来的目录更名为mysql 并将整个目录移动到 /usr/local 下 ④ cd /usr/local/mysql ⑤ scripts/mysql_install_db --user=mysql ⑥ chown -R root . ⑦ chown -R mysql data ⑧ chgrp -R mysql . ⑨ bin/mysqld_safe --user=mysql & 注意:该命令是以mysql用户来启动数据库,并在后台运行,如果报告错误,可重启计算机后执行. 安装apache(建议删除掉系统原有的httpd服务及其相关的软件包) ① 解压apache包 ② 进入到解压出来的目录,执行以下配置命令 ③ ./configure --prefix=/usr/local/apache2/ --enable-module=ssl --enable-module=so --enable-module=rewrite ④ 执行上面命令的时候注意中途有没有报错,如果报错需要根据错误重新配置。 ⑤ 执行 make ; make install 编译安装 安装PHP ① 切换到mysql下载下来没安装包php目录,执行以下命令 ② ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql ③ 执行 make ; make install 编译安装 ④ 在当前目录下执行cp php.ini-dist /usr/local/lib/php.ini 命令来复制php配置文件。 ⑤ vi /usr/local/apache2/f 文件,查 LoadModule php4_module modules/libphp4.so 字段,如果没有则手动加到第53行附近。 ⑥ 在该文件的第305行下面加入 AddType application/x-httpd-php-source .phps AddType application/x-httpd-php .php .phtml ⑦ 保存退出,执行 /usr/local/apache2/bin/apachectl -t 命令检查apache配置文件的正确性,如果配置无误的话会提示 Syntax OK。 ⑧ 执行 /usr/local/apache2/bin/apachectl start 命令启动apache ,如果没有提示则表示启动成功。 ㈡ .重新安装配置snort ① 配置snort ./configure --with-mysql=/usr/local/mysql ② make ;make install ③ 根据前面的配置方法对snort进行配置。 ㈢ .建立snort数据库 ① 执行/usr/local/mysql/bin/mysql 命令连接mysql数据库 ② 执行 create database snort; 创建snort数据库 ③ 执行grant INSERT,SELECT on snort.* to snort@localhost; #其中snort@locahost中的snort为管理snort数据库的用户名,可自行定义,但是要和后面的一致. ④ 执行 set password for 'snort'@'localhost'=password('snort'); #对snort账户设置密码,括号内单引号中的内容为密码内容. ⑤ 以上三条命令如果执行成功会有提示,注意后面的分号. ⑥ 执行exit 退出数据库. ⑦ 在解压出来的snort安装目录中,执行 /usr/local/mysql/bin/mysql –D snort –u root –p < ./schemas/create_mysql 命令,然后输入mysql数据库root账户的密码,如果没有密码则直接回车,稍等完成snort数据库的创建. ㈣ .配置snort日志存放方式,即将日志导入到数据库中. 编辑 /f 文件,并跳转到第830行,做如下更改. output database: alert, mysql, user=snort password=snort dbname=snort host=localhost 将这一行前面的#号去掉,后面的字段中 user为 snort数据库的用户名,password为密码,其他的不用改.保存退出即可. ㈤ .配置base ① 将base的安装包解压,并将解压出来的目录更名为base,存放到 /usr/local/apache2/htdocs 目录下. ② vi /usr/local/apache2/f 文件,在252行附近加入以下内容 Alias /base "/usr/local/apache2/htdocs/base" <Directory "/usr/local/apache2/htdocs/base"> AllowOverride None Options None Order allow,deny Allow from all DirectoryIndex index.php </Directory> ③ 解压adodb安装包,并将解压出来的目录更名为adodb,放在 /usr/local/apache2/htdocs目录下. ④ 在/usr/local/apache2/htdocs/base 目录下执行以下几步操作. ⑤ cp base_conf.php.dist base_conf.php ⑥ vi base_conf.php ⑦ 更改以下几个地方 ⑧ $BASE_urlpath ,此处指定base的存放位置,将其改为 ../base ⑨ $BASE_installID 此处设置base系统的标题,可自定义,为可选项 ⑩ $DBlib_path = '/usr/local/apache2/htdocs/adodb'; 此处定义adodb的地址,必须为绝对地址 $alert_dbname = 'snort'; 定义snort数据库名,改为snort $alert_host = 'localhost'; 定义mysql数据库位置,如果为本机则为localhost $alert_port = ''; 设置mysql数据库监听端口,一般设置为空,即默认值 $alert_user = 'snort'; 设置snort数据库用户名 $alert_password = 'snort'; 设置snort数据库密码 其他几项参数说明 $Use_Auth_System = 0; 设置登陆base系统时是否需要用户验证,0为不需要验证,1为需要,可在base系统设置好之后创建用户并打开该选项 $BASE_Language = 'english'; 设置base系统语言,默认为english ,简体中文为simplified_chinese ㈥ .启动IDS系统 在任意目录依次执行 /usr/local/mysql/bin/mysqld_safe –user=mysql & /usr/local/apache2/bin/apachectl start Snort –D –d –c /f 即可启动IDS系统,在浏览器中输入服务器IP地址/base 即可登陆到base系统对snort日志进行管理. |
收藏 分享
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论