在使用fail2ban重试之后的永久性IP块

我有一个fail2banconfiguration如下:

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

这完美的作品,我想保持这样的方式,使有效的用户有机会在超时后重试login。 现在,我想实现一个规则,即如果检测到相同的IP被攻击和阻止,解锁5次,永久阻止IP并且不再解除阻塞。 这可以单独使用fail2ban来实现吗?或者我需要编写自己的脚本来做到这一点?

我正在做这个。

    fail2ban中没有默认function或设置来实现此function。 但是,您可能正在寻找设置fail2ban来监视自己的日志文件 。 这是一个两步的过程…

    步骤1

    我们可能需要创build一个filter来检查日志文件中的BAN (fail2ban的日志文件)

    第2步

    我们需要定义监狱 ,类似于以下…

     [的fail2ban]
     enabled = true
     filter = fail2ban
     action = iptables-allports [name = fail2ban]
     logpath = /path/to/fail2ban.log
     #findtime:1天
     findtime = 86400
     #禁令:1年
     bantime = 31536000
    

    从技术上讲,这不是一个永久性的障碍 ,而只是阻止一年(我们也可以增加)。

    无论如何,对于你的问题(这可以通过fail2ban单独实现,或者我需要写自己的脚本来做到这一点?)…编写自己的脚本可能会运行良好。 设置脚本来提取经常被禁止的IP,然后把它们放入/etc/hosts.deny是我的build议。

    我相信,如果你把bantime = -1在configuration部分,这是一个永久性的块。

    菲尔·哈根就这个问题写了一篇很好的文章。 “ 使用fail2ban永久禁止重犯 ”。

    他的build议和Pothi一样,但提供了一步一步的指导。

    这包括:

    • 由监狱单独禁止列表(ip.blocklist.ssh,ip.blocklist.xxx)
    • 禁止列表自动加载如果服务重新启动 (这种方法imho的主要优点)
    • 电子邮件通知,如果中继从事。

    为了扩大Chin的答案,这很简单。 只需编辑/etc/fail2ban/jail.local的2个设置以符合您的偏好。

      # ban time in seconds. Use -1 for forever. Example is 1 week. bantime = 604800 # number of failures before banning maxretry = 5