我刚刚将 SSH 端口从默认的 22 更改了。现在,我无法再访问它了,我以为是防火墙的问题。我已经将新端口添加到 iptables,然后执行sudo iptables-save
。但是它仍然不起作用。这是我的iptables
规则:
# Generated by iptables-save v1.4.21 on Mon Sep 15 12:15:39 2014
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [6:688]
:fail2ban-nginx-http-auth - [0:0]
:fail2ban-ssh - [0:0]
-A INPUT -p tcp -m multiport --dports 80,443 -j fail2ban-nginx-http-auth
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -j DROP
-A INPUT -p tcp -m tcp --dport 99999 -j ACCEPT
-A INPUT -p tcp -m multiport --dports 99999 -j fail2ban-ssh
-A fail2ban-nginx-http-auth -j RETURN
-A fail2ban-ssh -j RETURN
COMMIT
# Completed on Mon Sep 15 12:15:39 2014
我只是为了这个公共粘贴而更改了我的实际端口99999
,但在我的服务器中,这不是我希望替换的端口22
号。
这里似乎有什么问题?
答案1
iptables 中的顺序很重要,规则是按顺序遍历的。
-A INPUT -j DROP
-A INPUT -p tcp -m tcp --dport 99999 -j ACCEPT
-A INPUT -p tcp -m multiport --dports 99999 -j fail2ban-ssh
删除所有内容后,后续规则将永远不会被执行,也不会产生任何效果。您的一般 DROP 规则应该放在最后。
答案2
它不起作用,因为你把新ACCEPT
规则放在了规则之后DROP
。
该规则-A INPUT -j DROP
丢弃所有内容。没有数据包会达到该规则-A INPUT -p tcp -m tcp --dport 99999 -j ACCEPT
。
使用DROP
也不是最好的主意。如果你想确保一切正常,最好使用REJECT
适当的响应。例如:
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -j REJECT --reject-with icmp-host-prohibited
答案3
当您更改 SSH 端口时,首先请确保您的 sshd_config 文件没有问题,如果是这样,则运行此命令,其中 x 是您的目标端口:
sudo iptables -A INPUT -p tcp --dport x -j ACCEPT
希望有所帮助。