最近看了一篇通过nagios实现MD5实时监控iptables状态的文章,就想是否可以用shell也做到监控iptables规则改变,经过实验,就有了下面这个脚本.
系统:centos 5.x
脚本内容:
cat check_iptables.sh
#!/bin/bash if [ ! -f .count ];then iptables -L -n|md5sum|awk '{print $1}' > ~/.count exit 1 else iptables -L -n|md5sum|awk '{print $1}' >~/1.txt difffile=`diff ~/.count ~/1.txt|wc -l` if [[ $difffile = 0 ]];then echo "file is ok!" sleep 1 rm -f ~/1.txt else echo "file is no ok!" cat ~/1.txt >~/.count sleep 1 rm -f ~/1.txt fi fi
然后丢到crontab里.以每隔3分钟检测一次.
chmod +x /root/check_iptables.sh */3 * * * * /bin/sh /root/check_iptables.sh
当然你也可以加上邮件报警来通知iptables规则有改变.