So sichern Sie Ihren Linux-Desktop mit Iptables
Linux mag einen Ruf für Sicherheit haben, aber es ist nicht perfekt. Viele Distributionen verfügen nicht über die besten Sicherheitsstandards. Daher empfiehlt es sich, einige Best Practices für die Sicherheit zu implementieren. Ein solches Beispiel ist die Verwendung einer Firewall.
Es gibt ein paar Optionen für Firewalls in Linux, aber die meisten sind eigentlich nur Wrapper um iptables. Für diesen Leitfaden zeigen wir Ihnen, wie Sie direkt mit iptables arbeiten können.
Was ist Iptables?
Iptables ist die Linux-Kernel-Firewall. Es kommt mit jeder Linux-Distribution und es ist der direkteste Weg, den Verkehr zu kontrollieren, der in und aus Ihrem Computer kommt.
Iptables hat den Ruf, komplex zu sein und es kann sein. Sie müssen jedoch nicht alles über iptables wissen, um es effektiv auf Ihrem Desktop zu verwenden. Sie brauchen nur ein paar grundlegende Kenntnisse darüber, wie es funktioniert und wie seine Regeln strukturiert sind.
Related : So behandeln und konfigurieren Sie Firewall unter Linux
Befehlsstruktur
Alle iptables-Regeln folgen derselben Grundstruktur. Jede Regel ist ein einzeiliger Befehl an iptables, der angibt, wie der Verkehr an einem bestimmten Port gehandhabt wird. Schauen Sie sich das folgende Beispiel an:
-A INPUT -i eth0 -p tcp -m Zustand - Status ESTABLISHED, RELATED - Sport 80 -j ACCEPT
Das sieht nach viel aus, aber es ist wirklich einfach, wenn man es kaputt macht. Zuerst beginnt diese Regel mit -A
weil sie an Ihre iptables-Regeln angehängt wird.
Als nächstes gibt das Flag -i
die Schnittstelle an, für die die Regel gilt. In diesem Fall ist es eth0
. Achten Sie beim Schreiben Ihrer eigenen Regeln darauf, dass Sie wissen, mit welcher Schnittstelle Sie über Ihr Netzwerk verbunden sind.
Das folgende Flag, -p
, benennt das Protokoll. Diese Regel gilt für tcp
, also für den Web-Datenverkehr.
Die -m
Flagge ist ein bisschen anders. Es wird verwendet, um zu bestätigen, dass eine Bedingung erfüllt sein muss, damit der Verkehr nicht zurückgewiesen wird. Die Bedingung in dieser Regel ist der Staat.
State ist eigentlich die nächste Flagge. Sie müssen --state
Geben --state
eine Liste der zulässigen Zustände ein, die in --state
geschrieben und durch Kommas getrennt sind. Diese Regel akzeptiert sowohl neue als auch etablierte Verbindungen.
Die vorletzte Flagge hier ist --sport
. Es steht für "source port" und es teilt iptables mit, woher der Verkehr kommt. Es gibt auch ein --dport
Flag, das für "Ziel-Port" steht. Es wird für die OUTPUT
Regeln verwendet, um zu behandeln, welcher Port-Verkehr ankommt.
Schließlich gibt es die -j
Flagge. Es teilt iptable mit, zu welcher Aktion "gesprungen" werden soll. In diesem Fall sollte es den Datenverkehr ACCEPT
der die vorherigen Bedingungen erfüllt.
Verwenden einer Datei
Sie können Ihre Regeln einzeln nacheinander in iptables eingeben. Das ist unglaublich mühsam, und es ist sehr leicht, den Überblick zu verlieren, wo Sie sind und was Sie tun. Es ist viel besser, eine Regeldatei zu erstellen, die Sie alle gleichzeitig in iptables importieren können.
Es spielt keine Rolle, wo Sie die Datei erstellen. Leute machen sie sogar im Verzeichnis /tmp
weil iptables das Ergebnis speichert, nachdem es importiert wurde.
Erstelle deine Datei. In diesem Handbuch wird /tmp/iptables-ip4
. Fügen Sie in der Datei die folgenden zwei Zeilen hinzu. Alle deine Regeln werden zwischen ihnen liegen.
* filter # Deine Regeln hier COMMIT
Erstellen Sie Ihre Regeln
Sie können mit der Einrichtung Ihrer Regeln beginnen. Dies sind nur Vorschläge. Wenn Sie andere Dienste ausführen oder andere Ports geöffnet haben, können Sie natürlich einige Dinge optimieren oder eigene Regeln hinzufügen.
Loopback
Die Loopback-Schnittstelle ist eine interne Schnittstelle, die Linux verwendet.
-A EINGANG -i lo -j AKZEPT-A AUSGANG -o lo -j AKZEPTIEREN
Klingeln
Dieser ist eine Frage der Präferenz. Viele Leute mögen es überhaupt nicht, Ping auf ihren Desktops zu erlauben. Es kann jedoch nützlich sein, Verbindungen zu testen. Wenn Sie Ping zulassen möchten, fügen Sie die folgenden Regeln hinzu. Wenn Sie dies nicht tun, schließen Sie sie aus.
-A INPUT -i eth0 -p icmp -m Status --status NEW --icmp-type 8 -j AKZEPT-A EINGANG -i eth0 -p icmp -m Status --status ERGIBT, VERBUNDEN -j ANNEHMEN -A AUSGANG - o eth0 -p icmp -j AKZEPTIEREN
Das Netz
Sie möchten offensichtlich eine Verbindung mit dem Web herstellen können. Auf der anderen Seite wollen Sie keine Verbindungen aus dem Internet zulassen.
-A EINGANG -i eth0 -p tcp -m Zustand --Status HERAUSGEFÜHRT, VERWANDT --Sport 80 -j ANNEHMEN -EINGANG -i eth0 -p tcp -m Zustand --Status FESTGESTELLT, VERWANDT --Sport 443 -j AKZEPTIEREN -A OUTPUT -o eth0 -p tcp -m tcp --dport 80 -j ANNEHMEN -A AUSGABE -o eth0 -p tcp -m tcp --dport 443 -j AKZEPTIEREN
Sie müssen auch DNS-Verbindungen zulassen, damit Ihr Computer URLs anstelle von nur IP-Adressen verwenden kann, da dies nicht sehr praktisch wäre. Ersetzen Sie die IP-Adresse Ihres Routers für die hier verwendete Adresse.
-A EINGANG -i ens3 -s 192.168.1.1 -p udp --sport 53 -m zustand --status ERGIBT, VERBINDET -j ANNEHMEN -A AUSGANG -o ens3 -d 192.168.1.1 -p udp --dport 53 -m udp -j AKZEPTIEREN
Zeit
Die meisten Linux-Desktops verwenden NTP, um die Systemzeit über das Internet festzulegen und zu verwalten. Sie müssen Ihrem Computer erlauben, sich mit einem NTP-Server zu verbinden, um die Zeit zu erhalten.
-A INPUT -i eth0 -p udp -m Status - Status ESTABLISHED, VERWANDT --dport 123 -j ANNEHMEN-OUTPUT -o eth0 -p udp -m udp --sport 123 -j AKZEPTIEREN
Sofern Sie keinen USB-Drucker oder einen externen Druckserver verwenden, müssen Sie Verbindungen zu CUPS aktivieren.
-A EINGABE -p udp -m udp --dport 631 -j ANNEHMEN -A EINGABE -p tcp -m tcp --dport 631 -j ANNEHMEN -A AUSGABE -p udp -m udp --sport 631 -j AKZEPTIEREN -A OUTPUT -p tcp -m tcp --sport 631 -j AKZEPTIEREN
Wahrscheinlich möchten Sie auch E-Mails senden und empfangen können. E-Mail kann schwierig sein. Die hier erlaubten Ports sind die SSL-Email-Ports. Wenn Sie ungesicherte E-Mails verwenden müssen, ersetzen Sie diese Ports.
# IMAP -A EINGANG -i eth0 -p tcp -m Zustand --status ERGIBT, VERBUNDEN --sport 993 -j ANNEHMEN -A AUSGABE -o eth0 -p tcp -m tcp --dport 993 -j AKZEPTIEREN # POP3 -A INPUT -i eth0 -p tcp -m Zustand --status ERGIBT, VERBUNDEN --sport 995 -j ANNEHMEN -A AUSGABE -o eth0 -p tcp -m tcp --dport 995 -j AKZEPTIEREN # SMTP -A EINGANG -i eth0 -p tcp -m Zustand --status ERGIBT, VERBUNDEN --sport 465 -j ANNEHMEN -A AUSGABE -o eth0 -p tcp -m tcp --dport 465 -j AKZEPTIEREN
SSH
Um die SSH-Verbindungen voll auszunutzen, müssen Sie sowohl die Eingabe als auch die Ausgabe über SSH zulassen.
# Eingang -A EINGANG -i ens3 -p tcp -m Zustand --status NEU, EINGEFERTIGT --dport 22 -j ANNEHMEN -A AUSGANG -o ens3 -p tcp -m Zustand --status EINGESTELLT --sport 22 -j AKZEPTIEREN # Ausgang -A AUSGANG -o ens3 -p tcp -m Zustand --status NEU, EINGEFERTIGT --dport 22 -j ANNEHMEN -A EINGANG -i ens3 -p tcp -m Zustand --Status ESTABLISHED --sport 22 -j ANNEHMEN
DHCP
Die meisten Linux-Desktops verwenden DHCP, um automatisch eine IP-Adresse von einem Router zu erhalten. DHCP verwendet seine eigenen Ports, daher müssen sie auch zugänglich sein. Wenn Sie eine statische IP verwenden, benötigen Sie diese Regeln nicht.
-A INPUT -i eth0 -p udp -m Zustand --status ESTABLISHED, RELATED --sport 67:68 -j ANNEHMEN -A AUSGABE -o eth0 -p udp -m udp --dport 67:68 -j AKZEPTIEREN
Alles andere ablehnen
Schließlich wirst du Iptables sagen, dass du alles ablehnen sollst, was du in den obigen Regeln nicht explizit erlaubt hast.
-A INPUT -j REJECT-FORWARD -j REJECT-OUTPUT -j REJECT
Nach allem sollten Ihre Regeln in etwa so aussehen.
Importieren Sie Ihre Regeln
Sie haben jetzt eine voll funktionsfähige iptables-Regelliste. Sie müssen es nur an iptables weitergeben, um es zu verwenden.
Falls einige Regeln im Laufe der Zeit hinzugefügt wurden, löschen Sie sie. Nach diesen Befehlen sehen Sie die Standardeinstellungen, die alles erlauben.
sudo iptables -F && sudo iptables -X
Wenn diese entfernt wurden, können Sie die neuen aus der von Ihnen erstellten Datei wiederherstellen.
sudo iptables-restore </ tmp / itpables-ip4
Ihr Computer verwendet jetzt die neuen iptables-Regeln. Sie können sie überprüfen.
sudo iptables -S
Sie sind jedoch noch nicht dauerhaft. Wenn Sie Ihren Computer jetzt neu starten, werden Sie eine wirklich schlechte Zeit haben.
Sie dauerhaft machen
Es gibt mehrere Möglichkeiten, die Regeln dauerhaft zu machen. Sie sind für jede Distribution unterschiedlich. Dieses Handbuch konzentriert sich auf Debian- und Ubuntu-basierte Systeme, da diese am beliebtesten sind.
Es gibt ein Paket namens iptables-persistant
, das iptables speichert und wiederherstellt. Alles, was Sie tun müssen, ist es zu installieren.
sudo apt installiert iptables-persistent
Während der Installation werden Sie vom Paket gefragt, ob Sie Ihre Konfiguration speichern möchten. Wählen Sie "Ja".
Wenn Sie in der Zukunft Regeln hinzufügen möchten, können Sie den Befehl erneut ausführen, indem Sie den folgenden Befehl ausführen.
sudo service netfilter-persistent speichern
Sie haben jetzt die Kontrolle über den Datenverkehr, der durch Ihren Computer fließt. Es gibt sicherlich mehr, was Sie mit iptables machen können, aber Sie sollten sich zuerst mit den Grundlagen vertraut machen.