我创建了一个 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
需要什么
- 我想禁止这些 IP 地址一定时间段,比如 1 天(86400 秒)或更长时间,之后再次为它们打开 80 端口?
- 我怎样才能向自己发送邮件,即禁止 x 个 IP 地址访问 foo.com?
- 有什么方法可以增强我的脚本,以便它只读取来自/tmp/ip.blocked哪些没有通过脚本(iptables)禁止?
请指教。
答案1
通常的答案是失败2ban。您可能需要对其进行一些自定义才能读取您的网络访问日志。