Netfilter 连接跟踪旨在将某些数据包识别为与 conntrack 条目“相关”。
我正在寻找有关 ICMP 和 ICMPv6 错误数据包的 TCP 和 UDP conntrack 条目的完整详细信息。
针对 IPv6 防火墙,RFC 4890 清楚地描述了不应丢弃的 ICMPv6 数据包
http://www.ietf.org/rfc/rfc4890.txt
4.3.1。不得丢弃的流量
对建立和维护通信至关重要的错误消息:
Destination Unreachable (Type 1) - All codes Packet Too Big (Type 2) Time Exceeded (Type 3) - Code 0 only Parameter Problem (Type 4) - Codes 1 and 2 only Appendix A.4 suggests some more specific checks that could be performed on Parameter Problem messages if a firewall has the
必要的数据包检测能力。
Connectivity checking messages: Echo Request (Type 128) Echo Response (Type 129) For Teredo tunneling [RFC4380] to IPv6 nodes on the site to be possible, it is essential that the connectivity checking messages are
允许通过防火墙。IPv4 网络中的常见做法是在防火墙中丢弃 Echo Request 消息,以最大程度地降低对受保护网络进行扫描攻击的风险。如第 3.2 节所述,IPv6 网络中端口扫描的风险要小得多,因此没有必要过滤 IPv6 Echo Request 消息。
4.3.2. 通常不应丢弃的流量
第 4.3.1 节中列出的错误消息以外的错误消息:
Time Exceeded (Type 3) - Code 1 Parameter Problem (Type 4) - Code 0
对于 linux 家用路由器,以下规则是否足以保护 WAN 接口,同时允许 RFC 4890 ICMPv6 数据包通过?(ip6tables-保存格式)
*filter
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
附录:当然,NDP 和 DHCP-PD 需要其他规则:
-A INPUT -s fe80::/10 -d fe80::/10 -i wanif -p ipv6-icmp -j ACCEPT
-A INPUT -s fe80::/10 -d fe80::/10 -i wanif -p udp -m state --state NEW -m udp --sport 547 --dport 546 -j ACCEPT
换句话说,我可以安全地摆脱以下规则以遵守 RFC 4980,只保留“相关”规则吗?
-A INPUT -i wanif -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT
-A INPUT -i wanif -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT
-A INPUT -i wanif -p icmpv6 --icmpv6-type ttl-exceeded -j ACCEPT
-A INPUT -i wanif -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT
我不知道答案,但你可以自己找出答案。
使用这些规则(为会计目的创建一个空链“NOOP”):
然后有时稍后,用于
ip6tables-save -c
查看上述规则的计数器。如果计数器大于“相关”行上方的 NOOP 规则的 0,但下方的接受规则为 0,则您知道“相关”匹配已处理接受它们。如果某个 NOOP 规则的计数器为 0,那么对于该特定 icmpv6 类型,您还无法判断 RELATED 是否执行此操作。如果某些 ACCEPT 行的计数器 > 0,那么您确实需要该显式规则。