Iptables ist die primäre Firewall, die standardmäßig mit den meisten Linux-Distributionen ausgeliefert wird. Sie ist für die Netzwerksicherheit zuständig. Sie funktioniert, indem sie die Datenpakete mit einem Satz von Regeln abgleicht und das System anweist, eine Verbindung gemäß den Regeln zu akzeptieren, abzulehnen oder weiterzuleiten. In diesem Tutorial zeigen wir Ihnen, wie Sie Regeln auflisten und löschen, Paket- und Byte-Zähler überprüfen und löschen sowie Chains leeren. Bereit? Fangen wir an!
Voraussetzungen
Bevor wir mit dem Tutorial beginnen, möchten wir etwas klarstellen. Alle in dieser Anleitung gezeigten Tipps und Tricks werden auf einer separaten virtuellen Maschine durchgeführt. Es ist eine gute Idee, wenn Sie das auch tun, da dies jede Möglichkeit ausschließt, Ihr System in ein völliges Chaos zu stürzen. Erst wenn Sie diese Prozesse beherrschen, sollten Sie versuchen, sie in realen Situationen anzuwenden.
Für dieses Tutorial verwenden wir Ubuntu, um alle Schritte zu demonstrieren. Sie sollten jedoch unabhängig von der Distribution auf ähnliche Weise funktionieren.
Regeln auflisten
Regeln nach Spezifikation auflisten
Werfen wir zunächst einen Blick auf alle aktiven Regeln nach Spezifikation. Führen Sie den folgenden Befehl aus:
|
1 |
sudo iptables -S |

Wenn Sie bereits mit der Erstellung von iptables-Regeln gearbeitet haben, ist Ihnen vielleicht die Ähnlichkeit aufgefallen. Die Ausgaben ähneln den Befehlen, mit denen sie erstellt wurden, mit Ausnahme des Teils „iptables“. Sie weisen auch eine ähnliche Struktur wie die Konfigurationsdateien für iptables-Regeln auf.
Spezifische Chain auflisten
Versuchen wir etwas Präziseres. Anstatt alle iptables-Regeln auszugeben, weisen Sie iptables an, die Regeln einer bestimmten Chain auszugeben. Zum Beispiel TCP, INPUT, OUTPUT usw. Geben Sie dazu den Namen der Chain nach dem Flag „-S“ an:
|
1 |
sudo iptables -S <chain> |

Regeln als Tabellen auflisten
Die Tabellenansicht ist nützlich, wenn Sie verschiedene Regeln vergleichen möchten. Verwenden Sie das Flag „-L“, um iptables anzuweisen, alle aktiven Regeln in einem Tabellenformat auszugeben:
|
1 |
sudo iptables -L |

Die Ausgabe enthält alle aktuellen Regeln, sortiert nach der Chain. Ähnlich wie im vorherigen Abschnitt ist es auch möglich, die Listenausgabe nach einer bestimmten Chain wie INPUT, TCP und OUTPUT usw. zu filtern. Geben Sie dazu die Chain nach dem Flag „-L“ an:
|
1 |
sudo iptables -L <chain> |

