Netfilter TCP / UDP Conntrack RELATED-Status mit ICMP / ICMPv6

7

Die Netfilter-Verbindungsverfolgung dient dazu, einige Pakete als "RELATED" für einen Conntrack-Eintrag zu identifizieren.

Ich suche nach den vollständigen Details der TCP- und UDP-Conntrack-Einträge in Bezug auf ICMP- und ICMPv6-Fehlerpakete.

Speziell für die IPv6-Firewall beschreibt RFC 4890 klar die ICMPv6-Pakete, die nicht verworfen werden sollten

http://www.ietf.org/rfc/rfc4890.txt

4.3.1. Verkehr, der nicht fallen gelassen werden darf

Fehlermeldungen, die für den Aufbau und die Aufrechterhaltung der Kommunikation unerlässlich sind:

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

erforderliche Paketprüfungsfunktionen.

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

durch die Firewall erlaubt. In IPv4-Netzwerken ist es üblich, Echoanforderungsnachrichten in Firewalls abzulegen, um das Risiko von Scanangriffen auf das geschützte Netzwerk zu minimieren. Wie in Abschnitt 3.2 erläutert, sind die Risiken beim Port-Scannen in einem IPv6-Netzwerk viel geringer und es ist nicht erforderlich, IPv6-Echoanforderungsnachrichten zu filtern.

4.3.2. Verkehr, der normalerweise nicht gelöscht werden sollte

Andere als die in Abschnitt 4.3.1 aufgeführten Fehlermeldungen:

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

Reicht bei einem Linux-Heimrouter die folgende Regel aus, um die WAN-Schnittstelle zu schützen, während RFC 4890 ICMPv6-Pakete durchgelassen werden? (ip6tables-save format)

*filter
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Nachtrag: Natürlich braucht man andere Regeln für NDP und 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

Mit anderen Worten, kann ich die folgenden Regeln sicher entfernen, um RFC 4980 zu erfüllen, wobei nur die Regel "RELATED" zuerst beibehalten wird?

-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
Strangelovian
quelle

Antworten:

2

Ich weiß die Antwort nicht, aber Sie können es selbst herausfinden.

Verwenden Sie diese Regeln (erstellt eine leere Kette "NOOP" für Buchhaltungszwecke):

*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
...

Verwenden Sie dann manchmal später, um ip6tables-save -cdie Zähler für die oben genannten Regeln anzuzeigen. Wenn die Zähler für die NOOP-Regeln über der Zeile "RELATED"> 0 und für die unten stehenden ACCEPT-Regeln 0 sind, wissen Sie, dass die Übereinstimmung "RELATED" dafür gesorgt hat, dass sie akzeptiert werden. Wenn der Zähler für eine NOOP-Regel 0 ist, können Sie für diesen bestimmten icmpv6-Typ noch nicht sagen, ob RELATED dies tut oder nicht. Wenn für eine ACCEPT-Zeile der Zähler> 0 ist, benötigen Sie diese explizite Regel.

Jonas Berlin
quelle
1
Bei Ihrer Technik ist mir aufgefallen, dass icmpv6-Ziel nicht erreichbar (Typ 1) tatsächlich mit dem Status RELATED übereinstimmt. Ich denke, das ist auch der Fall bei Paket-zu-großen, ttl-überschrittenen Parameterproblemen (Typen 2, 3, 4).
Strangelovian
Außerdem habe ich bestätigt, dass Echoanforderung / Echoantwort (Typ 128/129) NICHT übereinstimmen.
Strangelovian