Fail2Ban 正确尝试禁止 IP,但 IP 没有被禁止 - iptables 链存在但不工作

Hal*_*far 13 ubuntu iptables fail2ban

在 Ubuntu 14.04 服务器上运行。

所以我已经正确配置了 fail2ban 来处理/var/log/auth.logSSH 登录尝试。

在 3 次尝试失败后,我在 fail2ban 日志中看到了这一点:

2014-11-19 15:22:56,822 fail2ban.actions: WARNING [ssh] Ban BANNED_IP_ADDY
Run Code Online (Sandbox Code Playgroud)

iptables -L 显示这个链:

Chain fail2ban-ssh (1 references)
target     prot opt source               destination         
REJECT     all  --  BANNED_IP_ADDY  anywhere             reject-with icmp-port-unreachable
RETURN     all  --  anywhere             anywhere
Run Code Online (Sandbox Code Playgroud)

然而,从那个 IP 我仍然可以通过 SSH 登录而没有任何问题。

同样的故事适用于我所有的 fail2ban 监狱。例如 Apache,我可以看到 fail2ban 正确检测到日志并声称它禁止了一个 IP。该 IP 最终位于 iptables 链中,但该 IP 实际上并未被拒绝。

在这些情况下,我有一种感觉是因为 SSH 不在标准端口上。它位于不同的端口上。

因此,如果我强制 ssh 监狱规则使用新端口:

[ssh]

enabled  = true
port     = 32323
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 5
Run Code Online (Sandbox Code Playgroud)

然后我看到这个错误:

2014-11-19 15:30:06,775 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 32323 -j fail2ban-ssh
iptables -F fail2ban-ssh
iptables -X fail2ban-ssh returned 400
2014-11-19 15:30:06,778 fail2ban.actions.action: ERROR  iptables -N fail2ban-ssh
iptables -A fail2ban-ssh -j RETURN
iptables -I INPUT -p tcp -m multiport --dports 32323 -j fail2ban-ssh returned 400
2014-11-19 15:30:06,779 fail2ban.actions.action: ERROR  iptables -n -L INPUT | grep -q 'fail2ban-ssh[ \t]' returned 100
2014-11-19 15:30:06,780 fail2ban.actions.action: CRITICAL Unable to restore environment
Run Code Online (Sandbox Code Playgroud)

如果我把它作为

 port = ssh
Run Code Online (Sandbox Code Playgroud)

然后它正确进入 iptables,但该链无法正常工作REJECT(如上所述)。

更新:

如果我改变:

banaction = iptables-multiport
Run Code Online (Sandbox Code Playgroud)

到:

banaction = iptables-allports
Run Code Online (Sandbox Code Playgroud)

然后它似乎工作。这种变化的影响是什么?

似乎fail2ban由于 SSH导致禁止 IP,因此allports它禁止了该 IP 的每个端口。由于多次 ssh 登录失败而故意被禁止。也被禁止使用其他所有服务。

Mar*_*rco 2

fail2ban 链未正确链接到您的 INPUT 和 OUTPUT 链。请编辑您的问题并提供以下输出:

iptables -n -L INPUT
iptables -n -L OUTPUT
Run Code Online (Sandbox Code Playgroud)

以及所有的fail2ban链,我将能够更精确。