我的服务器正在遭受攻击,它被以下模式的请求淹没:
数千个 IP 每个 IP 每秒使用相同的 referrer 向相同的页面“GET / HTTP/1.1”请求 3-5 次(相同的时间戳)。
所以我需要一个小的 shell 脚本,它从“tail -f /var/www/log/access.log”获取输入,并对具有相同时间戳的重复请求进行解析(比如对具有相同引用者和相同时间的同一页面的 2 个请求)并添加一个 iptable 规则以删除来自该 IP 的所有数据包。
答案1
看一下失败禁止这时如何这是 Apache 日志文件过滤器的示例。
以下是一个可以满足您的要求的示例。请参阅手动的并根据您的需要进行调整:
/etc/fail2ban/filters.d/apache-attackers.conf
[Definition]
failregex = <HOST> - - [[^]]+] "GET / HTTP/1.1" 200 .* "REFERER"
/etc/fail2ban/local.jail
[DEFAULT]
ignoreip = 127.0.0.1 <an IP you access the system from>
[apache-attackers]
enabled = true
port = http,https
filter = apache-attackers
bantime = 86400
logpath = /var/log/httpd/*access_log
maxretry = 5
启动时启用fail2ban
(RHEL/CentOS)并启动它:
chkconfig fail2ban on
service fail2ban start
注意:在 RHEL/CentOS 上测试,您的里程可能会有所不同。