更新:

更新:

在 Ubuntu 14.04 Server 上运行。

因此我已正确配置 fail2ban 来处理/var/log/auth.logSSH 登录尝试。

经过 3 次尝试失败后,我在 fail2ban 日志中看到了以下内容:

2014-11-19 15:22:56,822 fail2ban.actions: WARNING [ssh] Ban BANNED_IP_ADDY

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

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

同样的情况也适用于我所有的 fail2ban jail。例如 Apache,我可以看到 fail2ban 正确检测日志并声称它禁止了 IP。该 IP 最终进入 iptables 链,但实际上并未被拒绝。

我感觉这些情况是因为 SSH 不在标准端口上。它在另一个端口上。

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

[ssh]

enabled  = true
port     = 32323
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 5

然后我看到这个错误:

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

如果我把它保留为

 port = ssh

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

更新:

如果我改变:

banaction = iptables-multiport

到:

banaction = iptables-allports

那么它似乎起作用了。这个改变会带来什么影响?

看来,fail2ban由于 SSH 而导致 IP 被禁止,allports它禁止了该 IP 的每个端口。由于反复 ssh 登录失败而被故意禁止。在其他所有服务上也被禁止。

答案1

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

iptables -n -L INPUT
iptables -n -L OUTPUT

以及所有 fail2ban 链,这样我就能更加精确。

答案2

我刚刚遇到了同样的问题,这是解决方法。使用 banaction = iptables-multiport 被禁止的默认 ssh 端口是 22。我假设你像我一样更改了默认 ssh 端口。

只需在 sshd 配置上指向正确的端口即可。

[sshd]
enabled = true
banaction = iptables-multiport
port = ###
....

答案3

INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh

相关内容