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

Gewusst wie:Linux Allgemein – Grundlegende IPTables über die Befehlszeile

Einführung

Eine grundlegende Anleitung zur Sicherung des Zugriffs auf Ihren Server mit iptables.

Voraussetzungen

Server mit CentOS 6.5 oder früher (diese Anleitung könnte auch unter anderen Linux-Distributionen funktionieren, allerdings mit geringfügigen Änderungen je nach Distribution; dieser Artikel funktioniert ab CentOS 6.5)

Wenn Sie noch keinen Server haben, ziehen Sie in Betracht, einen virtuellen privaten Server von Atlantic.Net hochzufahren

iptables installiert

Beginnend mit einfachen IPTables über die Befehlszeile

Lassen Sie uns zunächst überprüfen, ob iptables installiert und aktiv ist (für alle diese Befehle sind Root-Berechtigungen erforderlich, stellen Sie also sicher, dass Ihr Benutzer Zugriff auf diese Berechtigungen hat – oder, wenn Sie möchten, erhöhen Sie die Rechte auf Root und vermeiden Sie die Notwendigkeit, alle voranzustellen Ihre Befehle mit 'sudo')

sudo service iptables status

iptables-Status des Dienstes

Für diesen neuen Server läuft iptables nicht, also lässt er derzeit den gesamten Datenverkehr zu. Nicht gut. Lassen Sie uns das beheben.

Um einige Grundlagen abzudecken, werden wir das Standardverhalten so einstellen, dass der gesamte Datenverkehr verworfen und nur bestimmter Datenverkehr zugelassen wird (dies ist eine Sicherheitspraxis, die oft als „Whitelisting“ bezeichnet wird). Wir erledigen das alles zuerst auf der Befehlszeile und richten es dann so ein, dass diese Regeln über Neustarts hinweg bestehen bleiben.

Lassen Sie uns zuerst den Dienst starten und dann prüfen, was ausgeführt wird.

sudo service iptables start
sudo service iptables status

Beachten Sie, dass die Standardrichtlinie in jeder dieser Ketten darin besteht, Datenverkehr zu akzeptieren. Lassen Sie uns die Standardeinstellung für INPUT ändern, um den Datenverkehr zu verwerfen. (WARNUNG:Stellen Sie sicher, dass Sie mindestens eine ACCEPT-Regel in der INPUT-Kette haben, um entweder die IP-Adresse Ihrer Workstation oder Port 22 zuzulassen, wenn Sie remote über ssh auf diesen Server zugreifen. Beachten Sie in der obigen Ausgabe des iptables-Status, dass der TCP-Datenverkehr an Port 22 ("tcp dpt:22") wird akzeptiert. Wenn diese Regel nicht wäre, könnten wir uns von diesem Server aussperren!)

sudo iptables -P INPUT DROP

Das „-P “ gibt an, dass wir eine Änderung an der allgemeinen Richtlinie vornehmen werden, „INPUT ‘ ist die bestimmte zu bearbeitende Kette und ‘DROP ‘ ist das standardmäßige Richtlinienziel.

Lassen Sie uns nun einige spezifische Regeln hinzufügen.

Zuerst erlauben wir den Zugriff für HTTP- und HTTPS-Verkehr, auf den wir von jeder IP-Adresse aus zugreifen wollen. Beim Hinzufügen von Regeln zu iptables ist es wichtig, auf die Reihenfolge dieser Regeln zu achten, da iptables die Regeln der Reihe nach analysiert und den Datenverkehr gemäß dem in der Regel angegebenen Ziel verarbeitet und dann die Kette verlässt (in den meisten Fällen). Beachten Sie in der obigen Ausgabe, dass die letzte Regel Datenverkehr ablehnt. Wenn wir eine Zulassungsregel an das Ende dieser Kette anhängen, wird sie niemals aufgerufen, da die darüber liegende Ablehnungsregel den Datenverkehr ablehnt und die Verarbeitung aller folgenden Regeln in der INPUT-Kette beendet.

Finden wir also heraus, an welcher Zeilennummer wir unsere neue Regel einfügen wollen:

sudo iptables -nL INPUT --line-numbers

Iptables-Status

Die Datei „-nL ‘ kombiniert ein paar Flags:‘n ‘ überspringt die DNS-Auflösung (damit wir sehen können, welche IPs jede Regel untersucht); „L ‘ listet jede Regel in der angegebenen Kette auf. Die letzte Option „–line-numbers ‘ fügt passenderweise Zeilennummern zu jedem Regeleintrag hinzu. (Diese Ausgabe ähnelt der, die Sie mit „sudo service iptables status“ erhalten könnten “, aber dieser Befehl stellt die Regeln für alle Ketten bereit, während die „iptables Der obige Befehl gibt uns die Möglichkeit, den Umfang der Ausgabe nach einzelnen Ketten einzugrenzen.)

