So richten Sie eine Iptables -Firewall ein, um den Remote -Zugriff auf Dienste unter Linux - Teil 8 zu ermöglichen

So richten Sie eine Iptables -Firewall ein, um den Remote -Zugriff auf Dienste unter Linux - Teil 8 zu ermöglichen
Linux Foundation Certified Engineer - Teil 8

Einführung des Linux Foundation -Zertifizierungsprogramms

Sie werden sich aus Teil 1 erinnern - über Iptables davon Lfce (Linux Foundation Certified Engineer ) Serie, die wir eine grundlegende Beschreibung dessen gegeben haben, was eine Firewall ist: ein Mechanismus, um Pakete zu verwalten und das Netzwerk zu verlassen. Mit „Management“ meinen wir tatsächlich:

  1. Zuzulassen oder zu verhindern, dass bestimmte Pakete unser Netzwerk eingeben oder verlassen.
  2. Andere Pakete von einem Punkt des Netzwerks an einen anderen weiterzuleiten.

Basierend auf vorgegebenen Kriterien.

In diesem Artikel werden wir besprechen, wie die grundlegende Paketfilterung und die Konfiguration der Firewall mit Iptables, einem Frontend to Netfilter, implementiert werden.

Bitte beachten Sie, dass Firewalling ein großes Thema ist und dieser Artikel kein umfassender Leitfaden für das Verständnis für alles ist, was es gibt, sondern als Ausgangspunkt für eine tiefere Untersuchung dieses Themas. Wir werden das Thema jedoch noch einmal besuchen Teil 10 dieser Serie, wenn wir einige spezifische Anwendungsfälle einer Firewall unter Linux untersuchen.

Sie können sich eine Firewall als einen internationalen Flughafen vorstellen, auf dem Personenflugzeuge fast rund um die Uhr kommen und gehen. Basierend auf einer Reihe von Bedingungen, wie der Gültigkeit des Reisepasses einer Person oder ihrem Herkunftsland (um einige Beispiele zu nennen), darf er ein bestimmtes Land eingeben oder verlassen.

Gleichzeitig können Flughafenbeamte die Menschen anweisen, beispielsweise von einem Ort des Flughafens zum anderen zu wechseln, wenn sie Zolldienste durchgehen müssen.

Wir können die Analogie der Flughafen während des Restes dieses Tutorials nützlich finden. Denken Sie einfach an die folgenden Beziehungen, während wir fortfahren:

  1. Personen = Pakete
  2. Firewall = Flughafen
  3. Land Nr. 1 = Netzwerk Nr. 1
  4. Land Nr. 2 = Netzwerk Nr. 2
  5. Von den Beamten durchgesetzte Flughafenbestimmungen = Firewall -Regeln

Iptables - die Grundlagen

Auf der niedrigen Ebene ist es der Kernel selbst, der “entscheidetWas tun mit Paketen basierend auf den gruppierten Regeln, die in gruppiert sind Ketten, oder Sätze. Diese Ketten definieren, welche Maßnahmen ergriffen werden sollen, wenn ein Paket den von ihnen angegebenen Kriterien entspricht.

Die erste von Iptables ergriffene Maßnahmen bestehen darin, zu entscheiden, was mit einem Paket zu tun ist:

  1. Akzeptieren Sie es (lassen Sie es in unser Netzwerk durchgehen)?
  2. Lehnen Sie es ab (verhindern Sie, dass es auf unser Netzwerk zugreift)?
  3. Weiterleiten (an eine andere Kette)?

Nur für den Fall, dass Sie sich gefragt haben, warum dieses Tool genannt wird iptables, Es liegt daran, dass diese Ketten in Tischen organisiert sind, mit dem Filtertabelle Am gut bekanntesten und derjenige, mit dem die Paketfilterung mit seinen drei Standardketten implementiert wird:

1. Der EINGANG Die Kette verarbeitet Pakete, die in das Netzwerk kommen, die für lokale Programme bestimmt sind.

2. Der AUSGANG Die Kette wird verwendet, um Pakete zu analysieren, die aus dem lokalen Netzwerk stammen und nach außen gesendet werden sollen.

3. Der NACH VORNE Kettenverarbeitung verarbeitet die Pakete, die an ein anderes Ziel weitergeleitet werden sollten (wie im Fall eines Routers).

Für jede dieser Ketten gibt es eine Standardrichtlinie, die bestimmt, was standardmäßig getan werden sollte, wenn die Pakete keine der Regeln in der Kette übereinstimmen. Sie können die für jede Kette erstellten Regeln und die Standardrichtlinie anzeigen, indem Sie den folgenden Befehl ausführen:

# iptables -l 

