Ubuntu VPS 上的 IPtables 和 SSH 连接帮助

Ubuntu VPS 上的 IPtables 和 SSH 连接帮助

寻求 VPS 配置方面的帮助。我是一名 Web 开发人员,正在尝试配置 64 位 Ubuntu VPS。我将 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 时,出现连接被拒绝错误,这是意料之中的,但是当我尝试此命令时,终端似乎挂起了并且变得没有响应,并且没有建立连接。

ssh -p 30000 user@ipaddress

我是否使用 ssh 命令做了一些显而易见的事情,或者 iptables 脚本是否存在错误?

非常感谢所有的帮助!

答案1

检查解析到的 IP 地址mydomain.com是否与您实际尝试连接的 IP 地址相同。如果我通过从具有错误 IP 地址的机器进行连接来创建这种情况,我可能会发生与您看到的情况相同的情况。

尤其是这一行

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

导致终端在从错误的机器连接时挂起。删除线路并从错误的机器连接时,我收到错误消息

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

在整个过程当中,如果使用具有正确 IP 地址(由 解析)的机器,我就能进行连接mydomain.com

答案2

我对 iptables 不太在行,但我要说的是,在非标准端口上运行 ssh 基本上是徒劳的。你不能假设人们找不到端口 - 所以无论如何你都必须建立所有常见的保护措施(限制对特定用户或特定客户端计算机的访问、关闭密码访问并仅允许基于密钥的访问等)。

在这种情况下,更改端口只会带来更多的麻烦。

我的建议是,即使您想将其移动到不同的端口,也请先使用正常配置使其在正常端口上工作,然后您可以在知道它曾经工作过的情况下更改端口,因此只有端口更改才可能导致任何问题。

相关内容