IPTables - 更改传出和传入数据包的端口

IPTables - 更改传出和传入数据包的端口

是否可以这样配置 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 使用以下安全步骤。

  1. 不允许 root 登录。
  2. 仅允许从某些 IP 开放此端口。
  3. 具有基于密钥的身份验证。
  4. 使用诸如denyhosts之类的工具来阻止任何类型的暴力破解尝试。

相关内容