netfilter TCP/UDP conntrack ICMP / ICMPv6 関連ステータス

netfilter TCP/UDP conntrack ICMP / ICMPv6 関連ステータス

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ネットワークでは、保護されたネットワークに対する攻撃検出のリスクを最小限に抑えるために、ファイアウォールにエコー要求メッセージを削除することが一般的な方法です。セクション3.2で説明したように、IPv6ネットワークではポートスキャンのリスクがはるかに少なく、IPv6エコー要求メッセージをフィルタリングする必要はありません。

4.3.2。一般的に削除しないトラフィック

セクション4.3.1にリストされているエラーメッセージに加えて:

Time Exceeded (Type 3) - Code 1
    Parameter Problem (Type 4) - Code 0

Linux ホーム ルータの場合、RFC 4890 ICMPv6 パケットの通過を許可しながら WAN インターフェイスを保護するには、次のルールで十分ですか? (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

ベストアンサー1

私は答えがわかりませんが、自分で見つけることができます。

次の規則を使用してください(会計目的で空のチェーン「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
...

時には後でip6tables-save -cカウンターを使用して上記のルールを確認してください。 「関連」行の上のNOOPルールのカウンタは0より大きいが、その下のACCEPTルールのカウンタが0の場合、「関連」一致がそのエントリを受け入れたことがわかります。一部のNOOPルールのカウンタが0の場合、特定のicmpv6タイプRELATEDがこれを実行しているかどうかはまだわかりません。一部のACCEPT行のカウンタが0より大きい場合、その明示的な規則が実際に必要です。

おすすめ記事