#!/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个并发连接就拒绝了


最后脚本在后台执行就循环了