Die verfügbaren Richtlinien sind wie folgt:

  1. AKZEPTIEREN → Lassen Sie das Paket durch. Jedes Paket, das keine Regeln in der Kette entspricht.
  2. TROPFEN → lässt das Paket leise fallen. Jedes Paket, das keine Regeln in der Kette entspricht.
  3. ABLEHNEN → lehnt das Paket ab und gibt eine informative Nachricht zurück. Insbesondere dieser Fall funktioniert nicht als Standardrichtlinie. Stattdessen soll es Paketfilterungsregeln ergänzen.
Linux iptables Richtlinien

Wenn es darum geht, zu entscheiden, welche Richtlinien Sie implementieren werden, müssen Sie die berücksichtigen Profis Und Nachteile von jedem oben erläuterten Ansatz-Beachten Sie, dass es keine einheitliche Lösung gibt.

Hinzufügen von Regeln

Um der Firewall eine Regel hinzuzufügen, rufen Sie den Befehl iptables wie folgt auf:

# iptables -a chain_name kriterien -j Ziel 

Wo,

  1. -A steht für append (append die aktuelle Regel am Ende der Kette).
  2. chain_name ist entweder Eingang, Ausgabe oder Vorwärts.
  3. Ziel Ist die Handlung oder Richtlinie in diesem Fall angewendet (akzeptieren, ablehnen oder fallen lassen).
  4. Kriterien ist die Reihe von Bedingungen, gegen die die Pakete untersucht werden sollen. Es besteht aus mindestens einem (höchstwahrscheinlich mehr) der folgenden Flaggen. Optionen in Klammern, die durch einen vertikalen Balken getrennt sind, entsprechen einander. Der Rest stellt optionale Schalter dar:
[--Protocol | -p] Protokoll: Gibt das Protokoll an, das an einer Regel beteiligt ist. [-Source-Port | -Sport] Port: [Port]: Definiert den Port (oder den Bereich der Ports), an dem das Paket entstand. [-Destination-Port | -dort] Port: [Port]: Definiert den Port (oder den Bereich der Ports), für den das Paket bestimmt ist. [-Source | -S] Adresse [/Mask]: Repräsentiert die Quelladresse oder das Netzwerk/die Maske. [-Destination | -D] Adresse [/Mask]: Repräsentiert die Zieladresse oder das Netzwerk/die Maske. [-State] Staat (vorausgegangen von -M Staat): Verwalten Sie Pakete, je nachdem, ob sie Teil einer staatlichen Verbindung sind, wobei der Staat neu, etabliert, verwandt oder ungültig sein kann. [-In-Schnittstelle | -i] Schnittstelle: Gibt die Eingangsschnittstelle des Pakets an. [-Out-Out-Out-Out-Face | -O] Schnittstelle: Die Ausgabeschnittstelle. [-Jump | -J] Ziel: Was tun, wenn das Paket der Regel entspricht?. 

Unsere Testumgebung

Lassen Sie uns all das in 3 klassischen Beispielen anhand der folgenden Testumgebung für die ersten beiden kleben:

Firewall: Debian Wheezy 7.5 Hostname: Dev2.GabrielCanepa.com ip Adresse: 192.168.0.15 
Quelle: CentOS 7 Hostname: Dev1.GabrielCanepa.com ip Adresse: 192.168.0.17 

Und dies für das letzte Beispiel

NFSV4 -Server und Firewall: Debian Wheezy 7.5 Hostname: Debian IP -Adresse: 192.168.0.10 
Quelle: Debian Wheezy 7.5 Hostname: Dev2.GabrielCanepa.com ip Adresse: 192.168.0.15 
Beispiel 1: Analyse der Differenz zwischen dem Abfall- und Ablehnungsrichtlinien

Wir werden a definieren TROPFEN Richtlinien zuerst für Eingabe von Pings in unsere Firewall. Das heißt, ICMP -Pakete werden leise fallen gelassen.

# Ping -c 3 192.168.0.15 
# iptables -a Eingabe -Protokoll ICMP -In -Schnitt -Schnitt -ETH0 -J -Drop 
Löschen Sie die ICMP -Ping -Anfrage

Bevor Sie mit dem fortfahren ABLEHNEN Teil, wir werden alle Regeln aus der Eingangskette spülen, um sicherzustellen, dass unsere Pakete durch diese neue Regel getestet werden:

# iptables -f input # iptables -a Eingabe -Protocol ICMP -In -Schnittstelle ETH0 -J Ablehnung 
# Ping -c 3 192.168.0.15 
Lehnen Sie die ICMP -Ping -Anfrage in Firewall ab
Beispiel 2: Deaktivieren / Wiedererungs-SSH-Anmeldungen von Dev2 nach Dev1

Wir werden es mit dem zu tun haben AUSGANG Kette, während wir den ausgehenden Verkehr umgehen:

# iptables -a output-Protocol TCP-Destination-Port 22-Out-Schnitt-Out-Schnitt-Face-ETH0-Jump-Ablehnung 
Block SSH Login in Firewall
Beispiel 3: Erlauben / Verhinderung von NFS -Clients (ab 192.168.0.0/24) an die NFS4 -Aktien

