Erste Schritte mit Firewalld unter Linux

Veröffentlicht: 2022-07-08
Laptop-Bildschirm mit einer Linux-Befehlszeile.
fatmawati achmad zaenuri/Shutterstock.com

Wenn Sie nach einer modernen, leistungsstarken Firewall für Linux suchen, die einfach über die Befehlszeile oder mit ihrer GUI-Oberfläche konfiguriert werden kann, dann ist firewalld wahrscheinlich das, wonach Sie suchen.

Die Notwendigkeit von Firewalls

Netzwerkverbindungen haben einen Ursprung und ein Ziel. Software am Ursprung fordert die Verbindung an, und Software am Ziel akzeptiert oder lehnt sie ab. Wenn es akzeptiert wird, können Datenpakete – allgemein als Netzwerkverkehr bezeichnet – in beide Richtungen über die Verbindung geleitet werden. Das gilt unabhängig davon, ob Sie den Raum in Ihrem eigenen Zuhause teilen, sich von Ihrem Heimbüro aus mit der Arbeit verbinden oder eine entfernte, cloudbasierte Ressource verwenden.

Was macht eigentlich eine Firewall?
VERWANDT Was macht eigentlich eine Firewall?

Eine gute Sicherheitspraxis besagt, dass Sie die Verbindungen zu Ihrem Computer einschränken und kontrollieren sollten. Das machen Firewalls. Sie filtern den Netzwerkverkehr nach IP-Adresse, Port oder Protokoll und weisen Verbindungen zurück, die einen vordefinierten Satz von Kriterien – die von Ihnen konfigurierten Firewall-Regeln – nicht erfüllen. Sie sind wie das Sicherheitspersonal bei einer exklusiven Veranstaltung. Wenn Ihr Name nicht auf der Liste steht, kommen Sie nicht hinein.

Natürlich möchten Sie nicht, dass Ihre Firewall-Regeln so restriktiv sind, dass Ihre normalen Aktivitäten eingeschränkt werden. Je einfacher es ist, Ihre Firewall zu konfigurieren, desto geringer ist die Wahrscheinlichkeit, dass Sie versehentlich widersprüchliche oder drakonische Regeln einrichten. Wir hören oft von Benutzern, die sagen, dass sie keine Firewall verwenden, weil sie zu kompliziert zu verstehen oder die Befehlssyntax zu undurchsichtig ist.

Die firewalld von firewalld ist leistungsstark und dennoch einfach einzurichten, sowohl über die Befehlszeile als auch über ihre dedizierte GUI-Anwendung. Unter der Haube verlassen sich Linux-Firewalls auf netfilter , das Kernel-seitige Netzwerkfilter-Framework. Hier draußen im User-Land haben wir eine Auswahl an Tools, um mit netfilter zu interagieren, wie iptables , ufw die unkomplizierte Firewall und firewalld .

firewalld bietet unserer Meinung nach die beste Balance zwischen Funktionalität, Granularität und Einfachheit.

Firewall installieren

firewalld besteht aus zwei Teilen. Es gibt firewalld , den Daemon-Prozess, der die Firewall-Funktionalität bereitstellt, und es gibt firewall-config . Dies ist die optionale GUI für firewalld . Beachten Sie, dass es in firewall-config kein „d“ gibt.

Die Installation von firewalld auf Ubuntu, Fedora und Manjaro ist in allen Fällen unkompliziert, obwohl sie jeweils ihre eigene Sichtweise darauf haben, was vorinstalliert und was gebündelt ist.

Um auf Ubuntu zu installieren, müssen wir firewalld und firewall-config installieren.

 sudo apt install firewalld 

Firewalld unter Ubuntu installieren

 sudo apt install firewall-config 

Firewall-Config auf Ubuntu installieren

Auf Fedora ist firewalld bereits installiert. Wir müssen nur noch firewall-config hinzufügen.

sudo dnf install firewall-config

Installation der Firewall-Konfiguration auf Fedora

Auf Manjaro ist keine Komponente vorinstalliert, aber sie sind in einem einzigen Paket gebündelt, sodass wir sie beide mit einem einzigen Befehl installieren können.

 sudo pacman -Sy firewalld 

Installation von firewalld und firewall-config mit einem Befehl auf Manjaro

Wir müssen den firewalld -Daemon aktivieren, damit er bei jedem Hochfahren des Computers ausgeführt werden kann.

 sudo systemctl enable firewalld 

Aktivieren von firewalld für den automatischen Start beim Booten

