初学者 IPTables 问题

初学者 IPTables 问题

我目前正在分析现有的 iptables 规则集,以便修改默认策略。但是,我需要一些帮助来理解一些规则。

$UNIVERSE 定义为0.0.0.0/0。以下规则的用例是什么?

# Allow any related traffic coming back to the MASQ server in.
-A INPUT -i $EXTIF -s $UNIVERSE -d $EXTIP -m conntrack --ctstate 
   ESTABLISHED,RELATED -j ACCEPT

HTTP(S) 可能具有哪些类型的相关连接?我真的需要在这里指定 RELATED 吗?

# External interface, HTTP/HTTPS traffic allowed
-A INPUT -i $EXTIF -m conntrack --ctstate NEW,ESTABLISHED,RELATED -p tcp -s 
   $UNIVERSE -d $EXTIP --dport 80 -j ACCEPT
-A INPUT -i $EXTIF -m conntrack --ctstate NEW,ESTABLISHED,RELATED -p tcp -s 
   $UNIVERSE -d $EXTIP --dport 443 -j ACCEPT

为什么我需要以下内容?用例是什么?

# Accept solicited tcp packets
-A FORWARD -i $EXTIF -o $INTIF -m conntrack --ctstate 
      ESTABLISHED,RELATED  -j ACCEPT

此外,当我这样做时,lsmod我可以看到nf_conntracknf_conntrack_ftp。我还必须使用-m conntrack或吗-m nf_conntrack

更新:完整脚本是这里 我需要将默认策略更改为 DROP。

答案1

如果数据包的状态为 ESTABLISHED 或 RELATED,则第一条规则将接受外部接口(假设来自 $EXTIF)上的任何传入连接,任何源地址到外部 IP 地址的连接。这意味着不允许新数据包通过。可能的用例是如果您有一个通过其他规则获得的新数据包。

您可能需要 HTTP/HTTPS 中 TIME_WAIT 中的数据包的 RELATED 状态,但我对此不确定。

对于您的第三个问题,FORWARD 规则是将数据包转发到内部接口(再次假设),可能是用于隧道接口、另一个主机或类似接口。

据我所知,conntrack 已被弃用,现在被 nf_conntrack 取代,原因我不知道。

答案2

-A INPUT -i $EXTIF -s $UNIVERSE -d $EXTIP -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

此规则允许从任何地方进入 EXTernal IP 并发往防火墙盒本身(不进行 NAT)的数据包,只要状态为 ESTABLISHED(即对传出数据包的回复)或 RELATED(例如,有关原始传出数据包的 ICMP 错误消息,如“目标不可达”)

-A INPUT -i $EXTIF -m conntrack --ctstate NEW,ESTABLISHED,RELATED -p tcp -s $UNIVERSE -d $EXTIP --dport 80 -j ACCEPT
-A INPUT -i $EXTIF -m conntrack --ctstate NEW,ESTABLISHED,RELATED -p tcp -s $UNIVERSE -d $EXTIP --dport 443 -j ACCEPT

NEW、ESTABLISHED 和 RELATED 实际上覆盖了可能发送到端口 80 和 443 的 99% 的数据包。与前面一样,RELATED 主要用于匹配 ICMP 错误消息。

-A FORWARD -i $EXTIF -o $INTIF -m conntrack --ctstate ESTABLISHED,RELATED  -j ACCEPT

上述INPUT规则匹配发往防火墙本身的数据包。该FORWARD规则允许发往内部网络主机而非防火墙本身的数据包。ESTABLISHED 和 RELATED 的含义与前面相同。

另外,当我执行 lsmod 时,我可以看到 nf_conntrack 和 nf_conntrack_ftp。我是否仍必须使用 -m conntrack 或 -m nf_conntrack?

是的。nf_conntracknf_conntrack_ftp模块是先决条件才能工作。第一次遇到时-m conntrack它将自动加载。iptables-m conntrack

根本没有这样的事-m nf_conntrack

相关内容