根据状态代码来阻止 Fail2Ban 行为

根据状态代码来阻止 Fail2Ban 行为

我正在使用 Fail2Ban,并已根据需要对其进行了配置。它从 nginx/error.log 读取日志,并根据有关 maxretry 和时间设置的配置采取行动。问题是,这是否可以根据状态代码制定不同的规则?

例如,我想阻止任何人404 Status code在 5 分钟内获得 10 分,但阻止任何人在 3 分钟内获得 3 分403 Status code

如能得到任何帮助我将非常感激,先行致谢。

答案1

您应该添加一个/etc/fail2ban/filter.d/具有相关名称的过滤器--例如nginx-{403,404}.conf

它们应该包含类似以下几行的内容:

nginx-403.conf:

[Definition]
failregex = ^<HOST> -.*"(GET|POST|HEAD).*HTTP.*" 403
ignoreregex =

nginx-404.conf:

[Definition]
failregex = ^<HOST> -.*"(GET|POST|HEAD).*HTTP.*" 404
ignoreregex =

然后您应该从您的jail.local文件中调用它们,如果尚不存在则创建此文件(扩展默认文件jail.conf):

对于 403:

[nginx-403]

enabled = true
port    = http,https
logpath = /var/log/nginx/access.log
maxretry = 5
findtime = 300

对于 404 :

[nginx-404]

enabled = true
port    = http,https
logpath = /var/log/nginx/access.log
maxretry = 10
findtime = 300

注意:如果您运行的是旧版本的 Fail2Ban(版本 0.8.x 及更低版本),您还需要filter在配置中定义。在较新版本中,方括号中的 jail 标题还标识了正在使用的过滤器。

相关内容