- 论坛徽章:
- 6
|
本帖最后由 yuhongchun 于 2011-07-21 15:50 编辑
自动区分黑名单、白名单的iptables脚本,这个脚本我用得比较多,跟大家分享交流一下,脚本内容如下:- #/bin/bash
- netstat -an| grep :25 | grep -v 127.0.0.1 |awk '{ print $5 }' | sort|awk -F: '{print $1,$4}' | uniq -c | awk '$1 >50 {print $1,$2}' > /root/black.txt
- for i in `awk '{print $2}' /root/black.txt`
- do
- COUNT=`grep $i /root/black.txt | awk '{print \$1}'`
- DEFINE="50"
- ZERO="0"
- if [ $COUNT -gt $DEFINE ];
- then
- grep $i /root/white.txt > /dev/null
- if [ $? -gt $ZERO ];
- then
- echo "$COUNT $i"
- iptables -I INPUT -p tcp -s $i -j DROP
- fi
- fi
- done
复制代码 将其放进crontab里,每十分钟执行一次,这个频率可以调整。目前我将此脚本其用于邮件等非web服务器上,因为我发现有些子链接过多的网站在开一个点击时会瞬间产生大量连接,此脚本会误报此IP为非法IP,但是通过日志分析发现此IP确实为正常IP,所以我目前没有在web服务器上采用此脚本,而是用了iptables的recent模块。 |
|