使用fail2ban重试n次后永久阻止IP

BTR*_*idu 47 fail2ban

我有一个fail2ban配置如下:

  • 在 3 次失败尝试后阻止 ip
  • 300 秒超时后释放 IP

这非常有效,我想保持这种方式,以便有效用户有机会在超时后重试登录。现在,我想实现一个规则,如果相同的 IP 被检测为攻击并被阻止,解除阻止 5 次,永久阻止该 IP 并且永远不会再次解除阻止。这可以单独使用fail2ban来实现还是我需要编写自己的脚本来做到这一点?

我在centos中这样做。

Pot*_*thu 42

在 0.11 之前,fail2ban 中没有默认功能或设置来实现这一点。但是从即将发布的 0.11 版本开始,禁令时间会自动计算并随着每次新的进攻呈指数增长,从长远来看,这或多或少意味着永久封锁。

在那之前,您最好的方法可能是设置fail2ban 来监视自己的日志文件。这是一个两步的过程...

第1步

我们可能需要创建一个过滤器来检查日志文件(fail2ban 的日志文件)中的BAN

第2步

我们需要定义 jail,类似于以下...

[fail2ban]
启用 = 真
过滤器=fail2ban
action = iptables-allports[name=fail2ban]
logpath = /path/to/fail2ban.log
# 查找时间:1 天
查找时间 = 86400
#bantime:1年
禁止时间 = 31536000

从技术上讲,它不是一个永久块,而只是一年的块(我们也可以增加)。

无论如何,对于您的问题(可以单独使用fail2ban 来实现还是我需要编写自己的脚本来做到这一点?)...编写自己的脚本可能会很好。我建议设置脚本以提取经常被禁止的 IP,然后将它们放入/etc/hosts.deny

  • 现在有fail2ban recidive过滤器。 (7认同)

J. *_*hin 36

我相信如果你放入bantime = -1那个配置部分,它是一个永久块。

  • 将 -1 添加到设置使 fail2ban 无响应 (4认同)
  • 实际上,将 `bantime` 设置为任何负值都是永久禁止(从 Fail2Ban 版本 0.6.1 (2006/03/16) 开始) (2认同)

xaa*_*xaa 14

Phil Hagen 写了一篇关于这个主题的优秀文章。“使用fail2ban 永久禁止重犯”。

他的建议与 Pothi 相同,但提供了分步指南。

这包括:

  • 单独的监狱禁止列表(ip.blocklist.ssh,ip.blocklist.xxx)
  • 如果服务重启,禁止列出自动加载(这种方法的主要优点恕我直言)
  • 如果中继器使用,电子邮件通知。


A-3*_*312 9

fail2ban 已经有一个监狱来禁止再犯。如果你看/etc/fail2ban/jail.conf,你会发现:

# Jail for more extended banning of persistent abusers
# !!! WARNING !!!
#   Make sure that your loglevel specified in fail2ban.conf/.local
#   is not at DEBUG level -- which might then cause fail2ban to fall into
#   an infinite loop constantly feeding itself with non-informative lines
[recidive]

enabled  = false
filter   = recidive
logpath  = /var/log/fail2ban.log
action   = iptables-allports[name=recidive]
           sendmail-whois-lines[name=recidive, logpath=/var/log/fail2ban.log]
bantime  = 604800  ; 1 week
findtime = 86400   ; 1 day
maxretry = 5
Run Code Online (Sandbox Code Playgroud)

如何在 jail.local 中添加?

[recidive]
enabled  = true
bantime  = 31536000  ; 1 year
findtime = 18144000  ; 1 month
maxretry = 2
Run Code Online (Sandbox Code Playgroud)

为了检查你的记录等级,你可以这样做:fail2ban-client get loglevel

  • 设置日志级别MYLEVEL:将日志级别设置为 MYLEVEL。级别:关键、错误、警告、通知、信息、调试
  • wiki 上的更多命令

使用旧版本的fail2ban,您可能会遇到此错误


小智 6

要扩展 Chin 的答案,这很简单。只需编辑 2 个设置/etc/fail2ban/jail.local以匹配您的偏好。

 # ban time in seconds. Use -1 for forever. Example is 1 week.
 bantime  = 604800
 # number of failures before banning
 maxretry = 5
Run Code Online (Sandbox Code Playgroud)