Und wir müssen den Daemon starten, damit er jetzt läuft.

 sudo systemctl Firewalld starten 

Starten des Firewalld-Daemons

Wir können systemctl verwenden, um zu überprüfen, ob firewalld gestartet wurde und ohne Probleme läuft:

 sudo systemctl status firewalld 

Überprüfen Sie den Status von firewalld mit systemctl

Wir können auch firewalld verwenden, um zu überprüfen, ob es läuft. Dies verwendet den Befehl firewall-cmd mit der Option --state . Beachten Sie, dass es in firewall-cmd kein „d“ gibt:

 sudo firewall-cmd --state 

Überprüfung des Status von firewalld mit dem Befehl firewall-cmd

Nachdem wir die Firewall installiert und ausgeführt haben, können wir mit der Konfiguration fortfahren.

Das Konzept der Zonen

Die firewalld Firewall basiert auf Zonen . Zonen sind Sammlungen von Firewall-Regeln und einer zugehörigen Netzwerkverbindung. Auf diese Weise können Sie verschiedene Zonen – und unterschiedliche Sicherheitsbeschränkungen – anpassen, unter denen Sie arbeiten können. Sie haben beispielsweise eine Zone für regelmäßiges, tägliches Laufen definiert, eine andere Zone für sichereres Laufen und eine vollständige Sperrzone „Nichts rein, nichts raus“.

Um von einer Zone in eine andere und effektiv von einer Sicherheitsstufe zu einer anderen zu wechseln, verschieben Sie Ihre Netzwerkverbindung von der Zone, in der sie sich befindet, in die Zone, unter der Sie laufen möchten.

Dies macht es sehr schnell, eine von einem definierten Satz von Firewall-Regeln zu einem anderen zu verschieben. Eine andere Möglichkeit, Zonen zu verwenden, wäre, Ihren Laptop eine Zone verwenden zu lassen, wenn Sie zu Hause sind, und eine andere, wenn Sie unterwegs sind und öffentliches WLAN verwenden.

firewalld kommt mit neun vorkonfigurierten Zonen. Diese können bearbeitet und weitere Zonen hinzugefügt oder entfernt werden.

  • drop : Alle eingehenden Pakete werden verworfen. Ausgehender Datenverkehr ist erlaubt. Dies ist die paranoideste Einstellung.
  • block : Alle eingehenden Pakete werden verworfen und eine icmp-host-prohibited Nachricht an den Absender gesendet. Ausgehender Datenverkehr ist erlaubt.
  • trusted : Alle Netzwerkverbindungen werden akzeptiert und anderen Systemen wird vertraut. Dies ist die vertrauenswürdigste Einstellung und sollte auf sehr sichere Umgebungen wie Captive Test Networks oder Ihr Zuhause beschränkt sein.
  • public : Diese Zone ist für die Verwendung in öffentlichen oder anderen Netzwerken vorgesehen, in denen keinem der anderen Computer vertraut werden kann. Eine kleine Auswahl gängiger und in der Regel sicherer Verbindungsanfragen wird akzeptiert.
  • external : Diese Zone ist für die Verwendung in externen Netzwerken mit aktiviertem NAT-Masquerading (Portweiterleitung) vorgesehen. Ihre Firewall fungiert als Router, der den Datenverkehr an Ihr privates Netzwerk weiterleitet, das erreichbar, aber dennoch privat bleibt.
  • internal : Diese Zone ist für die Verwendung in internen Netzwerken vorgesehen, wenn Ihr System als Gateway oder Router fungiert. Anderen Systemen in diesem Netzwerk wird im Allgemeinen vertraut.
  • dmz : Diese Zone ist für Computer, die sich in der „entmilitarisierten Zone“ außerhalb Ihres Perimeterschutzes befinden und eingeschränkten Zugriff auf Ihr Netzwerk haben.
  • work : Diese Zone ist für Arbeitsmaschinen. Anderen Computern in diesem Netzwerk wird im Allgemeinen vertraut.
  • home : Diese Zone ist für Heimmaschinen. Anderen Computern in diesem Netzwerk wird im Allgemeinen vertraut.

Die Zonen Zuhause, Arbeit und Intern sind in ihrer Funktion sehr ähnlich, aber wenn Sie sie in verschiedene Zonen aufteilen, können Sie eine Zone nach Ihren Wünschen feinabstimmen und einen Satz von Regeln für ein bestimmtes Szenario zusammenfassen.