Lassen Sie uns die Ausgabe ein wenig aufschlüsseln. In unserem Fall wird die Ausgabe aufgrund der Regeln etwas unübersichtlich erscheinen. Die erste Zeile der Ausgabe deklariert den Namen der Chain (INPUT) mit ihrer Standard-Policy (DROP). Die nächste Zeile gibt die Kopfzeilen der Tabellenspalten an. Der Rest sind die Regeln der Chain. Werfen wir einen Blick darauf, was die Kopfzeilen bedeuten:
- target: Wenn ein Paket mit der Regel übereinstimmt, definiert dieser Abschnitt, welche Aktion ausgeführt werden soll. Dies kann das Akzeptieren des Pakets, das Verwerfen, das Protokollieren oder das Senden an eine andere Chain sein.
- prot: Definiert das Protokoll, zum Beispiel udp, tcp, icmp oder all.
- opt: Diese Spalte zeigt IP-Optionen an. Sie wird selten verwendet.
- source: Herkunft des Pakets (IP-Adresse oder Subnetz). Der Wert kann spezifisch oder „anywhere“ sein.
- destination: Ziel des Pakets (IP-Adresse oder Subnetz). Der Wert kann spezifisch oder „anywhere“ sein.
Wie Sie vielleicht bemerkt haben, ist die letzte Spalte nicht beschriftet. Das liegt daran, dass sie zur Angabe der Optionen einer Regel dient. Sie enthält alle Teile der Regel, die nicht in die vorherigen Felder gepasst haben. Sie kann alles enthalten, von den Quell-/Zielports bis hin zum Verbindungsstatus des Pakets usw.
Paketzähler und Gesamtgröße
Paket- und Byte-Zähler löschen
Wenn wir die iptables-Regeln auflisten, können wir auch die Anzahl der Pakete und die Gesamtgröße der Pakete in Byte überprüfen, die mit der jeweiligen Regel übereingestimmt haben. Dies ist eine nützliche Metrik, wenn Sie sich ein grobes Bild davon machen wollen, welche Regeln auf Pakete angewendet werden.
In diesem Beispiel verwenden wir die INPUT-Chain. Fügen Sie dieses Mal das Flag „-v“ hinzu, das für den Verbose-Modus steht:
|
1 |
sudo iptables -L INPUT -v |

Sie werden feststellen, dass die Tabellenausgabe nun zwei zusätzliche Felder enthält: pkts und bytes.
Paketzähler und Gesamtgröße zurücksetzen
In manchen Situationen möchten Sie vielleicht die zuvor demonstrierten Zähler zurücksetzen. Wenn das System neu gestartet wird, werden die Zähler automatisch gelöscht. Sie können ein Zurücksetzen auch manuell erzwingen. Wir verwenden das Flag „-Z“, um die Paketzahlen und die Gesamtgröße zurückzusetzen:
|
1 |
sudo iptables -v -Z |

Beachten Sie, dass dieser Befehl die Zähler aller Chains zurücksetzt. Wie bei anderen Befehlen ist es möglich, den Zähler für bestimmte Chains zurückzusetzen. Der nächste Befehl setzt beispielsweise die Zähler für die INPUT-Chain zurück:
|
1 |
sudo iptables -v -Z <chain> |

Es ist möglich, das Zurücksetzen des Zählers präziser zu gestalten. Sie können den Zähler für eine bestimmte Regel unter einer bestimmten Chain zurücksetzen. Fügen Sie dazu die Regelnummer unter dem Chain-Namen hinzu:
|
1 |
sudo iptables -v -Z <chain> <rule_number> |
Regeln löschen
Regeln nach Spezifikation löschen
Es gibt mehrere Möglichkeiten, iptables-Regeln zu löschen. Die erste Methode zum Löschen von Regeln ist die Angabe der Regelspezifikation. Zum Löschen verwenden wir das Flag „-D“, gefolgt von der Regelspezifikation:
|
1 |
sudo iptables -v -D INPUT -s 172.217.194.113 -j DROP |

Wenn Sie zuvor bereits eine iptables-Regel hinzugefügt haben, werden Sie die Ähnlichkeit bemerken. Das Einzige, was sich hier geändert hat, ist das Flag „-D“ anstelle des Flags „-A“.
Regeln nach Chain und Nummer löschen
Das Löschen von Regeln nach ihrer Spezifikation erfordert etwas mehr Aufwand, oder? Was wäre, wenn wir sie löschen könnten, ohne uns an die Regelspezifikation erinnern zu müssen? Löschen wir die Regeln nach ihrer Chain und Nummer! Im Vergleich zur ersten Methode (Löschen nach Spezifikation) ist diese relativ einfacher, da Sie nicht die gesamte Spezifikation parat haben müssen.
Diese Methode erfordert die Chain und die Zeilennummer der Zielregel. Woher bekommen wir die Zeilennummer? Führen Sie den folgenden Befehl aus, um dies zu ermitteln:
|
1 |
sudo iptables -L --line-numbers |

