我有以下情况:
我只想允许访问 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
作为你的最后一条规则。
此外,除非你确切知道自己在做什么,否则你应该完全允许回送交通。