Einführung
Die Einrichtung einer Firewall ist ein wesentlicher Schritt zur Sicherung eines jeden modernen Betriebssystems. Die meisten Linux-Distributionen werden mit einigen verschiedenen Firewall-Tools geliefert, die Sie zur Konfiguration einer Firewall verwenden können. In diesem Leitfaden werden wir die iptables
-Firewall behandeln.
Iptables ist eine Standard-Firewall, die in den meisten Linux-Distributionen standardmäßig enthalten ist. Es handelt sich um eine Befehlszeilenschnittstelle zu den netfilter-Hooks auf Kernel-Ebene, die den Linux-Netzwerkstack manipulieren können. Es funktioniert, indem es jedes Paket, das die Netzwerkschnittstelle überquert, mit einem Satz von Regeln abgleicht, um zu entscheiden, was zu tun ist.
In diesem Leitfaden werden Sie erfahren, wie Iptables funktioniert. Für einen tieferen Einblick können Sie lesen Eine eingehende Analyse der Iptables- und Netfilter-Architektur.
Wie Iptables funktioniert
Zunächst wollen wir einige Begriffe überprüfen und besprechen, wie iptables funktioniert.
Die iptables-Firewall arbeitet, indem sie den Netzwerkverkehr mit einer Reihe von Regeln vergleicht. Die Regeln definieren die Merkmale, die ein Netzwerkpaket haben muss, um übereinzustimmen, und die Aktion, die für übereinstimmende Pakete ausgeführt werden soll.
Es gibt viele Möglichkeiten, festzustellen, welche Pakete einer bestimmten Regel entsprechen. Sie können das Paketprotokoll, die Quell- oder Zieladresse oder -port, die verwendete Schnittstelle, ihre Beziehung zu vorherigen Paketen und so weiter abgleichen.
Wenn das definierte Muster übereinstimmt, wird die Aktion, die stattfindet, als Ziel bezeichnet. Ein Ziel kann eine endgültige Richtlinienentscheidung für das Paket sein, wie zum Beispiel ACCEPT
oder DROP
. Es kann auch das Paket zu einer anderen Kette für die Verarbeitung verschieben oder das Ereignis protokollieren. Es gibt viele Optionen.
Diese Regeln sind in Gruppen namens Chains organisiert. Eine Chain ist eine Reihe von Regeln, gegen die ein Paket sequenziell überprüft wird. Wenn das Paket einer der Regeln entspricht, führt es die zugehörige Aktion aus und überspringt die verbleibenden Regeln in der Chain.
A user can create chains as needed. There are three chains defined by default. They are:
- INPUT: Diese Chain behandelt alle Pakete, die an Ihren Server adressiert sind.
- OUTPUT: Diese Chain enthält Regeln für den von Ihrem Server erstellten Datenverkehr.
- FORWARD: Diese Chain wird verwendet, um mit Datenverkehr umzugehen, der für andere Server bestimmt ist, die nicht auf Ihrem Server erstellt wurden. Diese Chain ist eine Möglichkeit, Ihren Server so zu konfigurieren, dass Anfragen an andere Maschinen weitergeleitet werden.
Jede Chain kann null oder mehr Regeln enthalten und hat eine Standard-Richtlinie. Die Richtlinie bestimmt, was passiert, wenn ein Paket durch alle Regeln in der Chain fällt und keine Regel übereinstimmt. Sie können entweder das Paket verwerfen oder das Paket akzeptieren, wenn keine Regeln übereinstimmen.
Iptables kann auch Verbindungen verfolgen. Das bedeutet, dass Sie Regeln erstellen können, die festlegen, was mit einem Paket basierend auf seiner Beziehung zu vorherigen Paketen geschieht. Die Fähigkeit nennt sich „Zustandsverfolgung“, „Verbindungsverfolgung“ oder Konfiguration der „Zustandsmaschine“.
IPv4 gegen IPv6
Die im Linux-Kernel enthaltene Netfilter-Firewall hält den IPv4- und IPv6-Verkehr vollständig getrennt. Die zum Manipulieren der Tabellen, die die Firewall-Regelsätze enthalten, verwendeten Iptables-Werkzeuge sind ebenfalls unterschiedlich. Wenn IPv6 auf Ihrem Server aktiviert ist, müssen Sie beide Tabellen konfigurieren, um den Verkehr auf Ihrem Server zu behandeln.
Hinweis: Nftables, ein Nachfolger von Iptables, integriert die Behandlung von IPv4 und IPv6 enger. Der Befehl iptables-translate kann verwendet werden, um Iptables-Regeln auf Nftables zu migrieren.
Die reguläre iptables
-Befehl wird verwendet, um die Tabelle zu manipulieren, die die Regeln für den IPv4-Verkehr regelt. Für IPv6-Verkehr wird ein Begleitbefehl namens ip6tables
verwendet. Alle Regeln, die Sie mit iptables
festlegen, betreffen nur Pakete, die IPv4-Adressierung verwenden, aber die Syntax zwischen diesen Befehlen ist dieselbe. Der iptables
-Befehl erstellt die Regeln, die für den IPv4-Verkehr gelten, und der ip6tables
-Befehl erstellt die Regeln, die für den IPv6-Verkehr gelten. Vergessen Sie nicht, die IPv6-Adressen Ihres Servers zu verwenden, um die ip6tables
-Regeln zu erstellen.
Zu beachtende Dinge
Jetzt, da Sie wissen, wie iptables Pakete, die durch seine Schnittstelle kommen, weiterleitet – leiten Sie das Paket an die entsprechende Kette, überprüfen Sie es gegen jede Regel, bis eine übereinstimmt, und setzen Sie die Standardrichtlinie der Kette fest, wenn keine Übereinstimmung gefunden wird –, können Sie beginnen, Regeln zu erstellen.
Zunächst müssen Sie sicherstellen, dass Sie Regeln haben, um aktive Verbindungen zu halten, wenn Sie eine Standard-Abbruchrichtlinie implementieren. Dies ist besonders wichtig, wenn Sie über SSH mit Ihrem Server verbunden sind. Wenn Sie versehentlich eine Regel oder Richtlinie implementieren, die Ihre aktuelle Verbindung abbricht, müssen Sie sich möglicherweise über eine browserbasierte Wiederherstellungskonsole bei Ihrem Server anmelden.
Eine weitere zu beachtende Sache ist, dass die Reihenfolge der Regeln in jeder Kette wichtig ist. Ein Paket darf keine allgemeinere Regel treffen, die ihm entspricht, wenn es dazu bestimmt ist, einer spezifischeren Regel zu entsprechen.
Aufgrund dessen sollten Regeln nahe dem Anfang einer Kette eine höhere Spezifität aufweisen als Regeln am Ende. Sie sollten spezifische Fälle zuerst abgleichen und dann allgemeinere Regeln bereitstellen, um breitere Muster abzudecken. Wenn ein Paket die gesamte Kette durchläuft (wenn es keine Regeln abgleicht), wird es der allgemeinsten Regel folgen, d. h. der Standardrichtlinie.
Aus diesem Grund bestimmt die Standardrichtlinie einer Kette maßgeblich die Arten von Regeln, die in die Kette aufgenommen werden. Eine Kette mit der Standardrichtlinie ACCEPT
enthält Regeln, die Pakete explizit verwerfen. Eine Kette, die standardmäßig auf DROP
festgelegt ist, enthält Ausnahmen für Pakete, die speziell akzeptiert werden sollten.
Fazit
An diesem Punkt sind Sie bereit, Ihre eigene Firewall zu implementieren. Dazu sollten Sie lesen Wie man eine Firewall mit Nftables unter Ubuntu 22.04 einrichtet. Oder, für einen höheren Ansatz Wie man eine Firewall mit UFW unter Ubuntu 22.04 einrichtet. Wenn Sie es vorziehen, Ihre Firewall als verwalteten Dienst auszuführen, können Sie auch DigitalOcean’s Cloud Firewalls ausprobieren.
Source:
https://www.digitalocean.com/community/tutorials/how-the-iptables-firewall-works