Kali-Firewall-Konfiguration mit iptables

Kali LinuxBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie, wie Sie eine Firewall unter Kali Linux mit iptables konfigurieren, einem leistungsstarken Werkzeug zur Verwaltung von IP-Paketfilterregeln im Linux-Kernel. Das Hauptziel besteht darin, Firewall-Regeln zu verstehen und anzuwenden, um die Netzwerksicherheit zu verbessern, indem der Datenverkehr basierend auf IP-Adressen, Ports und Protokollen gesteuert wird. Durch schrittweise praktische Aktivitäten werden Sie aktuelle iptables-Regeln einsehen, spezifische IP-Adressen blockieren, Datenverkehr auf bestimmten Ports zulassen und Ihre Konfigurationen speichern. In einer vorkonfigurierten Kali-Linux-Containerumgebung innerhalb der LabEx-VM erwerben Sie praktische Fertigkeiten im Management von Firewall-Einstellungen zur Absicherung des Netzwerkverkehrs.

Installieren und Anzeigen von iptables-Regeln

In diesem ersten Schritt werden Sie iptables installieren und lernen, wie Sie die aktuellen Firewall-Regeln innerhalb des Kali-Linux-Containers anzeigen. Dies ist ein wesentlicher Ausgangspunkt, um die bestehende Firewall-Konfiguration zu verstehen, bevor Änderungen vorgenommen werden.

Wenn Sie das Terminal in der LabEx-VM-Umgebung öffnen, werden Sie automatisch mit der Shell des Kali-Linux-Containers verbunden. Es ist nicht erforderlich, den Container manuell zu starten oder die Shell zu betreten; die Umgebung ist bereits für Sie vorbereitet. Beginnen wir mit der Installation von iptables und der Untersuchung des aktuellen Zustands der Firewall-Regeln.

iptables ist ein Befehlszeilen-Dienstprogramm, mit dem Sie die IP-Paketfilterregeln des Linux-Kernels verwalten können. Diese Regeln bestimmen, wie mit Netzwerkverkehr verfahren wird – ob Pakete basierend auf bestimmten Kriterien wie Quell-IP oder Portnummern akzeptiert, verworfen oder umgeleitet werden. Das Anzeigen der Regeln hilft Ihnen zu sehen, welche Richtlinien derzeit aktiv sind.

Aktualisieren wir zunächst die Paketliste und installieren iptables. Geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste:

apt update && apt install -y iptables

Dieser Befehl aktualisiert die Paketliste und installiert iptables in einem Schritt. Der Operator && stellt sicher, dass die Installation nur fortgesetzt wird, wenn die Aktualisierung erfolgreich war.

Erwartete Ausgabe (Beispiel, tatsächliche Ausgabe kann variieren):

