如何阻止始终触及相同不可预测URL的客户端

时间:2015-08-13 18:52:43

标签: apache ddos fail2ban

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

1 个答案:

答案 0 :(得分:1)

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

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

    [getflood]
    enabled  = true
    action   = iptables-allports[name=getflood]
    filter   = getflood
    logpath  = /var/log/apache2/*access.log
    maxretry = 30
    findtime = 90
    bantime  = 604800
    
  4. 在这里,我们让任何单独的IP地址每90秒最多发出30个GET请求。同样,如果没有关于您的服务器的更多详细信息,您将需要使用这些时间来避免禁止合法用户。