In diesem Fall fügen wir unsere Regeln direkt über der Ablehnungsregel ein:

sudo iptables -I INPUT 5 -m tcp -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT 6 -m tcp -p tcp --dport 443 -j ACCEPT

Iptables-Liste mit Zeilennummern

Was bedeutet das alles?

* ‘-ich ‘ gibt an, dass wir diese Regel an der angegebenen Zeilennummer einfügen werden (die Nummer nach dem Namen der Kette, in die wir die Regel einfügen).

* ‘-m tcp -p tcp –dport 80 ‘ gibt an, dass diese Regel TCP-Pakete abgleicht, die mit einem Zielport von 80 (oder 443 im Fall der zweiten Regel) ankommen.

* ‘-j ACCEPT ‘ gibt an, dass, wenn diese Regel zutrifft, dieses Paket zum ACCEPT-Ziel „springt“ (was die lange Art zu sagen ist, dass es durchgelassen wird).

Beachten Sie, dass die Ablehnungsregel nach Eingabe des ersten Befehls in Zeile 6 verschoben wird, weshalb sich die zweite Regel in Zeile 6 einfügt.

Lassen Sie uns nun eine Regel hinzufügen, um den Zugriff von einer bestimmten IP zuzulassen, unabhängig von der Art des Datenverkehrs oder Ports.

sudo iptables -I INPUT 4 -s 192.168.0.1 -j ACCEPT

Hier fügen wir diese Regel direkt über der Regel ein, die den gesamten SSH-Datenverkehr auf Zeile 4 zulässt. Das „-s ‘ Gibt die Quell-IP an. Wir hätten genauso gut einen Quell-IP-Bereich mit CIDR-Notation zulassen können, um also den gesamten Bereich 192.168.0.0/24 zuzulassen:

sudo iptables -I INPUT 4 -s 192.168.0.0/24 -j ACCEPT

Wir könnten diese Regel präzisieren – sagen wir, wir wollen nur in der Lage sein, von dieser 192.168.0.1-Adresse auf diesen Server zu sshen. Lassen Sie uns auch einen Kommentar abgeben!

sudo iptables -R INPUT 4 -s 192.168.0.1 -m tcp -p tcp --dport 22 -j ACCEPT -m comment --comment "Only home workstation can ssh in"

Da diese Regel unsere vorherige ersetzen wird, beachten Sie zunächst das „-R ‘–das bedeutet ‘ersetzen’ in der angegebenen Zeilennummer statt einfügen. Diese Regel kombiniert die Überprüfung der Quell-IP und des Zielports. Damit Datenverkehr zugelassen wird, müssen wir also beide abgleichen. Die endgültige Übereinstimmungsoption für den Kommentar ist optional, kann aber beim Auflisten von iptables-Regeln sehr hilfreich sein, um kurz anzugeben, warum diese Regel vorhanden ist – was sehr hilfreich sein kann, wenn Ihre iptables-Regeln stärker involviert sind oder wenn es Regeln gibt, die nicht vorhanden sind 't sofort offensichtlich, wenn es aufgelistet wird (wie das für die Loopback-Schnittstelle, für die ich den Kommentar früher hinzugefügt hatte).

Wir könnten an dieser Stelle die Regel entfernen, die es jeder IP erlaubt, über ssh auf diesen Server zuzugreifen:

sudo iptables –D INPUT 5

(Das „-D ’ gibt an, dass die angegebene Zeilennummer in dieser Kette gelöscht wird.)

Wenn Sie mit dem Hinzufügen von Regeln fertig sind, speichern Sie unbedingt:

sudo service iptables save

Dadurch werden Ihre derzeit ausgeführten iptables-Regeln in /etc/sysconfig/iptables gespeichert, sodass beim nächsten Neustart Ihres Servers automatisch die Regeln geladen werden, die Sie hier eingegeben haben. Wenn Sie Ihre iptables-Datei mit aussagekräftigeren Kommentaren bearbeiten möchten (oder einen größeren, komplizierteren Satz von Firewall-Regeln verwalten möchten), lesen Sie den Artikel über die grundlegende IPTables-Dateikonfiguration.


Linux
  1. So löschen Sie den BASH-Befehlszeilenverlauf in Linux

  2. So verwenden Sie den Su-Befehl unter Linux

  3. Herunterfahren oder Neustarten von Linux über die Befehlszeile

  4. Wie erstelle ich Cmyk-Bilder über die Befehlszeile unter Linux?

  5. So starten Sie Linux über die Befehlszeile neu

Wie verwende ich Proxy in der Linux-Befehlszeile?

So booten Sie in die Linux-Befehlszeile

Wie man grundlegende Mathematik in der Linux-Befehlszeile durchführt

So überprüfen Sie die Betriebssystemversion mit der Linux-Befehlszeile

So extrahieren Sie die Tar.xz-Datei in der Linux-Befehlszeile

So finden Sie die IP-Adresse in der Linux-Befehlszeile