GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Iptables-Tutorial:Ultimativer Leitfaden zur Linux-Firewall

Einführung

Alle modernen Betriebssysteme sind mit einer Firewall ausgestattet – einer Softwareanwendung, die den Netzwerkverkehr zu einem Computer reguliert. Firewalls schaffen eine Barriere zwischen einem vertrauenswürdigen Netzwerk (wie einem Büronetzwerk) und einem nicht vertrauenswürdigen (wie dem Internet). Firewalls funktionieren, indem sie Regeln definieren, die festlegen, welcher Datenverkehr zugelassen und welcher blockiert wird. Die für Linux-Systeme entwickelte Utility-Firewall ist iptables .

In diesem Tutorial erfahren Sie, wie Sie iptables unter Linux installieren, konfigurieren und verwenden.

Voraussetzungen

  • Ein Benutzerkonto mit sudo Privilegien
  • Zugriff auf ein Terminalfenster/eine Befehlszeile (Strg-Alt-T, Strg-Alt-F2)

Wie iptables funktionieren

Der Netzwerkverkehr besteht aus Paketen. Daten werden in kleinere Teile (sogenannte Pakete) zerlegt, über ein Netzwerk gesendet und dann wieder zusammengesetzt. Iptables identifiziert die empfangenen Pakete und verwendet dann eine Reihe von Regeln, um zu entscheiden, was mit ihnen geschehen soll.

Iptables filtert Pakete basierend auf:

  • Tabellen: Tabellen sind Dateien, die ähnlichen Aktionen beitreten. Eine Tabelle besteht aus mehreren Ketten .
  • Ketten: Eine Kette ist eine Kette von Regeln . Wenn ein Paket empfangen wird, findet iptables die entsprechende Tabelle und lässt sie dann durch die Kette von Regeln laufen bis es eine Übereinstimmung findet.
  • Regeln: Eine Regel ist eine Anweisung, die dem System mitteilt, was mit einem Paket zu tun ist. Regeln können einen Pakettyp blockieren oder einen anderen Pakettyp weiterleiten. Das Ergebnis, an das ein Paket gesendet wird, wird als Ziel bezeichnet .
  • Ziele: Ein Ziel ist eine Entscheidung, was mit einem Paket geschehen soll. Typischerweise bedeutet dies, es zu akzeptieren, zu löschen oder abzulehnen (wodurch ein Fehler an den Absender zurückgesendet wird).

Tabellen und Ketten

Linux-Firewall iptables hat vier Standardtabellen. Wir werden alle vier zusammen mit den Ketten auflisten, die jede Tabelle enthält.

1. Filtern

Der Filter Tabelle ist die am häufigsten verwendete. Es fungiert als Türsteher und entscheidet, wer in Ihr Netzwerk ein- und aussteigt. Es hat die folgenden Standardketten:

  • Eingabe – Die Regeln in dieser Kette kontrollieren die vom Server empfangenen Pakete.
  • Ausgabe – Diese Kette steuert die Pakete für den ausgehenden Datenverkehr.
  • Weiterleiten – Dieses Regelwerk steuert die Pakete, die durch den Server geleitet werden.

2. Network Address Translation (NAT)

Diese Tabelle enthält NAT-Regeln (Network Address Translation) zum Weiterleiten von Paketen an Netzwerke, auf die nicht direkt zugegriffen werden kann. Wenn das Ziel oder die Quelle des Pakets geändert werden muss, wird die NAT-Tabelle verwendet. Es enthält die folgenden Ketten:

  • Vorrouting – diese Kette weist Pakete zu, sobald der Server sie empfängt.
  • Ausgabe – funktioniert genauso wie die Ausgabekette, die wir im Filter beschrieben haben Tabelle.
  • Postrouting – Die Regeln in dieser Kette erlauben es, Änderungen an Paketen vorzunehmen, nachdem sie die Ausgabekette verlassen haben.

3. Zerfleischen

Der Mangel Tabelle passt die IP-Header-Eigenschaften von Paketen an. Die Tabelle hat alle folgenden Ketten, die wir oben beschrieben haben:

  • Prerouting
  • Postrouting
  • Ausgabe
  • Eingabe
  • Weiter

4. Roh

Das Rohe Tabelle wird verwendet, um Pakete von der Verbindungsverfolgung auszunehmen. Die Rohtabelle hat zwei der zuvor erwähnten Ketten:

  • Prerouting
  • Ausgabe

5. Sicherheit (Optional)

Einige Versionen von Linux verwenden auch eine Sicherheit Tabelle zur Verwaltung spezieller Zugriffsregeln. Diese Tabelle enthält Eingabe, Ausgabe, und weiter Ketten, ähnlich wie die Filtertabelle.

Ziele

