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

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并手动打开所需端口与我通过丢弃所有流量作为最后一条规则的方式有什么区别吗?

非常感谢,
谨致问候。

答案1

您当前的 chain 设置INPUT允许客户端通过 tcp 22、80 和 443 连接到您的服务器,并且传输控制协议您发起的连接将被回复。就是这样!没有icmp(用于 ping),否UDP协议(DNS查找)。

制定所有协议的ESTABLISHED, RELATED规则ALLOW,而不仅仅是传输控制协议,应该可以修复上述问题。

关于使用规则与DROP政策放弃一切:

iptables -P INPUT DROP

与以下内容相同:

iptables -A INPUT -j DROP

作为你的最后一条规则。

此外,除非你确切知道自己在做什么,否则你应该完全允许回送交通。

相关内容