我目前正在分析现有的 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_conntrack
和nf_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_conntrack
和nf_conntrack_ftp
模块是先决条件才能工作。第一次遇到时-m conntrack
它将自动加载。iptables
-m conntrack
根本没有这样的事-m nf_conntrack
。