Erste Schritte mit Firewalld unter Linux
Veröffentlicht: 2022-07-08 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.
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
sudo apt install firewall-config
Auf Fedora ist firewalld
bereits installiert. Wir müssen nur noch firewall-config
hinzufügen.
sudo dnf install firewall-config
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
Wir müssen den firewalld
-Daemon aktivieren, damit er bei jedem Hochfahren des Computers ausgeführt werden kann.
sudo systemctl enable firewalld
Und wir müssen den Daemon starten, damit er jetzt läuft.
sudo systemctl Firewalld starten
Wir können systemctl
verwenden, um zu überprüfen, ob firewalld
gestartet wurde und ohne Probleme läuft:
sudo systemctl status firewalld
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
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
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
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
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
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
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.
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
Lassen Sie uns einen Blick auf die Heimatzone werfen und sehen, ob unsere Änderung vorgenommen wurde.
sudo firewall-cmd --zone=home --list-all
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
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
Unsere Version von firewalld
listete 192 Dienste auf. Um einen Dienst in einer Zone zu aktivieren, verwenden Sie die Option --add-service
.
Mit der Option --add-service
können wir einer Zone einen Dienst hinzufügen.
sudo firewall-cmd --zone=public --add-service=http
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
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.
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.
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.
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.
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.