#!/bin/sh
#auther RuM
#date 20140716
cc ( )
{
[ -f ignore.ip.list ] || echo "127.0.0.1" > ignore.ip.list
netstat -ntu | awk ‘{print $5}‘ | cut -d: -f4 | sort | uniq -c | sort -nr > BAD_IP_LIST
while read line; do
CURR_LINE_CONN=$(echo $line | cut -d" " -f1)
CURR_LINE_IP=$(echo $line | cut -d" " -f2)
iptables -L -n |grep -i $CURR_LINE_IP >>/dev/null
if [ $? = 0 ];then
break
else
if [ $CURR_LINE_CONN -lt 100 ]; then
break
else
IGNORE_BAN=`grep -c "$CURR_LINE_IP" ignore.ip.list` >>/dev/null
if [ $IGNORE_BAN -ge 1 ]; then
continue
else
iptables -I INPUT -s $CURR_LINE_IP -j DROP >> /dev/null
fi
fi
fi
done < BAD_IP_LIST
}
while true;do
cc
sleep 1
done
1 ignore.ip.list 可以添加白名单
2 $CURR_LINE_CONN -lt 100 这个100按自己需求去定义这里默认是写了100个并发连接就拒绝了
最后脚本在后台执行就循环了
本文出自 “信不信由你” 博客,请务必保留此出处http://312461613.blog.51cto.com/965442/1439774
原文:http://312461613.blog.51cto.com/965442/1439774