我正在尝试设置一个 iptables,它只允许通过 ssh 进入的流量,并设置一个 catch all 来阻止进入计算机的其他所有流量。iptables -L 输出如下所示
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
DROP all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
上述操作似乎阻止了除 SSH 之外进入计算机的任何内容,但是,它似乎还阻止了来自传出请求的返回流量。例如,如果我尝试 ping www.google.com,它似乎会尝试解析 DNS。我假设我的 DROP all 阻止了来自 DNS 请求的响应。
有人能指导我如何正确设置 catch-all 以允许返回流量吗?
谢谢你,
马修
答案1
用于-m state --state ESTABLISHED,RELATED
匹配返回流量。另外,您不必包含“全部丢弃”规则,只需将 INPUT 的链策略更改为“DROP”即可。
sudo iptables -F INPUT
sudo iptables -P INPUT DROP
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT