Wenn Sie mit Linux arbeiten, haben Sie viele Möglichkeiten, Ihr Gerät zu schützen. Es verfügt über iptables, ein Kommandozeilen-Firewallprogramm, das Flexibilität und hervorragenden Schutz bietet.

Da es sich jedoch um ein Befehlszeilendienstprogramm handelt, ist eine leichte Einarbeitung erforderlich.

Wenn Sie also ein Systemadministrator oder ein Linux-Kenner sind, sind Sie hier genau richtig, denn wir gehen die gängigen iptables-Befehle mit Beispielen durch.

Was ist iptables?

iptables ist eine softwarebasierte, in Linux integrierte Firewall. Sie ermöglicht es Linux-Benutzern, Richtlinien zu erstellen oder zu definieren, die sich direkt und indirekt auf den Internetverkehr auswirken.

Das bedeutet, dass Sie mit iptables Regeln erstellen können, die den Verkehr über den Port, die Quell-IP-Adresse, die Netzwerkschnittstellen und mehr blockieren oder zulassen.

Sobald Sie die Regeln definiert haben, muss der gesamte Datenverkehr diese Regeln durchlaufen. So prüft iptables zum Beispiel bei jeder neuen Verbindung, ob es vordefinierte Regeln gibt, die auf die Verbindung zutreffen. Wenn dies der Fall ist, wird die Regel auf die Verbindung angewendet. Wenn jedoch keine entsprechenden Regeln vorhanden sind, wird die Standardregel angewendet.

Um iptables zu verwenden, müssen Sie den folgenden Befehl verwenden.

$ iptables -L -n -v 

Hier sind die Parameter wie folgt:

  • -L steht für die Auflistung aller Regeln.
  • -n für die numerische Ausgabe, die eine schnellere Leistung bietet.
  • -v für die Anzeige der Ausgabe in einem detaillierten Format.

Wenn Sie den Befehl iptables ohne Parameter ausführen, erhalten Sie die folgende Ausgabe:

iptables v1.8.7 (nf_tables): kein Befehl angegeben

Versuchen Sie `iptables -h' oder 'iptables --help' für weitere Informationen.

Sie müssen es installieren, wenn es auf einen Fehler stößt, wie z.B. den Befehl “iptables” nicht gefunden.

Um iptables in Ihrer Linux-Distribution zu installieren, führen Sie den folgenden Befehl aus.

$ sudo apt-get install iptables

Es wird das Folgende zurückgeben, da es in meiner Linux-Distribution bereits vorinstalliert ist.

#Ausgabe
Paketlisten lesen... Erledigt
Abhängigkeits-Baum erstellen... Erledigt
Lesen von Statusinformationen... Erledigt
iptables ist bereits die neueste Version (1.8.7-1ubuntu5).
iptables wurde auf manuell installiert gesetzt.
0 upgegradet, 0 neu installiert, 0 zu entfernen und 35 nicht upgegradet.

Was ist eine Firewall?

Firewalls sind die grundlegendste Form des Schutzes von Systemen, Netzwerken und Personalcomputern. Sie können hardware- oder softwarebasiert sein und basieren auf Regeln, um ordnungsgemäß zu funktionieren.

Die meisten Firewalls sind in hohem Maße anpassbar und ermöglichen es Ihnen, Regeln zu erstellen oder zu bearbeiten. Da beispielsweise Pakete aus dem Internet über Ports in ein System gelangen, können Sie diese mit Hilfe von Port-basierten Scans herausfiltern. Darüber hinaus können Sie auch Dienste nach Quell-IP-Adresse oder Netzwerkschnittstelle zulassen oder blockieren.

Wenn Sie Linux verwenden, haben Sie Zugriff auf die integrierten iptables. Sie können jedoch auch eine eigenständige Linux-Firewall verwenden, die Ihnen beim Schutz Ihres Systems hilft.

Warum brauchen Sie iptables, um die Firewall zu konfigurieren?

Aber warum sollten Sie iptables überhaupt verwenden? Schließlich gibt es gute alternative Firewall-Dienstprogramme für die Befehlszeile wie ufw und firewalld. Außerdem können Sie eigenständige Linux-Firewalls verwenden, die einfach zu bedienen sind und mehr Funktionen bieten.

Was macht iptables also so attraktiv für die Konfiguration einer Firewall? Die Gründe für die Verwendung von iptables sind unter anderem:

  • Es bietet von Haus aus eine hervorragende Flexibilität. Sie können Regeln auf Paketebene festlegen.
  • Es ist relativ einfach zu bedienen, sobald Sie wissen, wie es funktioniert.
  • Blockieren Sie unerwünschten Datenverkehr auf unkomplizierte Weise.
  • Leiten Sie Pakete an eine alternative IP-Adresse um.
  • Schützen Sie Ihre Systeme vor Denial of Service (DoS)-Angriffen.

Und vieles mehr!

Verstehen der iptables-Architektur und ihrer Beziehung zu Netfilter

Um iptables richtig zu verstehen, müssen wir uns mit seiner Architektur vertraut machen. Dies wird uns zunächst ein klares Verständnis der verschiedenen iptables-Komponenten vermitteln. Wenn wir dann die einzelnen Komponenten kennen, können wir sie zum Schreiben von Firewall-Regeln verwenden.

Und wenn wir über iptables sprechen, kommt auch Netfilter ins Spiel. Sie können sich “Netfilter” als großen Bruder von iptables vorstellen. Er baut auf iptables auf und bietet einen besseren Funktionsumfang für die Verwaltung Ihrer Firewall. Allerdings nutzt er iptables als eines der Mittel, um ausgezeichnete Firewall-Fähigkeiten zu erreichen.

Iptables ist eine Befehlszeilenschnittstelle für Netfilter-Hooks auf Kernel-Ebene. Diese Hooks können mit dem Linux-Netzwerk-Stack interagieren, der die Pakete auf der tiefsten Ebene beeinflusst.

Wie sieht also die iptables-Architektur aus?

IPtables-flow-of-packets

Tabellen

die iptables-Architektur beginnt mit Tabellen. Diese Tabellen sind für die Organisation der Regeln zuständig. Und jede Tabelle ist nach der Art der Entscheidung klassifiziert, die sie trifft. Einfacher ausgedrückt: Eine Tabelle vereinfacht die gesamte Paketverarbeitung, indem sie eine bestimmte Art der Verarbeitung von Paketen festlegt.

Die verschiedenen von iptables angebotenen Tabellen umfassen

  • Filter-Tabelle: Legt den Entscheidungstyp für die Paketfilterung fest. Vereinfacht ausgedrückt, bestimmt sie, ob ein Paket sein Ziel erreichen soll oder nicht.
  • NAT-Tabelle: Legt den Entscheidungstyp für die Adressübersetzung fest. Hier wird die Weiterleitung der Pakete auf der Grundlage der NAT-Netzwerke bestimmt. Wenn ein Paket beispielsweise nicht auf NAT zugreifen kann, wird es übersprungen und versucht, ein Nicht-NAT-Netzwerk zu finden.
  • Mangle-Tabelle: Verwaltet die speziellen Verarbeitungsanforderungen des Pakets. Sie können es zum Beispiel so konfigurieren, dass es die Header-Informationen des Pakets ändert, wie z.B. TTL-Werte.
  • Raw-Tabelle: Mit der Raw-Tabelle können Sie sorgfältig mit dem zustandsbehafteten Aspekt der iptables-Firewall arbeiten. Mithilfe der Tabelle können Sie Pakete auf der Grundlage ihres “Zustands” weiterleiten, bevor der Linux-Kernel beginnt, ihren Zustand zu verfolgen. Die Tabelle dient in erster Linie dazu, die Pakete zu markieren, unabhängig davon, ob das System zur Verfolgung der Verbindung sie bearbeitet oder nicht. Wenn ein Paket nicht verfolgt wird, wird es auf NOTRACK target gesetzt.
IPtables-tables

Verkettungen

Und dann haben wir noch “Ketten” innerhalb von “Tabellen”

Diese Ketten behandeln die Deep Packet Inspection in verschiedenen Stadien ihrer Reise. Sie können sie zum Beispiel prüfen, wenn sie einen Port oder eine Netzwerkschnittstelle erreichen. Auf diese Weise kann eine Entscheidung getroffen werden, bevor das Paket für den Prozess eines Systems freigegeben wird.

Genau wie Tabellen erhalten Sie auch verschiedene Ketten. Diese umfassen:

  • PREROUTING-Kette: Hier behandeln die Regeln die gerade an der Netzwerkschnittstelle angekommenen Pakete.
  • INPUT-Kette: Die in der INPUT-Kette genannten Regeln behandeln das Verhalten eingehender Verbindungen. Sobald dies geschehen ist, werden sie an den lokalen Prozess weitergegeben.
  • OUTPUT-Kette: Die OUTPUT-Kette befasst sich mit Paketen, die Prozesse produzieren.
  • FORWARD-Kette: Die FORWARD-Kette verwaltet Pakete, die nicht für lokale Systeme bestimmt sind. Sie ist ein Träger für andere bestimmte Systeme, wie z.B. einen Router.
  • POSTROUTING-Kette: Schließlich gibt es noch die POSTROUTING-Kette, die sich mit den Paketen befasst, die die Netzwerkschnittstelle verlassen sollen.
Iptables-chain

Nicht alle Ketten sind in jeder Tabelle verfügbar. Die FORWARD-Kette ist zum Beispiel nur in der Mangle-, Filter- und Security-Tabelle verfügbar. In ähnlicher Weise ist die POSTROUTING-Kette in mangle und nat (SNAT) verfügbar. Nur die OUTPUT-Kette ist in allen Tabellen verfügbar.

Ziel

Jetzt haben wir ein “Ziel” Sobald ein Paket eintrifft, durchläuft es die Ketten, um zu sehen, welche Regelbeschreibung am besten passt. Wenn es auf die Beschreibung einer Regel passt, führt es die zugehörige Aktion auf der Grundlage dieser Regel aus und leitet es dann an das Ziel weiter – und besiegelt damit das Schicksal des Pakets.

In vielen Fällen passt ein Paket auf keine Beschreibung und keinen Regelsatz. Und hier kommt die Standardrichtlinie, ein Ziel, ins Spiel.

Die Ziele können ACCEPT, DROP und REJECT sein. Dies sind abschließende Ziele, die über das Schicksal des Pakets entscheiden.

  • ACCEPT: Nimmt die Pakete an.
  • DROP: Lässt das Paket fallen, so dass der Absender nicht erfahren kann, ob das System vorhanden ist oder nicht.
  • REJECT: Weist das Paket zurück.

Es gibt auch nicht-terminierende Ziele, die hauptsächlich dazu dienen, Informationen über das Paket zu speichern.

Die häufigsten iptables-Befehle mit Beispielen

Bevor Sie mit der Ausführung des iptables-Befehls beginnen, sollten Sie sich vergewissern:

  • Sie haben administrative Rechte, um die Befehle auszuführen. Wenn der Befehl aufgrund von Administratorrechten fehlschlägt, führen Sie den Befehl mit dem vorangestellten sudo-Befehl erneut aus.
  • Dieser Artikel ist keine Anleitung für die Konfiguration von iptables unter Ubuntu.
  • Wir werden den iptables-Befehl verwenden, der mit IPv4 funktioniert. Wenn Sie mit IPv6 arbeiten möchten, müssen Sie stattdessen ip6tables verwenden.

Überprüfen des iptables-Status

Um den aktuellen iptables-Status zu überprüfen, müssen Sie den folgenden Befehl ausführen.

$ iptables -L -n -v
#Ausgabe

Kette INPUT (Richtlinie ACCEPT 0 Pakete, 0 Bytes)

 pkts bytes ziel prot opt in out quelle ziel

Kette FORWARD (Richtlinie ACCEPT 0 Pakete, 0 Bytes)

 pkts bytes ziel prot opt in out quelle ziel

Kette OUTPUT (Richtlinie ACCEPT 0 Pakete, 0 Bytes)

 pkts bytes ziel prot opt in out quelle ziel

Die obige Ausgabe enthält eine Vielzahl von Informationen. Sie deutet jedoch auch auf eine inaktive Firewall hin. Das liegt daran, dass derzeit alle Ketten auf ACCEPT eingestellt sind und keine Regeln haben.

Sie müssen anfangen, Regeln hinzuzufügen, um die Firewall zu aktivieren.

Hinzufügen von Regeln zu einer Kette

Wenn Sie eine Regel hinzufügen, wird diese immer an die Kette angehängt. Daher müssen Sie die Option -A (Append) verwenden. Die Syntax dafür lautet wie folgt:

$ sudo iptables - A

Wenn Sie es jedoch ausführen, wird Folgendes zurückgegeben:

iptables v1.8.7 (nf_tables): Option "-A" erfordert ein Argument

Versuchen Sie `iptables -h' oder 'iptables --help' für weitere Informationen.

Die Argumente, die Sie zum Hinzufügen von Regeln verwenden können, sind:

  • – i: Es steht für die Schnittstelle. Hier können Sie die Schnittstelle angeben, für die Sie Regeln hinzufügen möchten. Das kann ppp0, eth0 und so weiter sein.
  • p: Steht für das Protokoll. Hier geben Sie die Regel für die Verwendung eines Netzwerkprotokolls zum Filtern von Packern an. Sie können zum Beispiel ICMP, TCP, UDP usw. angeben. Wenn Sie möchten, dass die Regel für alle Protokolle gilt, geben Sie “all” als Argument an.
  • – s: Als nächstes kommt das Argument source, das die Quelle des Datenverkehrs angibt (als IP-Adresse oder Hostname)
  • – dport: Dport steht für den Zielport, wobei Sie die Portnummer angeben, für die das Paket bestimmt ist.
  • – j: Schließlich haben wir noch ein TARGET-Argument, bei dem Sie den TARGET-Namen, ACCEPT, DROP oder RETURN angeben können

Es ist außerdem wichtig, den Befehl in der folgenden Reihenfolge zu schreiben:

$ sudo iptables -A <Kettenname> -i <Schnittstellenname> - p <protocool-name> - s <Quelle> --dport <Port-Nr.> -j <Ziel&gt

