Wie man Iptables-Firewallregeln auflistet und löscht

0 Aktien
0
0
0
0

Einführung

Iptables ist eine Firewall, die für die Netzwerksicherheit der meisten Linux-Systeme eine grundlegende Rolle spielt. Während viele iptables-Tutorials die Erstellung von Firewall-Regeln zum Schutz des Servers erklären, konzentriert sich dieses Tutorial auf einen anderen Aspekt der Firewall-Verwaltung: das Auflisten und Löschen von Regeln.

In diesem Tutorial zeigen wir Ihnen, wie Sie die folgenden iptables-Aufgaben ausführen:

  • Liste die Regeln auf
  • Löschen von Paket- und Byte-Zählern
  • Regeln löschen
  • Eine Kette leeren (alle Regeln in einer Kette löschen)
  • Alle Ketten und Tische löschen, alle Ketten entfernen und den gesamten Datenverkehr zulassen.
Voraussetzungen

Dieses Tutorial setzt voraus, dass Sie einen Linux-Server mit installiertem iptables-Befehl verwenden und Ihr Benutzer über sudo-Rechte verfügt. Sollten Sie Hilfe bei der Ersteinrichtung benötigen, konsultieren Sie bitte die Anleitung zur Server-Ersteinrichtung unter Ubuntu 20.04.

Auflistungsregeln nach Spezifikation

Schauen wir uns zunächst an, wie man Regeln auflistet. Es gibt zwei Möglichkeiten, aktive iptables-Regeln anzuzeigen: in einer Tabelle oder als Liste von Regelspezifikationen. Beide Methoden liefern im Wesentlichen dieselben Informationen, jedoch in unterschiedlichen Formaten.

Um alle aktiven iptables-Regeln anhand ihrer Spezifikation aufzulisten, führen Sie den iptables-Befehl mit der Option -S aus:

sudo iptables -S
Output
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-N ICMP
-N TCP
-N UDP
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p icmp -m conntrack --ctstate NEW -j ICMP
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
-A TCP -p tcp -m tcp --dport 22 -j ACCEPT
...

Wie Sie sehen, entspricht die Ausgabe exakt den Befehlen, mit denen sie erstellt wurden, nur ohne den vorherigen iptables-Befehl. Wenn Sie schon einmal iptables-persistent oder iptables save verwendet haben, wird Ihnen dies auch bei den iptables-Regelkonfigurationsdateien ähnlich vorkommen.

Auflistung einer bestimmten Kette

Wenn Sie die Ausgabe auf eine bestimmte Kette (INPUT, OUTPUT, TCP usw.) beschränken möchten, können Sie den Kettennamen direkt nach der Option angeben. -S Um beispielsweise alle Regeln in der TCP-Kette anzuzeigen, führen Sie folgenden Befehl aus:

sudo iptables -S TCP
Output
-N TCP
-A TCP -p tcp -m tcp --dport 22 -j ACCEPT

Schauen wir uns nun eine alternative Möglichkeit an, aktive iptables-Regeln anzuzeigen, nämlich als Regeltabelle.

Listenregeln in Tabellen

Die Auflistung von iptables-Regeln in einer Tabellenansicht kann hilfreich sein, um verschiedene Regeln miteinander zu vergleichen. Um alle aktiven iptables-Regeln in einer Tabelle auszugeben, führen Sie den iptables-Befehl mit der Option -L aus:

sudo iptables -L

Dadurch werden alle aktuellen Regeln nach Ketten sortiert generiert.

Wenn Sie die Ausgabe auf eine bestimmte Kette (INPUT, OUTPUT, TCP usw.) beschränken möchten, können Sie den Kettennamen direkt nach der Option -L angeben.

Betrachten wir ein Beispiel für eine Eingabekette:

sudo iptables -L INPUT
Output
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
DROP all -- anywhere anywhere ctstate INVALID
UDP udp -- anywhere anywhere ctstate NEW
TCP tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
ICMP icmp -- anywhere anywhere ctstate NEW
REJECT udp -- anywhere anywhere reject-with icmp-port-unreachable
REJECT tcp -- anywhere anywhere reject-with tcp-reset
REJECT all -- anywhere anywhere reject-with icmp-proto-unreachable

