fail2ban 不会立即阻止

fail2ban 不会立即阻止

我在我的服务器上设置了一个fail2ban系统来限制SSH访问。它工作正常,除了在设备上输入用户名后,如果我输入错误的密码 3 次(我的最大重试值),它会继续允许用户尝试登录。但是如果我从尝试登录中删除退出作为该用户,并打开一个新会话,我现在被禁止了。

使用putty时,我输入目标地址(但不是用户名)

login as: user
user@address's password: 1234
Access Denied
user@address's password: 1235
Access Denied
user@address's password: 1324
Access Denied
user@address's password: 1234
Access Denied
user@address's password: 1235
Access Denied
user@address's password: 1324
Access Denied

理论上,它不应该让我在第三次尝试后登录,而是让我尝试 6 次,之后我会收到一个关于身份验证失败次数过多的弹出窗口。如果我随后返回,fail2ban 已正确阻止设备访问。

我怎样才能将其设置为在第三次尝试后立即启动?

编辑:我知道问题。然而,我相信这是不同的,因为那里的海报询问为什么它根本不阻塞。我更担心为什么它不阻止已经在进行的登录尝试。

答案1

经过我这边的一些调查,

  • 基于我的iptables配置确实fail2ban会阻止活动会话,包括尝试登录的会话和已登录的会话。
  • 基于my 的shorewall配置fail2ban不会阻止活动会话,但会阻止新的连接尝试。

差异取决于iptables用于禁止流量的规则和 的具体配置fail2ban

在不知道您使用的是原始抽象iptables还是更高级别的抽象之一(ufwshorewall等)的情况下,这里有一些提示:


使用iptables

  1. jail.local我有以下定义:

    banaction = iptables-multiport
    action_ = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
    action = %(action_)s
    

    在每个规则中,要么不覆盖默认设置,要么覆盖默认设置banaction = iptables-multiport(与默认设置相同)。

  2. 另外,为了jail.local确保最大重试次数反映您的首选策略,无论是默认策略还是每个服务规则集:

    maxretries = 3
    
  3. 确保action.d/iptables-multiport.conf您对 Ban 和 Unban 规则有这样的定义:

    actionban = iptables -I fail2ban-<name> 1 -s <ip> -j DROP
    actionunban = iptables -D fail2ban-<name> -s <ip> -j DROP
    

使用海岸墙

如果使用 Shorewall 连接器,fail2ban您需要调整默认规则,以便 Shorewall 不仅仅将阻止应用于初始会话,而是应用于该 IP 地址的所有流量。

  1. jail.local我有以下定义:

    banaction = shorewall
    action_ = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
    action = %(action_)s
    

    在每个规则中,要么不覆盖默认设置,要么覆盖默认设置banaction = shorewall(与默认设置相同)。

  2. 另外,为了jail.local确保最大重试次数反映您的首选策略,无论是默认策略还是每个服务规则集:

    maxretries = 3
    
  3. 在里面海岸墙配置文件shorewall.conf

    DYNAMIC_BLACKLIST=Yes
    BLACKLISTNEWONLY=No
    

    BLACKLISTNEWONLY设置确定是阻止所有连接还是仅阻止新连接。你会想要No这里。

相关内容