Get:1 http://mirrors.cloud.aliyuncs.com/kali kali-rolling InRelease [30.9 kB]
...
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
iptables is already the newest version (1.x.x-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Nachdem iptables installiert ist, führen Sie den folgenden Befehl aus, um die aktuellen iptables-Regeln aufzulisten. Geben Sie den Befehl ein und drücken Sie die Eingabetaste:

iptables -L -v -n

Dieser Befehl setzt sich wie folgt zusammen:

  • iptables: Das Werkzeug zur Verwaltung von Firewall-Regeln.
  • -L: Listet alle Regeln in den ausgewählten Ketten (Chains) auf.
  • -v: Liefert eine ausführliche (verbose) Ausgabe, einschließlich Paket- und Byte-Zählern.
  • -n: Zeigt IP-Adressen und Ports im numerischen Format an, ohne Namensauflösung.

Nach der Ausführung dieses Befehls sehen Sie eine Ausgabe ähnlich der untenstehenden. Die genaue Ausgabe kann je nach initialer Konfiguration des Containers variieren.

Erwartete Ausgabe (Beispiel, tatsächliche Ausgabe kann variieren):

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Diese Ausgabe zeigt die drei Hauptketten: INPUT für eingehenden Verkehr, FORWARD für durchlaufenden Verkehr und OUTPUT für ausgehenden Verkehr. Jede Kette zeigt ihre Standardrichtlinie (wie ACCEPT) und spezifische Regeln an, sofern vorhanden. Wenn die Ketten wie in diesem Beispiel leer erscheinen, bedeutet dies, dass derzeit keine benutzerdefinierten Regeln angewendet werden und die Standardrichtlinien den gesamten Verkehr regeln.

Nehmen Sie sich einen Moment Zeit, um die Ausgabe zu prüfen. Das Verständnis des aktuellen Zustands Ihrer Firewall ist entscheidend, bevor Sie Regeln hinzufügen oder ändern, was Sie in den nächsten Schritten tun werden. Dieser grundlegende Schritt stellt sicher, dass Sie mit der Ausgangskonfiguration von iptables in Ihrem Kali-Linux-Container vertraut sind.

Verständnis von iptables-Chains und Policies

Nachdem Sie iptables installiert und die ersten Regeln eingesehen haben, vertiefen wir nun Ihr Verständnis der Funktionsweise von iptables, bevor wir eigene Regeln erstellen. In diesem Schritt lernen Sie die verschiedenen Ketten (Chains) und deren Standardrichtlinien (Policies) kennen.

iptables organisiert Firewall-Regeln in Ketten. Dies sind Listen von Regeln, gegen die Pakete geprüft werden. Die drei wichtigsten integrierten Ketten sind:

  • INPUT: Verarbeitet Pakete, die für das lokale System bestimmt sind.
  • FORWARD: Verarbeitet Pakete, die durch das System geroutet werden.
  • OUTPUT: Verarbeitet Pakete, die vom lokalen System ausgehen.

Jede Kette hat eine Standardrichtlinie, die festlegt, was mit Paketen geschieht, die mit keiner spezifischen Regel übereinstimmen. Die gängigsten Richtlinien sind ACCEPT (Paket zulassen) und DROP (Paket verwerfen).

Untersuchen wir die aktuellen Richtlinieneinstellungen genauer. Führen Sie den folgenden Befehl aus, um detaillierte Informationen zu jeder Kette zu erhalten:

iptables -L -v -n --line-numbers

Die Option --line-numbers fügt jeder Regel eine Zeilennummer hinzu, was es später einfacher macht, sich auf bestimmte Regeln zu beziehen.

Erwartete Ausgabe (Beispiel, tatsächliche Ausgabe kann variieren):

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num  pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num  pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num  pkts bytes target     prot opt in     out     source               destination

Beachten Sie, dass alle Ketten derzeit die Richtlinie ACCEPT haben. Das bedeutet: Wenn keine spezifische Regel auf ein Paket zutrifft, wird es durchgelassen. Die Paket- und Byte-Zähler zeigen 0, da in dieser frischen Containerumgebung noch kein Datenverkehr verarbeitet wurde.

Das Verständnis dieser Grundlagen ist entscheidend, bevor Sie benutzerdefinierte Regeln hinzufügen, da Sie wissen müssen, wie Pakete durch das System fließen und wie das Standardverhalten für nicht zugeordneten Verkehr aussieht.

Blockieren einer spezifischen IP-Adresse

Nachdem iptables installiert ist, fahren wir mit der Konfiguration Ihrer Firewall fort, indem wir den Datenverkehr von einer bestimmten IP-Adresse blockieren. Dies ist eine gängige Sicherheitsmaßnahme, um unerwünschten Zugriff oder potenzielle Bedrohungen von einer bestimmten Quelle zu verhindern.

Das Blockieren einer IP-Adresse mit iptables bedeutet, eine Regel zu erstellen, die eingehende Pakete von dieser Adresse verwirft (drop). Wenn ein Paket verworfen wird, ignoriert das System es, wodurch jegliche Kommunikation von der angegebenen IP effektiv unterbunden wird. Für diese Übung blockieren wir den Verkehr von einer hypothetischen IP-Adresse, 192.168.1.100, als sicheres Beispiel für die Praxis in der Containerumgebung.

Geben Sie den folgenden Befehl im Terminal des Kali-Linux-Containers ein und drücken Sie die Eingabetaste, um eine Regel hinzuzufügen, die den gesamten eingehenden Verkehr von 192.168.1.100 blockiert:

iptables -A INPUT -s 192.168.1.100 -j DROP

Lassen Sie uns diesen Befehl aufschlüsseln:

  • iptables: Das Werkzeug zur Verwaltung von Firewall-Regeln.
  • -A INPUT: Fügt eine Regel an die INPUT-Kette an, die für eingehenden Verkehr zuständig ist.
  • -s 192.168.1.100: Gibt die Quell-IP-Adresse (source) an, auf die diese Regel zutreffen soll.
  • -j DROP: Legt die Aktion fest – in diesem Fall das Verwerfen von Paketen der angegebenen IP.

Nach der Ausführung dieses Befehls erfolgt keine unmittelbare Rückmeldung, was bedeutet, dass die Regel erfolgreich zur INPUT-Kette hinzugefügt wurde.

Um zu bestätigen, dass die Regel aktiv ist, führen Sie den folgenden Befehl aus, um die aktuellen iptables-Regeln aufzulisten:

iptables -L -v -n

Erwartete Ausgabe (Beispiel, tatsächliche Ausgabe kann variieren):

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       all  --  *      *       192.168.1.100        0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Diese Ausgabe zeigt eine Regel unter der INPUT-Kette, die den gesamten Verkehr von 192.168.1.100 verwirft. Die Zähler für Pakete (pkts) und Bytes (bytes) werden wahrscheinlich 0 anzeigen, es sei denn, es wurde bereits versucht, von dieser IP aus auf das System zuzugreifen.

Mit diesem Schritt haben Sie erfolgreich gelernt, wie man den Verkehr einer bestimmten IP-Adresse blockiert. Diese Fertigkeit ist unerlässlich, um den Zugriff von unerwünschten oder bösartigen Quellen einzuschränken. Im nächsten Schritt lernen Sie, wie Sie Verkehr auf bestimmten Ports zulassen, um notwendige Dienste zu ermöglichen und gleichzeitig die Sicherheit zu wahren.

Zulassen von Datenverkehr auf einem spezifischen Port

Nachdem Sie eine IP-Adresse blockiert haben, ist die nächste wichtige Fähigkeit das Zulassen von Datenverkehr auf bestimmten Ports, um den Zugriff auf notwendige Dienste zu ermöglichen. In diesem Schritt fügen Sie eine Regel hinzu, um eingehenden Verkehr auf einem festgelegten Port mit iptables zu erlauben.

Ports werden von Netzwerkdiensten verwendet, um über ein Netzwerk zu kommunizieren. Beispielsweise nutzen Webserver oft Port 80 für HTTP-Verkehr. Das Zulassen von Verkehr auf einem bestimmten Port bedeutet, eine Regel zu erstellen, die eingehende Pakete für diesen Port akzeptiert und so sicherstellt, dass der zugehörige Dienst erreichbar ist. In dieser Übung geben wir Port 80 als praktisches Beispiel frei.

Geben Sie den folgenden Befehl im Terminal des Kali-Linux-Containers ein und drücken Sie die Eingabetaste, um eine Regel hinzuzufügen, die eingehenden TCP-Verkehr auf Port 80 akzeptiert:

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

Lassen Sie uns diesen Befehl aufschlüsseln:

  • iptables: Das Werkzeug zur Verwaltung von Firewall-Regeln.
  • -A INPUT: Fügt eine Regel an die INPUT-Kette für eingehenden Verkehr an.
  • -p tcp: Spezifiziert das Protokoll als TCP, das üblicherweise für Dienste wie HTTP verwendet wird.
  • --dport 80: Gibt den Zielport (destination port) als 80 an.
  • -j ACCEPT: Legt die Aktion fest, Pakete, die dieser Regel entsprechen, zu akzeptieren.

Es erfolgt keine unmittelbare Ausgabe nach der Ausführung, was die erfolgreiche Hinzufügung der Regel signalisiert.

Um zu überprüfen, ob die Regel aktiv ist, listen Sie die aktuellen iptables-Regeln erneut auf:

iptables -L -v -n

Erwartete Ausgabe (Beispiel, tatsächliche Ausgabe kann variieren):

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       all  --  *      *       192.168.1.100        0.0.0.0/0
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Diese Ausgabe zeigt nun die Regel unter der INPUT-Kette zum Akzeptieren von TCP-Verkehr auf Port 80 neben der vorherigen Regel zum Blockieren von 192.168.1.100.

Durch diesen Schritt haben Sie gelernt, wie Sie Verkehr auf einem spezifischen Port zulassen. Dies ist essenziell, um Dienste wie Webserver bereitzustellen, während andere Ports gesichert bleiben. Im nächsten Schritt speichern Sie diese Konfigurationen, damit sie später referenziert oder wiederhergestellt werden können.

Speichern der iptables-Konfiguration

In diesem letzten Schritt lernen Sie, wie Sie Ihre iptables-Konfiguration innerhalb des Kali-Linux-Containers speichern. Das Speichern der Regeln ist wichtig, da sie standardmäßig nur im Arbeitsspeicher gehalten werden und bei einem Neustart des Containers verloren gehen würden. Dieser Schritt stellt sicher, dass Sie Ihre Firewall-Einstellungen für die zukünftige Verwendung bewahren können.

Standardmäßig existieren iptables-Regeln nur im laufenden Betriebssystemspeicher. Das Speichern in einer Datei ermöglicht es Ihnen, ein Protokoll Ihrer Konfiguration zu führen, was für die Dokumentation oder die spätere Wiederherstellung der Regeln mit iptables-restore nützlich ist. In dieser Übung speichern wir die Regeln in einer Datei im Verzeichnis /root innerhalb des Containers.

Geben Sie den folgenden Befehl im Terminal ein, um die aktuellen Regeln in eine Datei namens iptables-rules zu schreiben:

iptables-save > /root/iptables-rules

Lassen Sie uns diesen Befehl aufschlüsseln:

  • iptables-save: Exportiert die aktuellen iptables-Regeln aus dem Speicher in die Standardausgabe.
  • > /root/iptables-rules: Leitet die Ausgabe in eine Datei namens iptables-rules im Verzeichnis /root um und überschreibt diese, falls sie bereits existiert.

Es erfolgt keine direkte Rückmeldung, was bedeutet, dass die Regeln erfolgreich in der angegebenen Datei gespeichert wurden.

Um zu bestätigen, dass die Regeln korrekt gespeichert wurden, sehen Sie sich den Inhalt der Datei an:

cat /root/iptables-rules

Erwartete Ausgabe (Beispiel, tatsächliche Ausgabe kann variieren):

## Generated by iptables-save v1.x.x on ...
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -s 192.168.1.100/32 -j DROP
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
COMMIT
## Completed on ...

Diese Ausgabe zeigt die gespeicherte Konfiguration, einschließlich der Regeln zum Blockieren von 192.168.1.100 und zum Zulassen von Verkehr auf Port 80. Das Format ist kompatibel mit iptables-restore, mit dem diese Regeln bei Bedarf wieder geladen werden könnten.

Mit diesem Schritt haben Sie Ihre iptables-Konfiguration erfolgreich in einer Datei gesichert. Diese Praxis ist in realen Szenarien unerlässlich, um Firewall-Einstellungen dauerhaft zu machen, auch wenn Containerumgebungen Änderungen nach einem Neustart oft nicht beibehalten. Sie haben nun die Kernkompetenzen für die Verwaltung eines grundlegenden Firewall-Setups mit iptables erworben.

Zusammenfassung

In diesem Lab haben Sie die Grundlagen der Firewall-Konfiguration unter Kali Linux mit iptables in einer Containerumgebung erlernt. Sie begannen mit der Anzeige der aktuellen iptables-Regeln, um den Ausgangszustand der Firewall zu verstehen. Anschließend haben Sie die Paketliste aktualisiert und iptables installiert. Danach fügten Sie Regeln hinzu, um den Verkehr von einer bestimmten IP-Adresse zu blockieren und den Verkehr auf einem festgelegten Port zuzulassen, wodurch Sie die Kontrolle über den Netzwerkzugriff verbesserten. Abschließend haben Sie Ihre Konfiguration in einer Datei für die zukünftige Verwendung gespeichert. Diese Schritte haben Ihnen fundierte Kenntnisse in der Verwaltung der Netzwerksicherheit durch Verkehrsfilterung mit iptables vermittelt.