Speichern von Änderungen an iptables

Sobald Sie eine Regel hinzugefügt haben, können Sie sie mit dem Befehl iptables -save speichern.

$ sudo iptables -save

Die Ausgabe sieht wie folgt aus:

nitt@logan99:~$ sudo iptables-save

# Erzeugt von iptables-save v1.8.7 am Sun May 14 13:37:34 2023

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 392 -j REJECT --reject-with icmp-port-unreachable

-A OUTPUT -o lo -j ACCEPT

COMMIT

# Abgeschlossen am Sun May 14 13:37:34 2023

Manuelles Speichern von Regeln

Standardmäßig speichert iptables die Regeln nicht. Wenn Sie also Ihren Computer neu starten, werden alle Regeln gelöscht. Um sicherzustellen, dass Sie iptables nicht neu konfigurieren müssen, müssen Sie die folgenden Befehle verwenden.

Für IPv4-Regeln schreiben Sie den Befehl:

$ sudo iptables-save > /etc/iptables/rules.v4

Und für IPv6-Regeln schreiben Sie den Befehl:

$ sudo iptables-save > /etc/iptables/rules.v6

Automatisches Beibehalten von Regeln

Damit die Regeln auch nach einem Neustart erhalten bleiben, und zwar automatisch, müssen Sie das Paket iptables-presistent installieren.

Führen Sie dazu den folgenden Befehl aus.

$ sudo apt-get install iptables-persistent

Daraufhin öffnet sich das folgende Fenster. Drücken Sie die Eingabetaste auf .

iptables-peristant

Da wir mit der IPv4-Tabelle arbeiten, werden hier nur IPv4-Regeln angezeigt. Wenn Sie mit IPv6 arbeiten, wird das entsprechende Fenster angezeigt.

Hinweis: Das Paket lädt nur Ihre gespeicherten iptables-Regeln. Wenn Sie also die iptables-Regeln ändern, müssen Sie sie mit und dem Befehl iptables -save speichern.

Regeln nach dem Neustart neu laden

Sobald die Regeln gespeichert sind, müssen Sie sie mit dem folgenden Befehl wiederherstellen.

$ sudo iptables-restore < /etc/iptables/rules.v4

Und

$ sudo iptables-restore < /etc/iptables/rules.v6

Aktivieren des Datenverkehrs auf Localhost / Aktivieren von Loopback

Um den Datenverkehr auf Localhost zu aktivieren, verwenden Sie den folgenden Befehl:

$ sudo iptables -A INPUT -i lo -j ACCEPT

Hier steht das lo für die Loopback-Schnittstelle für die gesamte Localhost-Kommunikation.

