weidner/computer/netz/firewall/

RFCs für Paketfilter

Betreibe ich eine Paketfilter-Firewall (FW), dann gehen auf der einen Seite Datagramme hinein, auf der anderen Seite kommen welche heraus und ein paar bleiben auf der Strecke. Idealerweise die, welche ich nicht will. Das kann doch gar nicht so schwierig sein, könnte man meinen.

Erstaunlicherweise sind es recht viele Protokolle, von denen ich mehr wissen muss, als nur den Namen und wofür sie verwendet werden. Vorausgesetzt, ich will den Paketfilter nicht nur mit Rezepten von verschiedenen Quellen nach der Methode "drücke hier und schraube da" konfigurieren, sondern verstehen, was ich da tue.

Wenn ich eine Sache grundlegend verstehen will, komme ich nicht umhin, irgendwann zu den Quellen zu gehen. "Ad fontes", wie die Humanisten des frühen 16. Jahrhunderts zu sagen pflegten. Die Quellen für das Verstehen der Protokolle des Internet sind die RFCs. Mittlerweile gibt es mehr als 7500 und bei aller Liebe zum Detail, alle muss man nicht lesen, um die für Paketfilter wichtigen Netzwerkprotokolle zu kennen.

Welche RFCs sind denn nun aber relevant für den Betrieb einer Paketfilter-Firewall? Für diesen Artikel habe ich eine kommentierte Liste von RFCs, die für FW relevant sind, zusammengetragen.

Um welche Protokolle geht es überhaupt? Welche muss ich kennen, welche sollte ich kennen und welche sind nur relevant, wenn ich damit in meinem Netz konfrontiert werde?

Betrachte ich den Bereich IPv4, dann habe ich zunächst IPv4 selbst, ICMP und IGMP. Dazu kommen noch TCP und UDP auf denen die meisten Protokolle der höheren Schichten aufsetzen.

Im Bereich IPv6 sind es IPv6 selbst und ICMPv6, welches die Funktionen von IGMP mit übernimmt. Bei TCP und UDP ändert sich hier wenig gegenüber IPv4.

Und natürlich muss ich Ethernet kennen, das auf der Ebene der Hardware dominiert.

Damit haben wir schon die wichtigsten Protokolle der Schichten 1-4 des OSI-Modells aus der Sicht eines Firewall-Administrators.

Da die meisten Protokolle der OSI-Schichten 5-7 auf TCP oder UDP aufsetzen, reicht es in vielen Fällen, zu wissen, welche Ports verwendet werden und wer die Verbindung als erster aufbaut.

Natürlich gibt es Ausnahmen, wie FTP, das mit mehreren TCP-Verbindungen und verschiedenen Ports arbeitet oder wie TFTP, bei dem der Server die Verbindung an einem festen UDP-Port annimmt, aber die Daten über einen anderen, zufällig ausgewählten Port, sendet oder empfängt. Bei solchen Protokollen ist es auch für den gestandenen Firewall-Administrator ratsam, noch einmal im RFC nachzuschlagen.

Im Internet finde ich die RFCs unter http://tools.ietf.org/.

Ethernet

RFC 894, RFC 1042 und RFC 2464 beschreiben, wie IPv4 und IPv6 Datenpakete in Ethernet- und 802.3-Frames eingebettet werden können. In den meisten Fällen interessieren mich für das Filtern lediglich die MAC-Adressen. Arbeitet der Paketfilter jedoch als Ethernet-Bridge und nicht als Router, kann es interessant sein, sich mit anderen als IP-Protokollen auseinander zu setzen.

ARP, das Address Resolution Protocol ist in RFC 826 beschrieben, welches in RFC 5227 zum Thema Adress-Konflikterkennung aktualisiert wurde.

Bei IPv6 übernimmt die Neighbor Discovery via ICMPv6 diese Funktion. Sie ist in RFC 4861 beschrieben. RFC 5942 aktualisiert es in Bezug auf das IPv6-Subnetz-Modell, speziell für das Verhältnis zwischen Links und Subnetz-Präfixen. RFC 6980 geht auf die Auswirkungen von IPv6-Fragmentierung auf Neighbor Discovery ein.

