封IP地址

访问者通过浏览器正常访问网站,与服务器建立的连接一般不会超过20个,我们可以通过脚本禁止连接数过大的IP访问。以下脚本通过netstat命令列举所有连接,将连接数最高的一个IP如果连接数超过150,则通过 iptables阻止访问:


#!/bin/bash
#writen by zhuxiaowei on 20160216
#to ban ddos
status=`netstat -na|awk '$5 ~ /[0-9]+:[0-9]+/ {print $5}' |awk -F ":" '{print $1}' |sort -n|uniq -c |sort -n|tail -n 1` #取出最大的连接数的IP和次数
NUM=`echo $status |awk '{print $1}'` #取出次数
IP=`echo $status |awk '{print $2}'`  #取出IP
ESNUM=150 #定义同一IP同时连接的次数
result=`echo "$NUM > $ESNUM" |bc `
if [ $sesult = 1 ]
then
        echo IP:$IP is over $NUM,BAN IT! >> /ddos_ip.txt
        /sbin/iptables -I INPUT -s $IP -j DROP
fi