0

当随机客户端为相同的 url 启动大量 GET 时,我的 apache 服务器出现故障。问题是它发生在不可预测的 url 路径上。使用fail2ban,我可以禁止预定的网址,但不能阻止未知的网址路径。有没有办法解决这个问题?

4

1 回答 1

0

根据您的 Web 服务器,您应该能够扫描您的 Web 服务器日志以查找 GET 请求,并禁止在特定时间段内发出过多请求的人。您只需要小心避免禁止合法用户,因此需要仔细调整允许的 GET 请求的频率。

  1. 创建一个新的监狱过滤器:sudo nano /etc/fail2ban/filter.d/GETFlood.conf
  2. 根据 Web 服务器的日志定义识别 GET 请求所需的正则表达式。使用标准的 Apache access.log,它将是:failregex = ^<HOST>.*\s"GET\s.*$
  3. 添加一个条目到您的/etc/fail2ban/jail.local

    [获取洪水]
    启用 = 真
    动作 = iptables-allports[名称=getflood]
    过滤器 = getflood
    日志路径 = /var/log/apache2/*access.log
    最大重试 = 30
    查找时间 = 90
    班时间 = 604800
    

在这里,我们让任何单个 IP 地址每 90 秒最多发出 30 个 GET 请求。同样,如果没有关于您的服务器的更多详细信息,您将需要调整这些时间以避免禁止合法用户。

于 2015-08-21T23:56:28.613 回答