Snort 是一個開源的輕量級入侵監測系統,可以監測網絡上的異常情況,給出報告。 Guardian是基於Snort+IPTables的一個主動防火牆,它分析Snort的日志文件,根據一定的判據自動將某些惡意的IP自動加入IPTables的輸入鏈,將其數據包丟棄。 我自使用Snort+Guardian以來,每天可以看到很多的惡意行為被終止。
安裝步驟: 1.安裝Snort: *現在Snort & Guardian,目前下載地址為: http://www.snort.org/dl/snort-2.3.0RC2.tar.gz http://www.snort.org/dl/contrib/other_tools/guardian/guardian-1.6.tar.gz *將上述文件拷貝至/tmp *tar zxvf *.tgz *cd snort-2.3.0RC2 *./configure *make *make install *mkdir /etc/snort *cd /etc/snort *wget http://www.snort.org/dl/rules/snortrules-snapshot-CURRENT.tar.gz * tar zxvf snortrules-snapshot-CURRENT.tar.gz *mkdir /var/log/snort *cd /etc *vi snort.conf 修改後一些關鍵設置如下: var HOME_NET yournetwork var RULE_PATH /etc/snort/rules preprocessor http_inspect: global iis_unicode_map /etc/snort/rules/unicode.map 1252 include /etc/snort/rules/reference.config include /etc/snort/rules/classification.config 如:yournetwork 220.8.0.0/16 同時,可以選擇將類似 include $RULE_PATH/local.rules等,前面的#號去掉,設置自己的規則集。 * /usr/local/bin/snort -D -l /var/log/snort -c /etc/snort.conf * 將上一條命令寫入/etc/rc.d/rc.local
2.安裝guardian---需要perl支持 * cd /tmp * tar zxvf guardian-1.6.tar.gz * cd guardian-1.6 * 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 * cp guardian.conf /etc/. * vi /etc/guardian.conf 如下: HostGatewayByte 1 # guardian的日志文件 LogFile /var/log/guardian.log #guardian從何處讀取snort的日志 AlertFile /var/log/snort/alert #將你需要忽略的IP放在此文件中 IgnoreFile /etc/guardian.ignore # 封鎖IP的最長時間,99999999為沒有時限 TimeLimit 86400 * /usr/bin/perl /usr/local/bin/guardian.pl -c /etc/guardian.conf * 將上一條命令加入 /etc/rc.d/rc.local 至此,完成設置。
注意: 1)snort的規則文件經常更新,可以使用如下腳本自動更新: #!/bin/sh cd /etc/snort wget http://www.snort.org/dl/rules/snortrules-snapshot-CURRENT.tar.gz tar zxvf snortrules-snapshot-CURRENT.tar.gz exit 0 *將上述腳本存為snortupdate,並放置到/etc/cron.daily/下,可以每天更新一次。 2)guardian有時會自動退出,可以使用如下腳本解決: #!/bin/sh /usr/local/bin/killguardian /usr/local/bin/guardian.pl -c /etc/guardian.conf exit 0 將上述腳本存為restartguardian,放置到/usr/local/bin 。 同時,crontab -e,加入如下一句: * */6 * * * /usr/local/bin/restartguardian 意思為:每6小時重新啟動guardian。 腳本:killguardian #!/usr/bin/perl #殺死當前guardian.pl進程,需要安裝perl module Proc::ProcessTable #訪問http://www.cpan.org可以獲得上述module use Proc::ProcessTable; $t = new Proc::ProcessTable; foreach $p (@{$t->table}) { kill 9, $p->pid if $p->cmndline =~ 'guardian.pl'; } Garfield A lazy, fat CAT I am!