Führen Sie die folgenden Befehle auf dem NFSV4 -Server / der Firewall aus, um die Ports 2049 und 111 für alle Arten von Verkehr zu schließen:

# iptables -f # iptables -a Eingabe -i eth0 -s 0/0 -p tcp ---Dport 2049 -j reject # iptables -a input -i eth0 -s 0/0 -p TCP - -dort 111 -j Ablehnung 
Blockieren Sie NFS -Ports in der Firewall

Öffnen wir nun diese Ports und sehen, was passiert.

# iptables -a Eingabe -i Eth0 -s 0/0 -p tcp ---Dport 111 -j Akzeptieren # iptables -a Eingabe -i Eth0 -s 0/0 -p TCP ---Dport 2049 -J Akzeptieren 
Öffnen Sie NFS -Anschlüsse in der Firewall

Wie Sie sehen können, konnten wir die NFSV4 -Aktie nach dem Öffnen des Verkehrs montieren.

Einfügen, Anhängen und Löschen von Regeln

In den vorherigen Beispielen haben wir gezeigt, wie man Regeln an die angehängt hat EINGANG Und AUSGANG Ketten. Sollten wir sie stattdessen in eine vordefinierte Position einfügen wollen, sollten wir die verwenden -ICH (Großbuchstaben I) Wechseln Sie stattdessen.

Sie müssen sich daran erinnern, dass Regeln nacheinander bewertet werden und dass die Bewertung aufhört (oder springt), wenn a TROPFEN oder AKZEPTIEREN Die Richtlinie wird übereinstimmt. Aus diesem Grund sind Sie möglicherweise in der Notwendigkeit, Regeln nach Bedarf in die Kettenliste nach oben oder unten zu verschieben.

Wir werden ein triviales Beispiel verwenden, um dies zu demonstrieren:

Überprüfen Sie die Regeln von iptables Firewall

Lassen Sie uns die folgende Regel platzieren,

# iptables -i Eingabe 2 -p tcp - -dort 80 -J Akzeptieren 

an Position 2) in der Eingabemittel (somit vorherige Nr. 2 als #3 bewegt)

Iptables akzeptieren Regel

Mit dem obigen Setup wird der Datenverkehr überprüft, um festzustellen, ob er an Port gerichtet ist 80 Bevor Sie nach Port suchen 2049.

Alternativ können Sie eine Regel löschen und das Ziel der verbleibenden Regeln ändern ABLEHNEN (Verwendung der -R schalten):

# iptables -d Eingabe 1 # iptables -nl -v -line -numbers # iptables -r Eingabe 2 -i ETH0 -S 0/0 -P TCP - -DPORT 2049 -J Ablehnung # iptables -r Eingabe 1 -P TCP -dort 80 -J Ablehnung 
Iptables fallen in der Regel ab

Last, aber nicht zuletzt müssen Sie sich daran erinnern, dass Sie, damit die Firewall -Regeln hartnäckig sind ist für Ihre Verteilung verfügbar).

Speichern von Firewall -Regeln:

# Iptables-Save>/etc/iptables/Regeln.v4 [auf Ubuntu] # iptables-Save> /etc /sysconfig /iptables [auf CentOS /openSuse] 

Wiederherstellung von Regeln:

# iptables-restore < /etc/iptables/rules.v4 [On Ubuntu] # iptables-restore < /etc/sysconfig/iptables [On CentOS / OpenSUSE] 

Hier sehen wir eine ähnliche Prozedur (Speichern und Wiederherstellen von Firewall -Regeln von Hand) mithilfe einer Dummy -Datei aufgerufen iptables.entsorgen anstelle der Standardeinstellung wie oben gezeigt.

# iptables-Save> iptables.entsorgen 
Dump Linux iptables

Damit diese Änderungen über Stiefel hinweg bestehen bleiben:

Ubuntu: Installiere das iptables-persistent Paket, mit dem die in der gespeicherten Regeln geladen werden /etc/iptables/Regeln.v4 Datei.

# APT-GET IPTables-Persistent Installation 

Centos: Fügen Sie die folgenden 2 Zeilen hinzu zu /etc/sysconfig/iptables-config Datei.

Iptables_save_on_stop = "yes" iptables_save_on_restart = "yes" " 

OpenSuse: Liste erlaubte Ports, Protokolle, Adressen usw. (durch Kommas getrennt) in /etc/sysconfig/susefirewall2.

Weitere Informationen finden Sie in der Datei selbst, die stark kommentiert wird.

Abschluss

Die in diesem Artikel angegebenen Beispiele, die nicht alle Schnickschnack von Iptables abdecken, dienen dazu, zu veranschaulichen.

Denken Sie für diejenigen unter Ihnen, die Firewall -Fans sind Teil 10 von diesem Lfce Serie.

Fühlen Sie sich frei, mich wissen zu lassen, wenn Sie Fragen oder Kommentare haben.

Werden Sie ein Linux -zertifizierter Ingenieur