许多常见的防火墙规则都包含一些阻止特定入站流量的行。以 ipfw 为例:
# Fragments
$cmd 00420 deny all from any to any frag in via $pif
# ACK packets that did not match the dynamic rule table
$cmd 00430 deny tcp from any to any established in via $pif
然而,最后人们通常会阻止任何不符合任何规则的内容:
# Deny any other inbound traffic, with logging
$cmd 00998 deny log all from any to any in via $pif
# Deny any other traffic, with logging
$cmd 00999 deny log all from any to any
如果我们如上所示阻止所有其他流量,那么包含第一组规则会带来什么好处呢?
答案1
我不能说ipfw
,但这iptables
很有道理,因为首场决定性比赛获胜,并且在顶部的明确拒绝和底部的全面拒绝之间通常存在宽松的规则(除非您正在构建一个非常非常安静的设备!)。
例如,如果你明确想排除所有火星人,你需要有这样的线条
iptables -A INPUT -s 10.0.0.0/8 -j DROP
iptables -A INPUT -s 172.16.0.0/12 -j DROP
iptables -A INPUT -s 192.168.0.0/16 -j DROP
在类似这样的行之前
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP
因为否则,ssh 的 ACCEPT 行将在火星人看到全面的 DENY 之前允许他们这样做。
感谢 Michael Hampton 证实同样的逻辑也适用于ipfw
规则集。