Ein tiefgehender Blick auf die Iptables- und Netfilter-Architektur
Einleitung
Firewalls sind ein wichtiges Werkzeug, um Ihre Server und Infrastruktur zu schützen. In der Linux-Welt ist iptables ein weit verbreitetes Firewall-Tool, das mit dem Paketfilterframework netfilter des Kernels zusammenarbeitet. Das Erstellen zuverlässiger Firewall-Richtlinien kann aufgrund komplexer Syntax und vieler zusammenhängender Teile herausfordernd sein. In diesem Leitfaden tauchen wir in die iptables-Architektur ein, um sie verständlicher zu machen für Benutzer, die ihre eigenen Firewall-Richtlinien erstellen müssen. Wir werden besprechen, wie iptables mit netfilter interagiert und wie die verschiedenen Komponenten zusammenpassen, um ein umfassendes Filtersystem bereitzustellen.
Was sind IPTables und Netfilter?
Die Firewall-Software, die in Linux seit vielen Jahren am häufigsten verwendet wird, heißt iptables. In einigen Distributionen wurde sie durch ein neues Tool namens nftables ersetzt, aber die Syntax von iptables wird immer noch häufig als Ausgangspunkt verwendet. Die iptables-Firewall arbeitet durch Interaktion mit den Paketfilterungshooks im Netzwerkstack des Linux-Kernels. Diese Kernel-Hooks sind als das netfilter-Framework bekannt. Jedes Paket, das durch die Netzwerkschicht (eingehend oder ausgehend) läuft, löst diese Hooks aus und ermöglicht es Programmen, mit dem Datenverkehr an wichtigen Punkten zu interagieren. Die Kernelmodule, die mit iptables verbunden sind, registrieren sich bei diesen Hooks, um sicherzustellen, dass der Datenverkehr den Bedingungen der Firewall-Regeln entspricht.
Netfilter-Hooks
Es gibt fünf netfilter-Hooks, bei denen Programme sich registrieren können. Die Hooks, die ein Paket auslösen wird, hängen davon ab, ob das Paket eingehend oder ausgehend ist, das Ziel des Pakets und ob das Paket an einer früheren Stelle abgelehnt oder abgebrochen wurde. Die folgenden Hooks repräsentieren diese gut definierten Punkte im Netzwerkstack:
- NF_IP_PRE_ROUTING
- NF_IP_LOCAL_IN
- NF_IP_FORWARD
- NF_IP_LOCAL_OUT
- NF_IP_POST_ROUTING
Kernelmodule, die sich bei diesen Hooks registrieren müssen, müssen auch eine Prioritätsnummer angeben, um die Reihenfolge festzulegen, in der sie aufgerufen werden, wenn der Hook ausgelöst wird. Jedes Modul wird nacheinander aufgerufen und gibt nach der Verarbeitung eine Entscheidung an das netfilter-Framework zurück, die angibt, was mit dem Paket geschehen soll.
IPTables-Tabellen und Ketten
Die iptables-Firewall verwendet Tabellen, um ihre Regeln zu organisieren. Diese Tabellen klassifizieren Regeln nach dem Typ der Entscheidungen, die sie treffen sollen. Innerhalb jeder iptables-Tabelle sind Regeln wiederum in separaten „Ketten“ organisiert. Während Tabellen durch das allgemeine Ziel der von ihnen gehaltenen Regeln definiert sind, stellen die integrierten Ketten die netfilter-Hooks dar, die sie auslösen. Ketten bestimmen, wann Regeln bewertet werden. Die Namen der integrierten Ketten spiegeln die Namen der netfilter-Hooks wider, mit denen sie verbunden sind: PREROUTING, INPUT, FORWARD, OUTPUT und POSTROUTING.
Welche Tabellen stehen zur Verfügung?
Die Filtertabelle ist eine der am häufigsten verwendeten Tabellen in iptables. Sie wird verwendet, um Entscheidungen darüber zu treffen, ob ein Paket weiter zu seinem Ziel geleitet oder die Anfrage abgelehnt werden soll. Die NAT-Tabelle wird verwendet, um Regeln zur Netzwerkadressübersetzung umzusetzen. Die Mangle-Tabelle wird verwendet, um die IP-Header des Pakets auf verschiedene Arten zu ändern. Die Raw-Tabelle hat eine sehr eng definierte Funktion: Sie dient dazu, Pakete zu markieren, um sich von der Verbindungsnachverfolgung abzumelden. Die Security-Tabelle wird verwendet, um interne SELinux-Sicherheitskontextmarkierungen auf Pakete zu setzen, die beeinflussen, wie SELinux oder andere Systeme, die SELinux-Sicherheitskontexte interpretieren können, die Pakete behandeln.
IPTables-Regeln
Regeln werden in einer bestimmten Kette einer bestimmten Tabelle platziert. Die übereinstimmende Komponente einer Regel gibt die Kriterien an, die ein Paket erfüllen muss, damit die zugehörige Aktion („Ziel“) ausgeführt wird. Die Verfügbarkeit jedes Ziels innerhalb von Regeln hängt vom Kontext ab. Springen zu benutzerdefinierten Ketten ist ebenfalls möglich.
IPTables und Verbindungsnachverfolgung
Die Verbindungsnachverfolgung ermöglicht es iptables, Entscheidungen über Pakete im Kontext einer laufenden Verbindung zu treffen. Die verfolgten Zustände in der Verbindungsnachverfolgung erlauben es Administratoren, Regeln zu erstellen, die auf bestimmte Punkte im Lebenszyklus einer Verbindung abzielen.
Fazit
Das netfilter-Paketfilterframework und die iptables-Firewall bilden die Grundlage für die meisten Firewall-Lösungen auf Linux-Servern. Durch das Verständnis darüber, wie diese Teile zusammenpassen, können Sie sie besser nutzen, um Ihre Serverumgebungen zu steuern und zu sichern.