我正在尝试为我的 Linux iptables 规则文件设置最少的规则,以便能够浏览互联网。
这是我所做的:
* filter
-A OUTPUT -p tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp --dport 443 -j ACCEPT
-A OUTPUT -p udp --dport 53 -j ACCEPT
COMMIT
由于这些规则,我无法上网。
我注意到当我输入时-A INPUT -j ACCEPT
,它可以工作,但我不明白为什么。那么我需要什么输入/输出端口来上网?
非常感谢。问候
编辑: 还是不行。
这是我的iptables -L
Chain INPUT (policy DROP)
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
Chain FORWARD (policy DROP)
blank
Chain OUTPUT (Policy ACCEPT)
ACCEPT all -- anywhere anywhere
但是,如果我添加-A INPUT -j ACCEPT
,我就可以上网了。所以 INPUT 中应该有其他东西阻止了它。
答案1
您还需要允许从远程服务器返回的流量。您的输入链需要允许这些响应;连接状态模块可以确保允许这些响应。
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
答案2
为什么您觉得有必要规范出站连接?
OUTPUT 表管理 OUTBOUND 数据包,INPUT 表管理入站数据包。
如果您希望保护您的工作站/服务器,您应该关注 INPUT 规则并使用默认的“DROP”规则和“RELATED,ESTABLISHED”规则,如下所示:
/sbin/iptables -P INPUT DROP
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
这将允许您打开其他特定端口,同时阻止大多数流量。
答案3
尝试在 /etc/sysconfig/iptables (你的 IPtables 规则文件) 中添加此行
-A 输入 -m 状态 --状态相关,已建立 -j 接受
有时候 iptables-save 对我来说不起作用,它显示通过重新启动 iptables 服务可以保存并将其返回到上一阶段