帮助与Ubuntu VPS上的IPtables和SSH连接

寻找VPSconfiguration的帮助。 我是一个正在尝试configuration64位Ubuntu VPS的Web开发人员。 我将SSH端口更改为30000,添加了具有所有权限的用户,并使用以下脚本设置了IPtables

*filter # Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0 -A INPUT -i lo -j ACCEPT -A INPUT -i ! lo -d 127.0.0.0/8 -j REJECT # Accepts all established inbound connections -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Allows all outbound traffic # You could modify this to only allow certain traffic # This is in addition to allowing established and related traffic as listed above -A OUTPUT -j ACCEPT # Allows HTTP and HTTPS connections from anywhere (the normal ports for websites) -A INPUT -p tcp --dport 80 -j ACCEPT -A INPUT -p tcp --dport 443 -j ACCEPT # Allows SSH connections from trusted-host only - drop the rest # # CHANGE THE TRUSTED-HOST DETAILS AFTER THE WORD --source # THE -dport NUMBER IS THE SAME ONE YOU SET UP IN THE SSHD_CONFIG FILE # -A INPUT -p tcp -m state --state NEW --source mydomain.com --dport 30000 -j ACCEPT -A INPUT -p tcp --dport 30000 -j DROP # Create time lock for non-wanted SSH attempts of a period of 1 minute -A INPUT -p tcp -m state --syn --state NEW --dport 30000 -m limit --limit 1/minute --limit-burst 1 -j ACCEPT -A INPUT -p tcp -m state --syn --state NEW --dport 30000 -j DROP # Allow ping -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT # log iptables denied calls -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 # Reject all other inbound - default deny unless explicitly allowed policy -A INPUT -j REJECT -A FORWARD -j REJECT COMMIT 

当我尝试SSH使用标准的SSH命令我得到一个连接拒绝错误,这是预期的,但是当我尝试这个命令,terminal似乎挂起,变得没有反应,没有连接。

 ssh -p 30000 user@ipaddress 

我做了一些明显的与ssh命令显而易见或是有一个iptables脚本的错误?

所有的帮助非常感谢!

检查mydomain.comparsing到的IP地址是否与您实际尝试连接的IP地址相同。 如果我通过连接错误的IP地址的机器来创build情况,我可以做出与您所看到的相同的事情。

这条线尤其如此

 -A INPUT -p tcp --dport 30000 -j DROP 

导致terminal在从错误的机器连接时出现挂起。 删除线路并从错误的机器连接给我的错误信息

 ssh: connect to host host.lan port 22: No route to host 

在所有这些我能够连接,如果使用一台机器,具有正确的IP地址由mydomain.com解决。

我使用iptables很糟糕,但是我要说的是,在非标准端口上运行ssh基本上是徒劳的。 你不能假设人们不会find这个端口 – 所以你必须build立所有通常的保护(限制访问特定的用户或特定的客户端机器,closures密码访问和只允许基于密钥的访问等)

在这种情况下,港口的变化只是比它的价值更麻烦。

我build议,即使你想把它移动到不同的端口,它是使用正常的configuration先在普通端口上工作,然后你可以改变端口,知道它曾经工作,所以只有端口的变化成为任何问题的原因。