Ebenso können wir Pakete zulassen, die über die Loopback-Schnittstelle gehen.

$ sudo iptables -A OUTPUT -o lo -j ACCEPT

Um zu überprüfen, wie die Regeln geändert wurden, führen Sie iptables -L -n -V

#Ausgabe

Kette INPUT (Richtlinie ACCEPT 0 Pakete, 0 Bytes)

 pkts bytes ziel prot opt in out quelle ziel

    0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0

Kette FORWARD (Richtlinie ACCEPT 0 Pakete, 0 Bytes)

 pkts bytes ziel prot opt in out quelle ziel

Kette OUTPUT (Richtlinie ACCEPT 0 Pakete, 0 Bytes)

 pkts bytes ziel prot opt in out quelle ziel

Aktivieren von Verkehr auf bestimmten Ports

Sie können den Datenverkehr an bestimmten Ports auf ACCEPT oder REJECT setzen.

So sind beispielsweise SSL-, HTTP- und SSH-Ports wichtig für das normale Funktionieren Ihrer Anwendungen. Sie können dem ACCEPT-Paket über die Portnummern Regeln hinzufügen, um sicherzustellen, dass sie wie vorgesehen funktionieren.

Für SSL führen Sie den folgenden Befehl aus.

$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Für HTTPS führen Sie den folgenden Befehl aus.

$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Um den gesamten HTTPS-Verkehr an der Schnittstelle eth0 zuzulassen.

$ iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

$ iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

Für SSH führen Sie den folgenden Befehl aus.

$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Und um den gesamten eingehenden SSH-Verkehr auf der Schnittstelle eth0 zu akzeptieren, führen Sie Folgendes aus:

$ iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

$ iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

Ein anderes Beispiel wäre, den Portverkehr auf einem bestimmten Port für Ihre benutzerdefinierte Anwendung zu aktivieren. Sagen wir Port 233.

Um Verbindungen auf diesem Port zu öffnen, führen Sie aus.

$ sudo iptables -A INPUT -p tcp --dport 233 -j ACCEPT

In ähnlicher Weise können Sie auch Verbindungen an einem bestimmten Port mit der Option REJECT target sperren.

Lassen Sie uns alle Verbindungen an Port 392 blockieren.

$ sudo iptables -A INPUT -p tcp --dport 392 -j REJECT

Um das zu überprüfen, führen Sie den Befehl iptables -L -n -v aus.

#Ausgabe

Kette INPUT (Richtlinie ACCEPT 0 Pakete, 0 Bytes)

 pkts bytes ziel prot opt in out quelle ziel

    0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22

    0 0 ACCEPT tcp -- * * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80

    0 0 ACCEPT tcp -- * * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443

    0 0 ACCEPT tcp -- * * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:233

    0 0 REJECT tcp -- * * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable

Kette FORWARD (Richtlinie ACCEPT 0 Pakete, 0 Bytes)

 pkts bytes ziel prot opt in out quelle ziel

Kette OUTPUT (Richtlinie ACCEPT 0 Pakete, 0 Bytes)

 pkts bytes ziel prot opt in out quelle ziel

 0 0 ACCEPT alle -- * lo 0.0.0.0/0 0.0.0.0/0

Vorhandene Regeln löschen

Um bestehende Regeln zu löschen, müssen Sie den folgenden Befehl ausführen.

$ iptables -F

oder

$ iptables --flush

Hinweis: Wenn Sie Ihre Regeln nicht gespeichert haben, sind sie für immer verloren und können nicht mit iptables -restore wiederhergestellt werden

Regeln mit Zeilennummern löschen

Um eine bestimmte Regel zu löschen, müssen Sie die Liste der Regeln mit Nummern abrufen.

$ sudo iptables -L --line-numbers
#Ausgabe

Kette INPUT (Richtlinie ACCEPT)

num target prot opt source destination

1 ACCEPT tcp -- überall überall tcp dpt:ssh

2 ACCEPT tcp -- überall überall tcp dpt:http

3 ACCEPT tcp -- überall überall tcp dpt:https

4 ACCEPT tcp -- überall überall tcp dpt:233

5 REJECT tcp -- überall überall tcp dpt:392 reject-with icmp-port-unreachable