Die erste Zeile der Ausgabe zeigt den Namen der Kette (in diesem Fall INPUT) gefolgt von ihrer Standardrichtlinie (DROP). Die nächste Zeile enthält die Spaltenüberschriften der Tabelle, gefolgt von den Kettenregeln. Schauen wir uns an, was die einzelnen Überschriften bedeuten:

  • Ziel: Wenn ein Paket einer Regel entspricht, legt das Ziel fest, was damit geschehen soll. Beispielsweise kann ein Paket akzeptiert, verworfen, protokolliert oder an eine andere Kette weitergeleitet werden, um es mit weiteren Regeln zu vergleichen.
  • prot: Protokoll, wie z. B. TCP, UDP, ICMP oder alle
  • opt: Diese Spalte wird selten verwendet und zeigt IP-Optionen an.
  • Quelle: Die Quell-IP-Adresse oder das Subnetz des Datenverkehrs oder ein beliebiger anderer Ort
  • Ziel: Die Ziel-IP-Adresse oder das Ziel-Subnetz des Datenverkehrs oder ein beliebiger beliebiger Ort

Die letzte, unbeschriftete Spalte zeigt die Optionen einer Regel. Dies sind alle Teile der Regel, die in den vorherigen Spalten nicht aufgeführt sind. Dazu gehören beispielsweise Quell- und Zielports oder der Status der Paketverbindung.

Anzahl der Pakete und Gesamtgröße anzeigen

Beim Auflisten von iptables-Regeln können Sie die Anzahl der Pakete und deren Gesamtgröße in Bytes anzeigen lassen, die auf die jeweilige Regel zutreffen. Dies ist oft hilfreich, um sich einen Überblick darüber zu verschaffen, welche Regeln auf welche Pakete zutreffen. Verwenden Sie dazu die Optionen `-L` und `-v`.

Betrachten wir beispielsweise noch einmal die INPUT-Kette mit der Option -v:

sudo iptables -L INPUT -v
Output
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
284K 42M ACCEPT all -- any any anywhere anywhere ctstate RELATED,ESTABLISHED
0 0 ACCEPT all -- lo any anywhere anywhere
0 0 DROP all -- any any anywhere anywhere ctstate INVALID
396 63275 UDP udp -- any any anywhere anywhere ctstate NEW
17067 1005K TCP tcp -- any any anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
2410 154K ICMP icmp -- any any anywhere anywhere ctstate NEW
396 63275 REJECT udp -- any any anywhere anywhere reject-with icmp-port-unreachable
2916 179K REJECT all -- any any anywhere anywhere reject-with icmp-proto-unreachable
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh ctstate NEW,ESTABLISHED

Beachten Sie, dass die Liste nun zwei zusätzliche Spalten enthält. Pakete Und Bytes Es ist.

Nachdem Sie nun wissen, wie Sie aktive Firewall-Regeln auf verschiedene Weise auflisten können, sehen wir uns an, wie Sie die Paket- und Byte-Zähler zurücksetzen können.

Anzahl der Pakete und Gesamtgröße zurücksetzen

Um die Paket- und Bytezähler Ihrer Regeln zu löschen oder auf Null zu setzen, verwenden Sie die Option -Z. Diese werden auch beim Neustart zurückgesetzt. Dies ist hilfreich, um zu überprüfen, ob Ihr Server neuen Datenverkehr empfängt, der Ihren bestehenden Regeln entspricht.

Um die Zähler für alle Ketten und Regeln zu löschen, verwenden Sie die Option -Z Allein verwenden:

sudo iptables -Z

Um die Zähler für alle Regeln in einer bestimmten Kette zu löschen, verwenden Sie die Option -Z Verwenden und spezifizieren Sie die Kette. Zum Beispiel, um die Kettenzähler zurückzusetzen. EINGANG Führen Sie diesen Befehl aus:

sudo iptables -Z INPUT

Um die Zähler für eine bestimmte Regel zurückzusetzen, geben Sie den Kettennamen und die Regelnummer an. Um beispielsweise die Zähler für die erste Regel in der Kette zurückzusetzen, EINGANGFühre Folgendes aus:

sudo iptables -Z INPUT 1

Nachdem Sie nun wissen, wie man die Paket- und Byte-Zähler von iptables zurücksetzt, sehen wir uns zwei Methoden an, mit denen man sie entfernen kann.

Löschregeln basierend auf Spezifikationen

Eine Möglichkeit, iptables-Regeln zu entfernen, besteht darin, die Regeln explizit anzugeben. Führen Sie dazu den Befehl `iptables` mit der Option `-D` gefolgt von der Regelspezifikation aus. Wenn Sie Regeln mit dieser Methode entfernen möchten, können Sie die Ausgabe der Regelliste, `iptables -S`, als Hilfe verwenden.