Ein Ziel ist das, was passiert, nachdem ein Paket ein Regelkriterium erfüllt. Nicht terminierend Ziele stimmen die Pakete weiterhin mit Regeln in einer Kette ab, selbst wenn das Paket mit einer Regel übereinstimmt.

Mit Beendigung Ziele, wird ein Paket sofort ausgewertet und nicht mit einer anderen Kette abgeglichen. Die beendenden Ziele in Linux-iptables sind:

  • Akzeptieren – Diese Regel akzeptiert die Pakete, die durch die iptables-Firewall kommen.
  • Ablegen – Das abgelegte Paket wird keiner weiteren Kette zugeordnet. Wenn Linux iptables eine eingehende Verbindung zu Ihrem Server unterbricht, erhält die Person, die versucht, eine Verbindung herzustellen, keine Fehlermeldung. Es sieht so aus, als ob sie versuchen, sich mit einem nicht existierenden Rechner zu verbinden.
  • Zurück – Diese Regel sendet das Paket an die Ursprungskette zurück, damit Sie es mit anderen Regeln abgleichen können.
  • Ablehnen – Die iptables-Firewall lehnt ein Paket ab und sendet eine Fehlermeldung an das verbindende Gerät.

So installieren und konfigurieren Sie Linux-Firewall-iptables

Installieren von Iptables Ubuntu

Iptables sind standardmäßig auf den meisten Linux-Systemen installiert. Verwenden Sie den folgenden Befehl, um zu bestätigen, dass iptables installiert ist:

sudo apt-get install iptables

Die Beispielausgabe in Ubuntu bestätigt, dass die neueste Version von iptables bereits vorhanden ist:

Wenn Sie die iptables-Firewall-Regeln beim Neustart des Systems beibehalten möchten, installieren Sie das persistente Paket:

sudo apt-get install iptables-persistent

Installieren von Iptables CentOS

In CentOS 7 , iptables wurde durch firewalld ersetzt .

Um iptables zu installieren, müssen Sie zuerst firewalld stoppen. Geben Sie die folgenden Befehle ein:

sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl mask firewalld

Die Befehle stoppen und verhindern, dass Firewalld beim Booten startet, und lassen andere Dienste Firewalld nicht starten.

Als nächstes installieren und aktivieren Sie iptables. Installieren Sie zuerst das iptables-Dienstpaket mit dem folgenden Befehl:

sudo yum -y install iptables-services

Dieses Paket behält Ihre Regeln nach einem Systemneustart bei. Die unten angezeigten Informationen bestätigen, dass die Installation abgeschlossen ist:

Geben Sie die folgenden Befehle ein, um iptables in CentOS 7 zu aktivieren und zu starten:

sudo systemctl enable iptables
sudo systemctl start iptables

Der Statusbefehl bestätigt den Status der Anwendung:

sudo systemctl status iptables

Grundlegende Syntax für iptables-Befehle und -Optionen

Im Allgemeinen sieht ein iptables-Befehl wie folgt aus:

sudo iptables [option] CHAIN_rule [-j target]

Hier ist eine Liste einiger gebräuchlicher iptables-Optionen:

  • -A --append – Eine Regel zu einer Kette hinzufügen (am Ende).
  • -C --check – Suchen Sie nach einer Regel, die den Anforderungen der Kette entspricht.
  • -D --delete – Angegebene Regeln aus einer Kette entfernen.
  • -F --flush – Alle Regeln entfernen.
  • -I --insert – Fügt einer Kette an einer bestimmten Position eine Regel hinzu.
  • -L --list – Alle Regeln in einer Kette anzeigen.
  • -N -new-chain – Erstellen Sie eine neue Kette.
  • -v --verbose – Weitere Informationen anzeigen, wenn eine Listenoption verwendet wird.
  • -X --delete-chain – Löschen Sie die bereitgestellte Kette.

Iptables unterscheidet zwischen Groß- und Kleinschreibung, stellen Sie also sicher, dass Sie die richtigen Optionen verwenden.

Iptables unter Linux konfigurieren

Standardmäßig wirken sich diese Befehle auf die Filter aus Tisch. Wenn Sie eine andere Tabelle angeben müssen, verwenden Sie –t Option, gefolgt vom Namen der Tabelle.

Überprüfen Sie den aktuellen iptables-Status

Um das aktuelle Regelwerk auf Ihrem Server anzuzeigen, geben Sie im Terminalfenster Folgendes ein:

sudo iptables -L

Das System zeigt den Status Ihrer Ketten an. Die Ausgabe listet drei Ketten auf:

Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)

Loopback-Datenverkehr aktivieren

Es ist sicher, Datenverkehr von Ihrem eigenen System (dem Localhost) zuzulassen. Hängen Sie die Eingabe an Kette, indem Sie Folgendes eingeben:

sudo iptables -A INPUT -i lo -j ACCEPT

