Kontrolle der Systemzugänglichkeit durch firewalld
Eine Firewall schützt Rechner vor unerwünschten Zugriffen von außen. In Fedora wird sie standardmäßig bei der Installation des Betriebssystems installiert, aktiviert und so konfiguriert, dass ein sicherer Betrieb auch ohne zusätzliche Maßnahmen des Administrators gewährleistet ist. Standardmäßig blockiert sie alle Zugriffe außer SSH.
Wie es funktioniert
Eine Firewall ermöglicht es Benutzern, den eingehenden Netzwerkverkehr auf Host-Rechnern durch die Definition von Firewall-Regeln zu steuern. Diese Regeln dienen dazu, den eingehenden Datenverkehr zu sortieren und ihn entweder zu blockieren oder durchzulassen.
firewalld ist ein Firewall-Dienst (Daemon), der eine dynamische, anpassbare, hostbasierte Firewall mit einer D-Bus-Schnittstelle bereitstellt. Dank seiner Dynamik ermöglicht er das Erstellen, Ändern und Löschen von Regeln, ohne dass der Firewall-Daemon nach jeder Regeländerung neu gestartet werden muss.
firewalld verwendet die Konzepte von Zonen und Diensten, die die Verwaltung des Datenverkehrs vereinfachen.
Zonen sind vordefinierte Regelsätze. Netzwerkschnittstellen und -quellen können einer Zone zugeordnet werden. Der zulässige Datenverkehr hängt vom Netzwerk ab, mit dem Ihr Rechner verbunden ist, und von dessen Sicherheitsstufe. Firewall-Dienste sind vordefinierte Regeln, die alle notwendigen Einstellungen für eingehenden Datenverkehr eines bestimmten Dienstes festlegen und innerhalb einer Zone gelten.
Dienste nutzen einen oder mehrere Ports oder Adressen für die Netzwerkkommunikation. Firewalls filtern die Kommunikation anhand der Ports. Damit ein Dienst Netzwerkverkehr zulässt, müssen seine Ports geöffnet sein. firewalld blockiert jeglichen Datenverkehr auf Ports, die nicht explizit als geöffnet festgelegt sind. Einige Zonen, wie z.B. „Vertrauenswürdige Zonen“ („trusted“), lassen standardmäßig jeglichen Datenverkehr zu.
Weitere Informationen zur Verwendung von firewalld und zur Konfiguration von Zonen und Diensten finden Sie in der firewalld-Dokumentation oder im Fedora wiki:firewalld.
firewalld einrichten
Alle Fedora-Editionen installieren, konfigurieren und aktivieren die Firewall standardmäßig. Es sind keine weiteren Maßnahmen erforderlich. Die einzige Ausnahme bildet die Cloud Edition, die auf dem übergeordneten Cloud-System basiert.
Abweichungen können bei Drittanbieterversionen und -versionen auftreten. In diesem Fall obliegt es dem Administrator, die Firewall zu installieren und anschließend zu aktivieren.
Sie können in einem Terminal folgendermaßen prüfen, ob firewalld eingerichtet ist:
systemctl status firewalld
Es sollte etwa Folgendes angezeigt werden:
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset>
Drop-In: /usr/lib/systemd/system/service.d
└─10-timeout-abort.conf
Active: active (running) since Sat 2023-08-19 19:05:18 CEST; 3 days ago
...
firewalld installieren und aktivieren
Sie erhalten möglicherweise vom obigen Befehl etwa folgende Ausgabe:
Unit firewalld.service could not be found.
In diesem Fall müssen Sie es installieren. Führen Sie in der Befehlszeile Folgendes aus:
$ sudo dnf install firewalld
$ sudo systemctl unmask firewalld
$ sudo systemctl start firewalld
$ sudo systemctl enable firewalld
Diese Abfolge installiert und startet firewalld und gewährleistet einen automatischen Neustart nach dem nächsten Systemstart.
Anpassung der firewalld-Operationen während der Systemwartung
Manchmal muss ein Systemadministrator firewalld während Systemwartungsarbeiten stoppen oder neu starten.
$ sudo systemctl stop firewalld
$ sudo systemctl disable firewalld
$ sudo systemctl start firewalld
$ sudo systemctl enable firewalld
$ sudo systemctl mask firewalld
$ sudo systemctl unmask firewalld
Installation des GUI-Konfigurationstools firewall-config
Um das GUI-Konfigurationswerkzeug firewall-config zu verwenden, installieren Sie das Paket firewall-config als root:
$ sudo dnf install firewall-config
Alternativ können Sie in GNOME die Taste Super-Taste drücken und Software eingeben, um die Anwendung [application*]Softwarequellen* zu öffnen. Geben Sie firewall in das Suchfeld ein, das nach Klicken auf den Suchen-Knopf oben rechts erscheint. Wählen Sie den Eintrag Firewall aus den Suchergebnissen aus und klicken Sie auf Installieren.
Um firewall-config auszuführen, verwenden Sie entweder den firewall-config-Befehl oder drücken Sie die Super-Taste, um die Aktivitätenübersicht aufzurufen, geben Sie firewall ein und drücken Sie die Eingabetaste.
firewalld verwalten
Den aktuellen Status von firewalld ansehen
Der Firewall-Dienst firewalld ist standardmäßig auf dem System installiert. Verwenden Sie die Befehlszeilenschnittstelle firewalld, um zu überprüfen, ob der Dienst ausgeführt wird.
$ sudo firewall-cmd --state
Für weitere Informationen zum Dienststatus verwenden Sie den systemctl-Befehl:
$ sudo systemctl status firewalld
firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor pr
Active: active (running) since Mon 2017-12-18 16:05:15 CET; 50min ago
Docs: man:firewalld(1)
Main PID: 705 (firewalld)
Tasks: 2 (limit: 4915)
CGroup: /system.slice/firewalld.service
└─705 /usr/bin/python3 -Es /usr/sbin/firewalld --nofork --nopid
Darüber hinaus ist es wichtig zu wissen, wie firewalld konfiguriert ist und welche Regeln gelten, bevor Sie die Einstellungen bearbeiten. Informationen zum Anzeigen der Firewall-Einstellungen finden Sie unter Aktuelle firewalld-Einstellungen anzeigen
Aktuelle firewalld-Einstellungen anzeigen
Erlaubte Dienste in einer grafischen Oberfläche anzeigen
Um die Liste der Dienste mit dem grafischen Werkzeug firewall-config anzuzeigen, drücken Sie die Super-Taste, um die Aktivitätenübersicht aufzurufen, geben Sie den Befehl firewall ein und drücken Sie die Eingabetaste. Das Werkzeug firewall-config wird angezeigt. Die Liste der Dienste finden Sie nun im Tab Dienste.
Alternativ können Sie das grafische Firewall-Konfigurationswerkzeug über die Befehlszeile mit folgendem Befehl starten:
$ firewall-config
Das Fenster Firewall-Konfiguration öffnet sich. Beachten Sie, dass dieser Befehl als normaler Benutzer ausgeführt werden kann, Sie aber gelegentlich zur Eingabe eines Administratorkennworts aufgefordert werden.
Anzeige der firewalld-Einstellungen über die Befehlszeile
Mit dem Befehlszeilenclient lassen sich verschiedene Ansichten der aktuellen Firewall-Einstellungen abrufen. Die Option --list-all zeigt eine vollständige Übersicht der firewalld-Einstellungen an.
firewalld verwendet Zonen zur Verwaltung des Datenverkehrs. Wenn keine Zone durch die Option --zone angegeben wird, wird der Befehl in der Standardzone ausgeführt, die der aktiven Netzwerkschnittstelle und Verbindung zugewiesen ist.
Auflisten aller relevanten Informationen für die Standardzone:
$ firewall-cmd --list-all public target: default icmp-block-inversion: no interfaces: sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
|
Um die Zone anzugeben, für die die Einstellungen angezeigt werden sollen, fügen Sie das Argument ~]# firewall-cmd --list-all --zone=home home target: default icmp-block-inversion: no interfaces: sources: services: ssh mdns samba-client dhcpv6-client ... [output truncated] |
Um die Einstellungen für bestimmte Informationen, wie z. B. Dienste oder Ports, anzuzeigen, verwenden Sie eine spezifische Option. Lesen Sie die Handbuchseiten zu firewalld oder rufen Sie eine Liste der Optionen mit dem Befehl help ab:
$ firewall-cmd --help Usage: firewall-cmd [OPTIONS...] General Options -h, --help Prints a short help text and exists -V, --version Print the version string of firewalld -q, --quiet Do not print status messages Status Options --state Return and print firewalld state --reload Reload firewall and keep state information ... [output truncated]
Um beispielsweise zu sehen, welche Dienste in der aktuellen Zone zulässig sind:
$ firewall-cmd --list-services samba-client ssh dhcpv6-client
Die Auflistung der Einstellungen für einen bestimmten Teilbereich mithilfe des Befehlszeilenwerkzeugs kann mitunter schwer verständlich sein. Beispielsweise ist der SSH-Dienst aktiviert und firewalld öffnet den benötigten Port (22) für diesen Dienst. Bei der späteren Auflistung der erlaubten Dienste wird der SSH-Dienst zwar angezeigt, die Liste der offenen Ports jedoch nicht. Daher empfiehlt es sich, die Option --list-all zu verwenden, um vollständige Informationen zu erhalten.
Laufzeit- und permanente Einstellungen
Alle Änderungen, die während des Betriebs von firewalld vorgenommen werden, gehen beim Neustart von firewalld verloren. Nach einem Neustart von firewalld werden die Einstellungen auf ihre ursprünglichen Werte zurückgesetzt.
Diese Änderungen sollen im Laufzeitmodus vorgenommen werden.
Um die Änderungen auch nach einem Neustart beizubehalten, wenden Sie sie erneut mit der Option --permanent an. Alternativ können Sie die Änderungen auch dann beibehalten, wenn firewalld ausgeführt wird, indem Sie die Option --runtime-to-permanent firewall-cmd verwenden.
Wenn Sie Änderungen vornehmen, während firewalld läuft und dabei nur die Option --permanent verwenden, werden diese erst nach einem Neustart von firewalld wirksam. Ein Neustart von firewalld unterbricht jedoch kurzzeitig den Netzwerkverkehr und kann so zu Systemstörungen führen.
Einstellungen zur Laufzeit ändern und permanente Konfiguration über die Befehlszeile festlegen
Über die Befehlszeilenschnittstelle (CLI) können Sie entweder den Laufzeit- oder den permanenten Modus ändern. Um die Firewall-Einstellungen im permanenten Modus zu ändern, verwenden Sie die Option --permanent mit dem Befehl firewall-cmd.
$ sudo firewall-cmd --permanent <weitere Optionen>
Ohne diese Option ändert der Befehl den Laufzeitmodus. Um die Einstellungen in beiden Modi zu ändern, können Sie zwei Methoden verwenden:
-
Ändern Sie die Laufzeiteinstellungen und speichern Sie sie anschließend dauerhaft wie folgt:
-
Ändern Sie die Laufzeiteinstellungen:
firewall-cmd <weitere Optionen> -
Verwenden Sie
--runtime-to-permanent, um die Änderungen dauerhaft zu speichern.firewall-cmd --runtime-to-permanent
-
-
Legen Sie die permanenten Einstellungen fest und laden Sie die Einstellungen im Laufzeitmodus neu:
-
Die Änderungen dauerhaft speichern:
firewall-cmd --permanent <weitere Optionen> -
Einstellungen neu laden:
firewall-cmd --reload
-
Die erste Methode ermöglicht es Ihnen, die Einstellungen zu testen, bevor Sie sie dauerhaft anwenden.
|
Eine falsche Einstellung kann dazu führen, dass sich ein Benutzer selbst aussperrt. Um dies zu verhindern, verwenden Sie die Option Um beispielsweise den SSH-Dienst für 15 Minuten hinzuzufügen, verwenden Sie diesen Befehl: $ sudo firewall-cmd --add-service=ssh --timeout 15m Der SSH-Dienst ist verfügbar, bis der Zugriff nach 15 Minuten unterbunden wird. |
Ports mit firewalld kontrollieren
Was sind Ports?
Ports sind logische Geräte, die es einem Betriebssystem ermöglichen, Netzwerkverkehr zu empfangen, zu unterscheiden und entsprechend an die Systemdienste weiterzuleiten. Sie werden üblicherweise durch einen Daemon repräsentiert, der den Port überwacht und somit auf eingehenden Datenverkehr wartet.
Normalerweise lauschen Systemdienste auf Standardports, die für sie reserviert sind. Der httpd-Daemon beispielsweise lauscht auf Port 80. Systemadministratoren können Daemons jedoch so konfigurieren, dass sie auf anderen Ports lauschen, um die Sicherheit zu erhöhen.
Einen Port öffnen
Durch offene Ports ist das System von außen zugänglich, was ein Sicherheitsrisiko darstellt. Halten Sie Ports daher generell geschlossen und öffnen Sie sie nur, wenn sie für bestimmte Dienste erforderlich sind.
-
Eine Liste der in der aktuellen Zone zulässigen Ports abrufen:
$ firewall-cmd --list-ports
-
Einen Port zu den zulässigen Ports hinzufügen, um ihn für eingehenden Datenverkehr zu öffnen:
$ sudo firewall-cmd --add-port=Portnummer/Port-Typ
-
Die neuen Einstellungen dauerhaft speichern:
$ sudo firewall-cmd --runtime-to-permanent
Die Port-Typen sind entweder tcp, udp, sctp oder dccp. Der Typ muss der Art der Netzwerkkommunikation entsprechen.
Einen Port schließen
Wenn ein offener Port nicht mehr benötigt wird, schließen Sie ihn in firewalld. Es wird dringend empfohlen, alle geöffneten Ports zu schließen, sobald sie nicht mehr verwendet werden, da ein offener Port ein Sicherheitsrisiko darstellt.
Um einen Port zu schließen, entfernen Sie ihn aus der Liste der zulässigen Ports:
-
Alle zulässigen Ports auflisten:
$ firewall-cmd --list-ports
Dieser Befehl listet lediglich die als Ports geöffneten Ports auf. Ports, die als Dienste geöffnet sind, werden nicht angezeigt. Verwenden Sie daher besser die Option
--list-allanstelle von--list-ports. -
Den Port aus der Liste der zulässigen Ports entfernen, um ihn für eingehenden Datenverkehr zu sperren:
$ sudo firewall-cmd --remove-port=Portnummer/Port-Typ
-
Die neuen Einstellungen dauerhaft speichern:
$ sudo firewall-cmd --runtime-to-permanent
Want to help? Learn how to contribute to Fedora Docs ›