是否可以这样配置 IPTables,即所有到特定 IP 和端口的传出数据包都使用不同的端口进行更改,并对传入数据包执行相同的操作?
我必须定期使用服务器,并且主机托管商决定只能在端口 222 而不是默认的 22 上进行 SSH 访问。
这在 ssh、scp 或 rsyncing 时总是会让人头疼。你总是要记得添加端口参数。
我想用 IPTables 来解决这个问题。
非常感谢您的帮助。
答案1
是的,设置 iptable 规则来 NAT 传出流量是完全可能的。您实际上只需要创建一个处理输出流量的规则。您不需要规则来对返回的数据包执行任何操作。netfilter 的状态特性将为您处理这个问题。
您可能需要使用类似这样的规则。
# if you want to redirect requests from the local machine
iptables -t nat -A OUTPUT--destination remote.host.ip \
-p tcp --dport 22 -j DNAT --to-destination remote.host.ip:222
# if you want to redirect requests on a device inline
iptables -t nat -A PREROUTING --destination remote.host.ip \
-p tcp --dport 22 -j DNAT --to-destination remote.host.ip:222
另一个简单的解决方案是简单地为服务器设置一个 SSH 配置文件并在配置中指定端口。
# list of all names, you might commonly use for this host.
Host foo foo.example.org foo.example
# real hostname
Hostname real.example.org
Port 222
答案2
我建议你读一下关联。如果您决定这样做,我还强烈建议对 SSH 和面向公众的 IP 使用以下安全步骤。
- 不允许 root 登录。
- 仅允许从某些 IP 开放此端口。
- 具有基于密钥的身份验证。
- 使用诸如denyhosts之类的工具来阻止任何类型的暴力破解尝试。