允许访问互联网的 iptables 规则

Cha*_*hak 3 security firewall iptables

我为我的机器制定了默认策略-

iptables -A INPUT -j REJECT #DROP ALL PACKETS TO INPUT CHANNEL
Run Code Online (Sandbox Code Playgroud)

INPUT 通道已被阻塞。现在我只想允许一些特定的服务,比如我应该能够访问互联网。那么我应该添加什么规则?端口 80 用于 HTTP,所以我尝试允许该端口

iptables -A INPUT -p tcp --dport 80 ACCEPT
Run Code Online (Sandbox Code Playgroud)

但它没有用。让我知道我该怎么做?

xen*_*ide 6

iptables规则是顺序的,这意味着它们匹配的第一个规则将被执行。ACCEPT、DROP 和 REJECT 等规则是终止的,这意味着数据包不会进一步进入链。-A表示追加。所以你所做的是

  • 匹配一切并拒绝它#一切都到此为止
  • 接受 tcp 端口 80 # 我们永远不会到达这里,因为一切都停止了 ^

不幸的是,tcp 端口 80 是一切的一部分,因此您永远无法达到第二条规则。刷新您的INPUT-F并颠倒您运行规则的顺序。我还推荐阅读Dan Robbins 关于有状态防火墙设计的文章,这不仅适用于 gentoo 或 2.4 内核。