Wenn Sie beispielsweise eine Regel entfernen möchten, die ungültige Eingabepakete verwirft (-A INPUT -m conntrack –ctstate INVALID -j DROP), können Sie folgenden Befehl ausführen:

sudo iptables -D INPUT -m conntrack --ctstate INVALID -j DROP

Beachten Sie, dass die Option -A, mit der die Position der Regel zum Zeitpunkt ihrer Erstellung angegeben wird, hier weggelassen werden sollte.

Löschregeln basierend auf Kette und Nummer

Eine weitere Möglichkeit, iptables-Regeln zu entfernen, besteht darin, die Regelkette und die Zeilennummer anzugeben. Um die Zeilennummer einer Regel festzulegen, listen Sie die Regeln in Tabellenform auf und fügen Sie die Option `--line-numbers` hinzu:

sudo iptables -L --line-numbers
Output
Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
2 ACCEPT all -- anywhere anywhere
3 DROP all -- anywhere anywhere ctstate INVALID
4 UDP udp -- anywhere anywhere ctstate NEW
5 TCP tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
6 ICMP icmp -- anywhere anywhere ctstate NEW
7 REJECT udp -- anywhere anywhere reject-with icmp-port-unreachable
8 REJECT tcp -- anywhere anywhere reject-with tcp-reset
9 REJECT all -- anywhere anywhere reject-with icmp-proto-unreachable
10 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ctstate NEW,ESTABLISHED

Dadurch wird jeder Regelzeile, die mit dem Header verknüpft ist, eine Zeilennummer hinzugefügt. Nummer Es wird gezeigt.

Sobald Sie wissen, welche Regel Sie entfernen möchten, notieren Sie sich die Kettennummer und die Regelzeile. Führen Sie anschließend den Befehl `iptables -D` gefolgt von der Kettennummer und der Regel aus.

Wenn wir beispielsweise die eingehende Regel entfernen möchten, die ungültige Pakete verwirft, sehen wir, dass sich Regel 3 in der INPUT-Kette befindet. Daher müssen wir folgenden Befehl ausführen:

sudo iptables -D INPUT 3

Nachdem Sie nun wissen, wie man Firewall-Regeln löscht, schauen wir uns an, wie man Regelketten löscht.

Die Ketten blitzen lassen

Iptables bietet die Möglichkeit, alle Regeln einer Regelkette zu entfernen oder eine Regelkette zu leeren. In diesem Abschnitt werden wir verschiedene Methoden hierfür behandeln.

eine Kette spülen

Um eine bestimmte Kette zu leeren, wodurch alle Regeln in der Kette entfernt werden, können Sie die Option -F oder eine entsprechende Option -flush und den Namen der zu leerenden Kette verwenden.

Zum Beispiel, um alle Regeln in der Kette zu löschen EINGANGFühren Sie diesen Befehl aus:

sudo iptables -F INPUT

Alle Ketten blinken

Um alle Ketten zu leeren und damit alle Firewall-Regeln zu entfernen, können Sie die Option -F oder die entsprechende Option -flush allein verwenden:

sudo iptables -F

Lösche alle Regeln, entferne alle Ketten und akzeptiere alles

In diesem Abschnitt erfahren Sie, wie Sie alle Firewall-Regeln, Tabellen und Ketten löschen und den gesamten Netzwerkverkehr zulassen.

Setzen Sie zunächst die Standardrichtlinien für jede der internen Ketten auf ACCEPT. Der Hauptgrund dafür ist, sicherzustellen, dass Sie nicht per SSH von Ihrem Server ausgesperrt werden:

sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

Anschließend die NAT- und Mangle-Tabellen leeren, alle Ketten löschen (-F) und alle nicht standardmäßigen Ketten entfernen (-X):

sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -F
sudo iptables -X

Ihre Firewall lässt nun den gesamten Netzwerkverkehr zu. Wenn Sie jetzt Ihre Regeln auflisten, werden Sie feststellen, dass keine mehr vorhanden sind; es bleiben nur die drei Standardregeln (INPUT, FORWARD und OUTPUT) übrig.

Ergebnis

Nach Durcharbeiten dieses Tutorials wissen Sie, wie Sie Ihre iptables-Firewallregeln auflisten und löschen. Beachten Sie, dass alle Änderungen, die Sie mit dem iptables-Befehl vornehmen, nur vorübergehend sind und gespeichert werden müssen, um auch nach einem Serverneustart erhalten zu bleiben. Dies wird im Abschnitt „Regeln speichern“ des Tutorials „Häufige Firewallregeln und -befehle“ erläutert.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Das könnte Ihnen auch gefallen