是否可以使用 Fail2Ban 来阻止在 10 秒内请求同一 URL 超过 5 次的 IP?
我说的并不是指特定的 URL,而是任何被重复请求的站点随机 URL。
例如:
我不想在这种情况下阻止:
111.222.333.444 - - [29/Feb/2016:06:53:30] "GET /aaa.html HTTP/1.1"...
111.222.333.444 - - [29/Feb/2016:06:53:30] "GET /bbbb.html HTTP/1.1"...
111.222.333.444 - - [29/Feb/2016:06:53:30] "GET /ccccc.html HTTP/1.1"...
111.222.333.444 - - [29/Feb/2016:06:53:30] "GET /dddddd.html HTTP/1.1"...
111.222.333.444 - - [29/Feb/2016:06:53:30] "GET /eeeeeee.html HTTP/1.1"...
111.222.333.444 - - [29/Feb/2016:06:53:30] "GET /ffffffff.html HTTP/1.1"...
但我想在这种情况下阻止:
111.222.333.444 - - [29/Feb/2016:06:53:30] "GET /aaa.html HTTP/1.1"...
111.222.333.444 - - [29/Feb/2016:06:53:30] "GET /aaa.html HTTP/1.1"...
111.222.333.444 - - [29/Feb/2016:06:53:30] "GET /aaa.html HTTP/1.1"...
111.222.333.444 - - [29/Feb/2016:06:53:30] "GET /aaa.html HTTP/1.1"...
111.222.333.444 - - [29/Feb/2016:06:53:30] "GET /aaa.html HTTP/1.1"...
111.222.333.444 - - [29/Feb/2016:06:53:30] "GET /aaa.html HTTP/1.1"...
重要的提示: 我不是在问我是否遭受了 DDoS 攻击,也不是在问我如果遭受了 DDoS 攻击该怎么办。我是在问是否可以使用 Fail2Ban 来禁止重复请求相同 URL 的 IP,以及如何做到这一点。
答案1
我认为使用 Apache mod_evasive 模块可能会更好,该模块旨在阻止 IP 地址每秒多次访问同一个 URL。
Digital Ocean 有相当不错的如何。
答案2
Fail2ban 是错误的工具或工作。线索就在名称中。它旨在监控故障,您可以合理地确定导致与相关正则表达式匹配的错误消息的 IP 地址应该被禁止。
您正在尝试监控访问日志并采取行动,但您不知道这些条目是否与合法访问相关。
您的第一个难题是设计一个与您想要监控的活动相匹配的正则表达式。
如果你要做到这一点,那么你必须决定在什么时间范围内什么程度的活动是可以接受的,以及在什么时候它是不可接受的。
如果走到这一步几乎肯定会得到假阳性和假阴性,调整将会非常困难。