在特定时间段内阻止 IP 地址

在特定时间段内阻止 IP 地址

我创建了一个 php 脚本,它通常计算某个 IP 地址在 1 分钟内访问我们网站的次数超过 x 次。

随后我创建了一个 shell 脚本,禁止那些访问次数超过 x 的 IP 地址访问 80 端口。

如下所示:

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 地址一定时间段,比如 1 天(86400 秒)或更长时间,之后再次为它们打开 80 端口?
  2. 我怎样才能向自己发送邮件,即禁止 x 个 IP 地址访问 foo.com?
  3. 有什么方法可以增强我的脚本,以便它只读取来自/tmp/ip.blocked哪些没有通过脚本(iptables)禁止?

请指教。

答案1

通常的答案是失败2ban。您可能需要对其进行一些自定义才能读取您的网络访问日志。

相关内容