Führen Sie den folgenden Befehl aus, wenn Sie die Regel Nummer 4 für die INPUT-Kette entfernen möchten.

$ sudo iptables -D INPUT 4

Und wenn Sie erneut den Befehl iptables -n -v -L ausführen.

#Ausgabe

Kette INPUT (Richtlinie ACCEPT 0 Pakete, 0 Bytes)

 pkts bytes target prot opt in out source destination

    0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22

    0 0 ACCEPT tcp -- * * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80

    0 0 ACCEPT tcp -- * * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443

    0 0 REJECT tcp -- * * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable

Nur INPUT- oder OUTPUT-Kettenregeln anzeigen

Um nur die Regeln der INPUT-Kette anzuzeigen, führen Sie den folgenden Befehl aus.

$ sudo iptables -L INPUT -n -v --line-numbers
#ouput

Kette INPUT (Richtlinie ACCEPT 0 Pakete, 0 Bytes)

num pkts bytes target prot opt in out source destination

1 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22

2 0 0 ACCEPT tcp -- * * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80

3 0 0 ACCEPT tcp -- * * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443

4 0 0 REJECT tcp -- * * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable

Wenn Sie nur die Regeln der OUTPUT-Kette sehen möchten, führen Sie einen ähnlichen Befehl aus:

$ sudo iptables -L OUTPUT -n -v --line-numbers
#Ausgabe

Kette OUTPUT (Richtlinie ACCEPT 0 Pakete, 0 Bytes)

num pkts bytes target prot opt in out source destination

1 0 0 ACCEPT alle -- * lo 0.0.0.0/0 0.0.0.0/0

Starten/Stoppen/Neustarten der Firewall

Wenn Sie mit RHEL/Fedora Linux oder CentOS arbeiten, können Sie die Firewall starten/stoppen oder neu starten, indem Sie die folgenden Befehle ausführen.

$ service iptables stop

$ dienst iptables start

$ dienst iptables neu starten

Sie können auch den Befehl systemctl verwenden.

Er funktioniert jedoch nicht unter Ubuntu.

Regeln an einer bestimmten Stelle einfügen

Wenn Sie Regeln an einer bestimmten Stelle einfügen möchten, müssen Sie die folgenden Befehle verwenden.

Überprüfen Sie zunächst die Regeln.

$ sudo iptables -L INPUT -n --line-numbers
#Ausgabe

Kette INPUT (Richtlinie ACCEPT)

num target prot opt source destination

1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22

2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80

3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443

4 REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable

Führen Sie den folgenden Befehl aus, wenn Sie Regeln zwischen 2 und 3 einfügen möchten.

$ sudo iptables -I INPUT 3 -s 252.32.1.2 -j DROP

Überprüfen Sie nun die aktualisierten Regeln.

#Ausgabe

Kette INPUT (Richtlinie ACCEPT)

num target prot opt source destination

1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22

2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80

3 DROP all -- 252.32.1.2 0.0.0.0/0

4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443

5 REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable

Eingehenden Verkehr blockieren, aber ausgehenden Verkehr zulassen

Um den gesamten eingehenden Datenverkehr zu blockieren, müssen Sie den folgenden Befehl eingeben.

$ iptables -P INPUT DROP

$ iptables -P FORWARD DROP

$ iptables -P OUTPUT ACCEPT

$ iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT

$ iptables -L -v -n

Auf diese Weise können Sie Pakete anpingen oder herunterladen, aber jeden unbekannten eingehenden Verkehr blockieren.

Eine bestimmte IP-Adresse blockieren

Um eine bestimmte IP-Adresse zu blockieren, führen Sie den folgenden Befehl aus.

$ iptables -A INPUT -s 14.23.59.9 -J DROP

Sie können auch eine Variable definieren, um die blockierte IP-Adresse zu speichern und dann den Befehl ausführen.

BLOCK_THE_IP = "a.b.c.d"

Und führen Sie dann aus:

$ iptables -A INPUT -s "BLOCK_THE_IP" -j DROP

Hinweis: Ändern Sie “a.b.c.d” in Ihre bevorzugte IP-Adresse.

Pinging des Systems von außen zulassen

Sie können externe Benutzer dazu bringen, Ihren Server anzupingen, um Ihr Netzwerk auffindbar zu machen.

$ sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

$ sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