Dieser Befehl konfiguriert die Firewall so, dass sie Datenverkehr für den localhost (lo )-Schnittstelle (-i ). Jetzt passiert alles, was von Ihrem System stammt, Ihre Firewall. Sie müssen diese Regel festlegen, damit Anwendungen mit der localhost-Schnittstelle kommunizieren können.

Datenverkehr auf bestimmten Ports zulassen

Diese Regeln lassen Datenverkehr an verschiedenen Ports zu geben Sie mit den unten aufgeführten Befehlen an. Ein Port ist ein Kommunikationsendpunkt, der für einen bestimmten Datentyp angegeben ist.

Geben Sie den folgenden Befehl ein, um HTTP-Webdatenverkehr zuzulassen:

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

Geben Sie Folgendes ein, um nur eingehenden SSH-Datenverkehr (Secure Shell) zuzulassen:

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

Geben Sie den folgenden Befehl ein, um HTTPS-Internetverkehr zuzulassen:

sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Die Optionen funktionieren wie folgt:

  • -p – Suchen Sie nach dem angegebenen Protokoll (tcp ).
  • --dport – Geben Sie den Zielport an.
  • -j jump – Ergreifen Sie die angegebene Aktion.

Kontrollieren Sie den Datenverkehr nach IP-Adresse

Verwenden Sie den folgenden Befehl, um Datenverkehr von einer bestimmten IP-Adresse ZU AKZEPTIEREN.

sudo iptables -A INPUT -s 192.168.0.27 -j ACCEPT

Ersetzen Sie die IP-Adresse im Befehl durch die IP-Adresse, die Sie zulassen möchten.

Sie können den Datenverkehr auch von einer IP-Adresse löschen:

sudo iptables -A INPUT -s 192.168.0.27 -j DROP

Sie können Datenverkehr von einer Reihe von IP-Adressen ablehnen, aber der Befehl ist komplexer:

sudo iptables -A INPUT -m iprange --src-range 192.168.0.1-192.168.0.255 -j REJECT

Die in den Beispielen verwendeten iptables-Optionen funktionieren wie folgt:

  • -m – Übereinstimmung mit der angegebenen Option.
  • -iprange – Weisen Sie das System an, statt einer einzelnen eine Reihe von IP-Adressen zu erwarten.
  • --src-range – Identifiziert den Bereich von IP-Adressen.

Unterbinden von unerwünschtem Datenverkehr

Wenn Sie dport definieren iptables-Firewallregeln müssen Sie unbefugten Zugriff verhindern, indem Sie jeglichen Datenverkehr verwerfen, der über andere Ports kommt:

sudo iptables -A INPUT -j DROP

Das -A Option fügt eine neue Regel an die Kette an. Wenn eine Verbindung über andere als die von Ihnen definierten Ports kommt, wird sie getrennt.

Regel löschen

Sie können das -F verwenden Option zum Löschen aller iptables-Firewallregeln. Eine genauere Methode ist das Löschen der Zeilennummer einer Regel.

Listen Sie zunächst alle Regeln auf, indem Sie Folgendes eingeben:

sudo iptables -L --line-numbers

Suchen Sie die Zeile der Firewall-Regel, die Sie löschen möchten, und führen Sie diesen Befehl aus:

sudo iptables -D INPUT <Number>

Ersetzen Sie <Nummer> mit der tatsächlichen Regelzeilennummer, die Sie entfernen möchten.

Speichern Sie Ihre Änderungen

Iptables behält die von Ihnen erstellten Regeln nicht bei, wenn das System neu gestartet wird. Wann immer Sie iptables unter Linux konfigurieren, gelten alle Änderungen, die Sie vornehmen, nur bis zum ersten Neustart.

Um die Regeln in Debian-basierten Systemen zu speichern, geben Sie ein:

sudo /sbin/iptables–save

Um die Regeln in Red-Hat-basierten Systemen zu speichern, geben Sie Folgendes ein:

sudo /sbin/service iptables save

Beim nächsten Systemstart lädt iptables automatisch die Firewall-Regeln neu.


Ubuntu
  1. Linux-Firewall

  2. Linux – Routing über Iptables?

  3. Linux IPTables:So fügen Sie Firewall-Regeln hinzu (Beispiel:SSH zulassen)

  4. So protokollieren Sie von der Linux-IPTables-Firewall gelöschte Pakete in einer Protokolldatei

  5. Linux-Betriebssystemdienst „iptables“

Der ultimative Leitfaden zum Windows-Subsystem für Linux (Windows WSL)

So sichern Sie eine Linux-Firewall mit IPTables-Regeln

Der ultimative Leitfaden zum Erstellen von Benutzern in Linux / Unix

Top 5 der besten Linux-Firewalls

Linux-Firewall-Tutorial:IPTables-Tabellen, -Ketten, -Regelgrundlagen

So richten Sie eine Firewall auf Ihrem Linux-Server ein