我正在使用 fail2ban 0.10.0,通过它我可以触发一些操作来阻止来自给定单一来源(带有 HOST 标签)的暴力破解尝试。
但假设有人控制了整个 /24 块,并用它来进行基于机器人的暴力攻击。使用一个相当合理的配置查找时间 = 3600和最大重试次数 = 3攻击者仍然可以每分钟进行大约 4 次尝试,而无需重复其源地址(并且不会触发 fail2ban 操作),然后重新开始,因为 findtime 已经过期。
我的问题是:在过滤时,是否有某种方法可以让 fail2ban 知道给定的 IP 块(例如 /24)并使查找时间和最大重试次数对于该范围内的任何地址都有效,因此它会触发操作吗?
例如:
INFO [postfix-sasl] Found 1.1.1.1
INFO [postfix-sasl] Found 1.1.1.2
INFO [postfix-sasl] Found 1.1.1.3
NOTICE [postfix-sasl] Ban 1.1.1.0/24
谢谢您的帮助!
答案1
这是在端口 25 (SMTP) 还是端口 587 (提交) 上?我扫描过端口 25,但没有注意到端口 587 上有任何显著的扫描。禁用端口 25 上的 AUTH 并在 AUTH 之前要求 STARTTLS 可能会减少攻击。
我确实在持续扫描我的 IMAP 服务器。我使用带有 GeoIP 过滤器的 tcpwrappers 来限制用户可以连接的国家/地区。这也可以应用于端口 587,但我还没有看到这种必要。
我不知道是否有任何可用于 fail2ban 的模块,使用 python 模块修改地址应该相对容易ipaddress
。该ip_network
方法可以为您完成转换。Python3 有一个可用于 Python2 的反向移植。应用此方法的可能位置是在报告找到的地址的代码中。