Str*_*ian 7 linux networking firewall
Netfilter 连接跟踪旨在将某些数据包标识为与 conntrack 条目“相关”。
我正在寻找有关 ICMP 和 ICMPv6 错误数据包的 TCP 和 UDP conntrack 条目的完整详细信息。
针对 IPv6 防火墙,RFC 4890 清楚地描述了不应丢弃的 ICMPv6 数据包
http://www.ietf.org/rfc/rfc4890.txt
4.3.1. 不能丢弃的流量
对建立和维护通信至关重要的错误消息:
Run Code Online (Sandbox Code Playgroud)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必要的数据包检测能力。
Run Code Online (Sandbox Code Playgroud)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 节中列出的错误消息以外的错误消息:
Run Code Online (Sandbox Code Playgroud)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
Run Code Online (Sandbox Code Playgroud)
附录:当然,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
Run Code Online (Sandbox Code Playgroud)
换句话说,我可以安全地摆脱以下规则以符合 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
Run Code Online (Sandbox Code Playgroud)
我不知道答案,但你可以自己找到答案。
使用这些规则(出于会计目的创建一个空链“NOOP”):
*filter
...
:NOOP - [0:0]
...
-A INPUT -i wanif -p icmpv6 --icmpv6-type destination-unreachable -j NOOP
-A INPUT -i wanif -p icmpv6 --icmpv6-type packet-too-big -j NOOP
-A INPUT -i wanif -p icmpv6 --icmpv6-type ttl-exceeded -j NOOP
-A INPUT -i wanif -p icmpv6 --icmpv6-type parameter-problem -j NOOP
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-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
...
Run Code Online (Sandbox Code Playgroud)
有时稍后,使用ip6tables-save -c查看上述规则的计数器。如果“RELATED”行上方的 NOOP 规则的计数器 > 0,但下方的 ACCEPT 规则的计数器为 0,则您知道“RELATED”匹配已负责接受它们。如果某些 NOOP 规则的计数器为 0,那么您还无法判断该特定 icmpv6 类型 RELATED 是否执行此操作。如果某些 ACCEPT 行的计数器 > 0,那么您确实需要该明确的规则。