解析 Apache 日志文件并禁止 IP

解析 Apache 日志文件并禁止 IP

我的服务器正在遭受攻击,它被以下模式的请求淹没:

数千个 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 上测试,您的里程可能会有所不同。

相关内容