我有一台 centos 机器,并且希望只允许到某些远程机器的端口 587 的出站连接,并丢弃试图连接到所有其他主机的数据包。
如果他们要访问 gmail 的 SMTP 服务器(后面的所有 IP smtp.gmail.com
),我只想允许访问端口 587 。有没有办法实现这个?
您可以使用-d
切换到 iptables 规则,这使规则仅适用于提供的地址,然后阻止其他所有内容,例如
iptables -I OUTPUT -p tcp --dport 587 -j DROP
iptables -I OUTPUT -d smtp.gmail.com -p tcp -m tcp --dport 587 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
应该做你想做的。这最初将 DROP 端口 587 规则上的所有传出连接插入到 OUTPUT 链的开头。然后它将 smtp.gmail.com 端口 587 的允许规则插入到 OUTPUT 链的开头。这具有允许连接到 smtp.gmail.com:587 并阻止端口 587 上的所有其他内容的效果,例如
iptables -L OUTPUT -n
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 173.194.66.109 tcp dpt:587
ACCEPT tcp -- 0.0.0.0/0 173.194.66.108 tcp dpt:587
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:587
Run Code Online (Sandbox Code Playgroud)
请注意, smtp.gmail.com 解析为两个 IP 地址,这就是上面有两个 ACCEPT 规则的原因。该名称仅在规则添加到内核时解析一次,因此如果地址发生更改,则与 gmail 的连接也将被阻止,您需要重新加载规则。
归档时间: |
|
查看次数: |
4674 次 |
最近记录: |