IPv4

Das Internet Protokoll wurde in RFC 791 beschrieben. RFC 1349 ändert und erläutert einige Aspekte des Type of Servie (TOS) Felds im IP-Header. RFC 2474 definiert das Differentiated Services (DS) Feld im IPv4- und IPv6-Header. RFC 6864 schließlich aktualisiert die Definition des ID-Feldes im IPv4-Header.

ICMP

Das Internet Control Message Protocol ist in RFC 792 beschrieben. RFC 4884 erweitert ICMP für Multipart-Nachrichten. RFC 6633 liefert die förmliche Ablehnung der ICMP Source Quench Nachrichten und RFC 6918 begründet die Ablehnung weiterer wenig genutzter ICMP-Nachrichten förmlich.

TCP

Das Transmission Control Protocol ist in RFC 793 beschrieben. RFC 1122 erläutert die Anforderungen für Internet-Hosts und geht dabei näher auf TCP, UDP, ICMP und IP ein. RFC 3168 beschreibt die Ergänzung Explicit Congestion Notification (ECN) und deren Anwendung bei TCP.

UDP

Das User Datagram Protocol ist im RFC 768 von 1980 beschrieben. Das Protokoll ist so simpel, dass drei Seiten für die Beschreibung und weiterführende Referenzen ausreichten.

Für IPv6 ergab sich lediglich die Notwendigkeit, die UDP-Checksumme obligatorisch zu machen, da im IPv6-Header keine Checksumme enthalten ist. RFC 768 erlaubt noch das Senden von UDP-Datagrammen ohne Checksumme.

IGMP

RFC 1112 beschreibt die Host Extensions for Multicasting und in seinem Anhang Version 1 dieses Protokolls.

Version 2 des Internet Group Management Protocols ist in RFC 2236 beschrieben, Version 3 in RFC 3376.

IPv6

IPv6 wurde erstmals 1995 in RFC 1883 beschrieben. Diese inzwischen veraltete Beschreibung wurde 1998 durch RFC 2460 abgelöst.

RFC 4303 "IP Encapsulating Security Payload (ESP)" beschreibt die IPv6 Header Extensions für IPsec.

Tunnelprotokolle

Für die Übergangszeit, in der sowohl IPv4 als auch IPv6 nebeneinander existieren gibt es verschiedene Protokolle, mit denen man IPv6-Datagramme über IPv4-Netze übertragen kann und umgekehrt. Will ich diese im Paketfilter regulieren, muss ich sie kennen.

6to4 ist ein Protokoll, bei dem Tunnel aufgebaut werden, um IPv6-Pakete über IPv4-Netze zu übertragen. Dieses Protokoll ist in RFC 3056 beschrieben.

6rd (IPv6 Rapid Deployment on IPv4 Infrastructures) baut auf 6to4 auf und ist in RFC 5569 und RFC 5969 beschrieben.

ISATAP (Intra-Site Automatic Tunnel Addressing Protocol) ist in RFC 5214 beschrieben.

Teredo tunnelt Pakete via UDP und funktioniert damit auch via NAT. Es ist in RFC 4380 beschrieben.

GRE (Generic Routing Encapsulation) erlaubt es, beliebige Protokolle in beliebigen anderen Protokollen zu kapseln. Es ist in RFC 2784 beschrieben.

ICMPv6

Das Internet Control Message Protocol for IPv6 wurde erstmals 1995 in RFC 1885 beschrieben. Seit 2006 enthält RFC 4443 die aktuelle Beschreibung, die wiederum durch RFC 4884 aktualisiert und ergänzt wird.

Für den Firewall-Administrator besonders interessant ist RFC 4890 "Recommendations for Filtering ICMPv6 Messages in Firewalls", das begründete Empfehlungen für die Behandlung von ICMPv6 gibt.


Ich arbeite im Moment an einem weiteren Buch zum Thema Paketfilter bei OpenWrt. Dafür suche ich noch Korrektur- und Testleser. Wer Interesse hat, kann sich über das Kontaktformular an mich wenden.

Posted 2015-06-12
Tags: