更改SSH端口,但iptables拒绝

我只是改变了我的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只是为了这个公共粘贴,但在我的服务器,这是不是我想replace22端口号

这里似乎有什么错误?

在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规则应该是最后的。

它不起作用,因为您将新的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 

当你改变你的SSH端口时,首先确保你的sshd_config文件是正常的,如果是的话,运行这个命令,其中x是你的目标端口:

 sudo iptables -A INPUT -p tcp --dport x -j ACCEPT 

希望有所帮助。