#!/bin/bash

#Created by http://www.myhack58.com
num=100 #上限
cd /usr/local/nginx/logs
for i in `tail access.log -n 1000|awk '{print $1}'|sort|uniq -c|sort -rn|awk '{if ($1>$num){print $2}}'`
#读取最新1000条记录,如果单IP超过100条就封掉。
do
      iptables -I INPUT -p tcp -s $i --dport 80 -j DROP
done
 
加入crontab计划任务
 
crontab -e
*/5 * * * * sh /path/denyip.sh #5分钟执行一次