我刚刚安装了 Ubuntu Server 14.04,对 IPtables 没什么经验。我尝试进行一个基本设置,只接受端口 22 和 2222 上的 SSH 连接。实际上,使用 fail2ban ssh 可以毫无问题地完成此操作。然后我想阻止除 423 和 4242 之外的所有其他端口,但删除所有未列出的连接的任何一种方法似乎都不起作用,它会阻止我访问所有内容。以下是有效的设置:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 22,2222 -j fail2ban-ssh
-A fail2ban-ssh -j RETURN
我尝试将其更改为:
-P INPUT DROP
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 22,2222 -j fail2ban-ssh
-A fail2ban-ssh -j RETURN
或者:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 22,2222 -j fail2ban-ssh
-A INPUT -j DROP
-A fail2ban-ssh -j RETURN
我注意到 fail2ban-ssh 的规则会在启动时自动添加到我的 iptables 中,因为如果我使用 iptables-persisstant 保存它们,它们会被输入两次。我该如何使用 fail2ban 阻止所有接受这两个端口?这是一个糟糕的 fail2ban 配置,还是我需要添加
fail2ban-ssh -j Return
我的代码中的其他地方。
答案1
您需要有额外的规则来允许您连接,因为创建 fail2ban-ssh 链是为了从 fail2ban 程序添加新规则。
工作示例:
-P INPUT DROP
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 22,2222 -s <YOUR-IP> -j ACCEPT
-A INPUT -p tcp -m multiport --dports 22,2222 -j fail2ban-ssh
-A fail2ban-ssh -j RETURN
这个问题实际上与 fail2ban 无关。实际上,在您的“有效设置”中,任何连接都可以连接到任何端口,除非被 fail2ban 程序禁止。