Ein guter Ausgangspunkt ist herauszufinden, was die Standardzone ist. Dies ist die Zone, zu der Ihre Netzwerkschnittstellen hinzugefügt werden, wenn firewalld installiert wird.

 sudo firewall-cmd --get-default-zone 

Suchen der standardmäßigen Firewalld-Zone

Unsere Standardzone ist die öffentliche Zone. Um die Konfigurationsdetails einer Zone anzuzeigen, verwenden Sie die Option --list-all . Hier wird alles aufgelistet, was für eine Zone hinzugefügt oder aktiviert wurde.

 sudo firewall-cmd --zone=public --list-all 

Auflistung der Details der öffentlichen Zone

Wir können sehen, dass diese Zone mit der Netzwerkverbindung enp0s3 verknüpft ist und Datenverkehr im Zusammenhang mit DHCP, mDNS und SSH zulässt. Da dieser Zone mindestens eine Schnittstelle hinzugefügt wurde, ist diese Zone aktiv.

firewalld können Sie Dienste hinzufügen, von denen Sie Datenverkehr zu einer Zone akzeptieren möchten. Diese Zone lässt dann diese Art von Datenverkehr durch. Dies ist einfacher, als sich daran zu erinnern, dass mDNS beispielsweise Port 5353 und das UDP-Protokoll verwendet, und diese Details manuell zur Zone hinzuzufügen. Obwohl man das auch kann.

Wenn wir den vorherigen Befehl auf einem Laptop mit einer Ethernet-Verbindung und einer Wi-Fi-Karte ausführen, sehen wir etwas Ähnliches, aber mit zwei Schnittstellen.

 sudo firewall-cmd --zone=public --list-all 

Eine Zone mit zwei Schnittstellen darin

Unsere beiden Netzwerkschnittstellen wurden der Standardzone hinzugefügt. Die Zone hat Regeln für dieselben drei Dienste wie das erste Beispiel, aber DHCP und SSH wurden als benannte Dienste hinzugefügt, während mDNS als Port- und Protokollpaarung hinzugefügt wurde.

Um alle Zonen aufzulisten, verwenden Sie die Option --get-zones .

 sudo firewall-cmd --get-zones 

Auflisten aller Firewalld-Zonen

Um die Konfiguration für alle Zonen gleichzeitig anzuzeigen, verwenden Sie die Option --list-all-zones . Sie sollten dies in less .

 sudo firewall-cmd --list-all-zones | weniger 

Auflistung der Details aller Zonen

Dies ist nützlich, da Sie durch die Liste blättern oder die Suchfunktion verwenden können, um nach Portnummern, Protokollen und Diensten zu suchen.

Die Details aller Zonen werden in weniger angezeigt

Auf unserem Laptop werden wir unsere Ethernet-Verbindung von der öffentlichen Zone in die Heimzone verschieben. Wir können das mit den Optionen --zone und --change-interface tun.

 sudo firewall-cmd --zone=home --change-interface=enp3s0 

Hinzufügen einer Netzwerkschnittstelle zur Homezone

Lassen Sie uns einen Blick auf die Heimatzone werfen und sehen, ob unsere Änderung vorgenommen wurde.

 sudo firewall-cmd --zone=home --list-all 

Die Heimatzone mit einer hinzugefügten Netzwerkschnittstelle

Und es hat. Unsere Ethernet-Verbindung wird der Heimatzone hinzugefügt.

Dies ist jedoch keine dauerhafte Änderung. Wir haben die laufende Konfiguration der Firewall geändert, nicht ihre gespeicherte Konfiguration. Wenn wir neu starten oder die Option --reload verwenden, kehren wir zu unseren vorherigen Einstellungen zurück.

Um eine Änderung dauerhaft zu machen, müssen wir die treffend benannte Option --permanent .

Dies bedeutet, dass wir die Firewall für einmalige Anforderungen ändern können, ohne die gespeicherte Konfiguration der Firewall zu ändern. Wir können Änderungen auch testen, bevor wir sie an die Konfiguration senden. Um unsere Änderung dauerhaft zu machen, sollten wir folgendes Format verwenden:

 sudo firewall-cmd --zone=home --change-interface=enp3s0 --permanent

Wenn Sie einige Änderungen vornehmen, aber bei einigen vergessen, --permanent zu verwenden, können Sie die Einstellungen der aktuell laufenden Sitzung der Firewall mit der Option --runtime-to-permanent in die Konfiguration schreiben.

 sudo firewall-cmd --runtime-to-permanent 

