iptables允许某些端口,并禁用其余的

我有以下情况:
我只想允许访问22,80和443端口,一切都允许。

我的iptables -L看起来像这样:

 Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp dpt:https ACCEPT tcp -- anywhere anywhere tcp dpt:http ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT tcp -- anywhere anywhere state RELATED,ESTABLISHED DROP all -- anywhere anywhere Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 

但是我不能达到预期的效果,即使从我的服务器上,我也无法再ping任何东西(不能再上网了)。

另外,我看着选项来设置INPUT政策到DROP和手动打开所需的端口,但没有采取预期的效果。

DROP策略放在INPUT链上,并手动打开所需的端口以及通过删除所有stream量作为最后一条规则的方式,是否有任何区别。

感谢一堆,
最好的祝福。

您当前的INPUT链设置允许客户端通过tcp 22,80和443连接到您的服务器以及您发起的tcp连接进行回复。 而已! 没有icmp (用于ping),没有udp (DNS查找)。

有你的ESTABLISHED, RELATED规则ALLOW所有的协议,而不是只是TCP ,应该修复上述。

关于使用规则与DROP策略删除所有内容:

 iptables -P INPUT DROP 

是一样的事情有:

 iptables -A INPUT -j DROP 

作为你最后的规则。

另外,除非你确切地知道你在做什么,你应该完全允许回送stream量。