由于提供了FTP下载而又限制了线程,所以总发现有人不断用多线程进行尝试,这样会大大增加服务器的负荷,这种事“损人不利己”!
为了“惩罚”这种人,决定写个SHELL,在crond里每1分钟运行一次,自动统计非法线程的IP和线程数量,然后自动将他的IP地址写到iptables里,阻挡!
vi /usr/local/sbin/fuckgo 代码:
#! /bin/bash fuck_who() { netstat -an|grep \\"210.51.184.197:21\\"|grep -v LISTEN| grep -v ESTABLISHED|awk \\'{print $5;}\\'|awk -F\\'=\\' \\'{print $1;}\\'|sort|uniq -c|awk \\'{print $1\\"=\\"$2;}\\' }
for _un in $(fuck_who) do if [ $(echo $_un|awk -F\\'=\\' \\'{print $1;}\\') -gt 9 ] then iptables -I INPUT -s $(echo $_un|gawk -F\\'=\\' \\'{print $2;}\\') -p tcp --dport 21 -j DROP fi done
vi /etc/crontab 添加 代码:
00-59/1 * * * * root /usr/local/sbin/fuckgo
/etc/rc.d/init.d/crond restart
具体效果可以参看
[myimg]http://platinum.3322.org/mrtg/proftpd-day.png[/myimg]
蓝色是总连接数,橙色是有效连接数
当蓝色超过橙色很多时,证明有人在贪得无厌地进行多线程尝试
从图上可以看出,蓝色瞬间值很高,但转瞬而逝,不会持续很久,因为那个人的IP已经进入了iptables“黑名单”。