Internes Netzwerk darf mit externem Netzwerk kommunizieren

Führen Sie den folgenden Befehl aus, um das interne Netzwerk (z.B. eth0) für das externe Netzwerk (z.B. eth1) zuzulassen.

$ sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

Ausgehendes DNS zulassen

Um DNS-Verbindungen zu Ihrem Server zuzulassen, führen Sie den folgenden Befehl aus.

$ iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT

$ iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT

Rsycn von einem bestimmten Netzwerk zulassen

Wenn Sie den Befehl Rsync verwenden und ihn über ein bestimmtes Netzwerk zulassen möchten, führen Sie den folgenden Befehl aus.

iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT

Port blockieren

Führen Sie den folgenden Befehl aus, um einen bestimmten Port und alle eingehenden Anfragen zu blockieren.

iptables -A INPUT -p tcp --dport 80 -j DROP

iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP

Ausgehenden Datenverkehr zu einer bestimmten IP-Adresse blockieren

Sie können den Verkehr zu einer beliebigen IP-Adresse blockieren, indem Sie den folgenden Befehl ausführen.

$ host -t a geekflare.com/de

#Ausgabe

geekflare.com/de hat eine Adresse von 172.66.40.93

Um den ausgehenden Datenverkehr zu dieser bestimmten IP-Adresse zu blockieren, führen Sie den folgenden Befehl aus.

iptables -A OUTPUT -d 72.66.40.93 -j DROP

Soziale Medienplattformen blockieren

Auf ähnliche Weise können Sie auch Social Media-Plattformen wie Instagram, Twitter und Facebook blockieren.

Finden Sie die IP-Adresse der sozialen Medien, indem Sie den folgenden Befehl ausführen:

$ host -t a social-media-web-adrress.com

Für Instagram wäre das zum Beispiel so:

$ host -t a www.instagram.com

Nun müssen Sie den CIDR für die IP-Adresse der jeweiligen Social Media-Plattform finden.

$ whois 185.89.219.11 | grep CIDR

Hinweis: Möglicherweise müssen Sie das whois-Paket installieren, indem Sie sudo apt-get install whois ausführen

Geben Sie nun den CIDR-Wert auf folgende Weise ein:

$ iptables - A OUTPUT -p tcp -d CIDR-Wert -j DROP

Hinweis: Stellen Sie sicher, dass Sie den CIDR-Wert entsprechend ändern.

ICMP-Ping-Anfrage zulassen oder blockieren

Um ICMP-Ping-Anfragen zuzulassen oder zu blockieren, führen Sie die folgenden Befehle aus.

$ iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

$ iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP

Einen bestimmten Bereich von Ports öffnen

Um eine Reihe von Ports zu öffnen, führen Sie den folgenden Befehl aus.

$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8933: 8500 -j ACCEPT

NAT-Regeln auflisten

Um NAT-Regeln aufzulisten, führen Sie den folgenden Befehl aus:

$ sudo iptables -t nat -L -n -v

Oder

$ sudo iptables -t nat -v -L -n --line-number

Paket-Zähler zurücksetzen

Um den aktuellen iptables-Zähler zu überprüfen:

$ sudo iptables -L -n -v

Um die Zähler zurückzusetzen oder zu löschen, führen Sie Folgendes aus:

$ sudo iptables -Z

$ sudo iptables -L -n -v

Um nur den Zähler der INPUT-Kette zurückzusetzen, führen Sie aus:

$ iptables -Z INPUT

Um einen bestimmten Regelzähler zurückzusetzen, führen Sie Folgendes aus:

$ iptables -z INPUT RULE-NUMBER

Stellen Sie sicher, dass Sie RULE-NUMBER auf die betreffende Regel ändern.

Letzte Worte

iptables ist ein leistungsstarkes Firewall-Befehlszeilenprogramm. Sie können fast alles konfigurieren, was mit Netzwerkressourcen, Paketen, Schnittstellen und bestimmten Szenarien zu tun hat.

Außerdem bietet iptables eine Vielzahl von Optionen. Schauen Sie sich die Hauptseite mit dem Befehl man an, um sich ein vollständiges Bild zu machen.

$ man iptables
$ man ip6tables

Als nächstes sehen Sie sich eine Netzwerk-Firewall an und erfahren, wie sie Angriffe abwehrt.