阻止某个时间段的IP地址

我已经创build了一个PHP脚本,通常在1分钟内统计一次IP地址访问我们的网站多less次。

后来我创build了一个shell脚本顶部禁止这些IP地址访问端口80谁超过X的命中数。

具体如下:

BLOCKDB=/tmp/ip.blocked IPS=$(grep -Ev "^#" $BLOCKDB) echo IPS for i in $IPS do /sbin/iptables -A INPUT -p tcp --destination-port 80 -s $i -j DROP /sbin/service iptables save /sbin/service iptables restart echo "Block ALL INPUT from " $i " net DROPPED." done 

什么是必需的

  1. 我想禁止这些IP地址在一定的时间内说一天(86400秒)或更多,之后,它再次打开他们的80端口?
  2. 我如何发送邮件给自己,即禁止访问foo.com的x个IP地址?
  3. 有没有什么方法可以提高我的脚本,这样它只会从/tmp/ip.blocked读取那些不通过脚本(iptables)禁止的IP地址?

请指教。

通常的答案是fail2ban 。 您可能需要定制一下,才能阅读您的networking访问日志。