#!/bin/bash

###########################################
########## by_&Frost 20090619 #############
###########################################
ip_file="/app/scripts/ip.txt"
drop_file="/app/scripts/gt100.txt"
RATE=100
ipt=$(which iptables)

netstat -ant |awk '$4 ~ /\:80$/{gsub(/\:\:ffff\:/,"",$5);split($5,ip,":");++S[ip[1]]}END{for (i in S)print S[i],i}' > ${ip_file}
ips=($(awk '$1>R{print $2}' ${ip_file}))
[ ${#ips[*]} -eq 0 ] && exit 0 || date >> ${drop_file}
for((i=0;i<${#ips[*]};i++))
do
  echo ${ips[$i]} >> ${drop_file}
  dels[$i]=${ips[$i]}
  $ipt -I INPUT 1 -s ${ips[$i]} -p tcp --dport 80 -j DROP
done

sleep 600

for((i=0;i<${#dels[*]};i++))
do
  $ipt -D INPUT -s ${dels[$i]} -p tcp --dport 80 -j DROP
done

这脚本存在严重的问题。。。netstat 抓出来的 ip 这样去写不安全
我这日志太乱了 不得已用之  :(
凑合着用吧