Sie erhalten eine große Ausgabe mit allen Regeln und ihren Zeilennummern. Um die Ausgabe einzugrenzen, verwenden Sie den Chain-Namen nach dem Flag „-L“:
|
1 |
sudo iptables -L <chain> --line-numbers |

In der Ausgabe werden Sie die zusätzliche Spalte „num“ bemerken. Sie gibt die Zeilennummer für jede Regel an. Sobald wir die Zielnummer ermittelt haben, führen Sie den Löschvorgang durch:
|
1 |
sudo iptables -v -D <chain> <line_number> |
Chains leeren
Was bedeutet das Leeren (Flushing) einer Chain im Fall von iptables? Es ist der Vorgang des Löschens aller Regeln unter einer bestimmten Chain. Wenn Sie Regeln in großen Mengen löschen müssen, können Sie diese Methode verwenden. Vor dem Leeren der Chain empfehlen wir dringend, ein Backup der vorhandenen Regeln mit iptables-save zu erstellen. Dies ist ein integriertes iptables-Tool, das alle aktuellen Chains und Regeln ausgibt. Die Ausgabe kann in eine Textdatei exportiert werden:
|
1 |
sudo iptables-save > ~/Desktop/iptables-backup.txt |
![]()
Eine einzelne Chain leeren
Sehen wir uns an, wie man eine Chain leert. Verwenden Sie das Flag „-F“, gefolgt von der Ziel-Chain:
|
1 |
sudo iptables -v -F <chain> |

Alle Chains leeren
Bevor Sie alle Chains leeren, stellen Sie sicher, dass Sie verstehen, was Sie tun. Dadurch werden alle Regeln für die iptables-Firewall gelöscht. Sie sollten vorher unbedingt ein Backup der iptables-Regeln erstellen.
Bereit? Leeren Sie alle iptables-Chains, indem Sie den folgenden Befehl ausführen:
|
1 |
sudo iptables -v -F |

Regeln leeren, Chains löschen und alle akzeptieren
Das Ausführen der in diesem Abschnitt beschriebenen Schritte deaktiviert die Firewall effektiv und ermöglicht uneingeschränkten Netzwerkverkehr. Ähnlich wie im vorherigen Abschnitt empfehlen wir, vor dem Fortfahren ein iptables-Backup zu erstellen. Zuerst ändern wir die Standardrichtlinie (Default Policy) jeder der integrierten Chains auf ACCEPT. Dadurch wird sichergestellt, dass iptables Sie nicht über SSH von Ihrem Server aussperrt:
|
1 |
sudo iptables -v -P INPUT ACCEPT && sudo iptables -v -P FORWARD ACCEPT && sudo iptables -v -P OUTPUT ACCEPT |

Leeren Sie nun die nat- und mangle-Tabellen:
|
1 2 |
sudo iptables -v -t nat -F sudo iptables -v -t mangle -F |


Leeren Sie alle Chains und löschen Sie alle nicht standardmäßigen Chains:
|
1 2 |
sudo iptables -v -F sudo iptables -v -X |


Sehen wir uns als Nächstes das Ergebnis an:
|
1 |
sudo iptables -L --line-numbers |
Fazit
Iptables ist eine leistungsstarke Firewall. Hoffentlich war diese Anleitung hilfreich, um Ihnen zu zeigen, wie Sie Iptables-Firewall-Regeln auflisten und löschen. Und vergessen Sie nicht, diese zu üben, bevor Sie sie in der Praxis anwenden.
Viel Spaß beim Computing!



Kommentare
Noch keine Kommentare. Schreiben Sie den ersten.