Neuladen der Firewall-Konfiguration

VERWANDT: Was ist DHCP (Dynamic Host Configuration Protocol)?

Hinzufügen und Entfernen von Diensten

firewalld kennt viele Dienste. Sie können sie mit der Option --get-services .

 sudo firewall-cmd --get-services 

Auflisten der Dienste, auf die Firewalld nach Namen verweisen kann

Unsere Version von firewalld listete 192 Dienste auf. Um einen Dienst in einer Zone zu aktivieren, verwenden Sie die Option --add-service .

Liste der anerkannten Dienste

Mit der Option --add-service können wir einer Zone einen Dienst hinzufügen.

 sudo firewall-cmd --zone=public --add-service=http 

Hinzufügen des HTTP-Dienstes zu einer Zone

Der Name des Dienstes muss mit seinem Eintrag in der Liste der Dienste von firewalld übereinstimmen.

Um einen Dienst zu entfernen, ersetzen --add-service durch --remove-service

Hinzufügen und Entfernen von Ports und Protokollen

Wenn Sie es vorziehen, auszuwählen, welche Ports und Protokolle hinzugefügt werden, können Sie dies auch tun. Sie müssen die Portnummer und das Protokoll für die Art des Datenverkehrs kennen, den Sie hinzufügen.

Fügen wir der öffentlichen Zone HTTPS-Datenverkehr hinzu. Das verwendet Port 443 und ist eine Form von TCP-Verkehr.

 sudo firewall-cmd --zone=public --add-port=443/tcp 

Hinzufügen einer Port- und Protokollpaarung zu einer Zone

Sie können eine Reihe von Ports angeben, indem Sie den ersten und den letzten Port mit einem Bindestrich „ - “ zwischen ihnen versehen, z. B. „400-450“.

Um einen Port zu entfernen, ersetzen --add-port durch --remove-port .

VERWANDT: Was ist der Unterschied zwischen TCP und UDP?

Verwenden der GUI

Drücken Sie Ihre „Super“-Taste und beginnen Sie, „Firewall“ einzugeben. Sie sehen das Ziegelmauersymbol für die firewall-config .

Klicken Sie auf dieses Symbol, um die Anwendung zu starten.

Das Hinzufügen eines Dienstes zu firewalld über die GUI ist so einfach wie das Auswählen einer Zone aus der Liste der Zonen und das Auswählen des Dienstes aus der Liste der Dienste.

Sie können wählen, ob Sie die laufende Sitzung oder die permanente Konfiguration ändern möchten, indem Sie „Laufzeit“ oder „Permanent“ aus dem Dropdown-Menü „Konfiguration“ auswählen.

Das Konfigurations-Dropdown-Menü

Um Änderungen an der laufenden Sitzung vorzunehmen und die Änderungen erst zu übernehmen, nachdem Sie sie getestet haben, stellen Sie das Menü „Konfiguration“ auf „Laufzeit“. Nehmen Sie Ihre Änderungen vor. Wenn Sie zufrieden sind, dass sie das tun, was Sie wollen, verwenden Sie die Menüoption Optionen > Laufzeit auf permanent.

Um einer Zone einen Port- und Protokolleintrag hinzuzufügen, wählen Sie die Zone aus der Zonenliste aus und klicken Sie auf „Ports“. Durch Klicken auf die Schaltfläche „Hinzufügen“ können Sie die Portnummer angeben und das Protokoll aus einem Menü auswählen.

Hinzufügen einer Port- und Protokollpaarung mithilfe der Firewall-Konfigurations-GUI

Um ein Protokoll hinzuzufügen, klicken Sie auf „Protokolle“, klicken Sie auf die Schaltfläche „Hinzufügen“ und wählen Sie das Protokoll aus dem Popup-Menü aus.

Ein Protokoll in der öffentlichen Zone, in der Firewall-Konfigurations-GUI

Um eine Schnittstelle von einer Zone in eine andere zu verschieben, doppelklicken Sie auf die Schnittstelle in der Liste „Verbindungen“ und wählen Sie dann die Zone aus dem Popup-Menü aus.

Verschieben einer Netzwerkschnittstelle von einer Zone in eine andere in der Firewall-Konfigurations-GUI

Die Spitze des Eisbergs

Mit firewalld können Sie noch viel mehr tun, aber das reicht aus, um Sie zum Laufen zu bringen. Mit den Informationen, die wir Ihnen gegeben haben, können Sie sinnvolle Regeln in Ihren Zonen erstellen.