← Alle Blogartikel
Infrastruktur

firewalld: Linux-Server mit Zonen und Diensten absichern

Mit firewalld lassen sich erlaubte Netzwerkdienste gezielt und dauerhaft verwalten. Ein sicherer Einstieg für Fedora und RHEL.

Was firewalld macht

firewalld verwaltet die Host-Firewall über Zonen und Dienste. Eine Zone bildet ein Vertrauensniveau für Netzwerkverbindungen ab; Dienste sind lesbare Regelsets, etwa für SSH oder HTTPS. Änderungen können zunächst zur Laufzeit getestet und anschließend dauerhaft gespeichert werden.

Die Beispiele unten richten sich an Fedora, RHEL und kompatible Systeme mit DNF und systemd. Auf Ubuntu oder Debian können Paketnamen, Standard-Firewall und Integration abweichen. Betreiben Sie nicht gleichzeitig mehrere Firewall-Verwalter, ohne genau zu wissen, wer die Regeln kontrolliert.

Installation und sicherer Start

Wenn Sie sich per SSH mit dem Server verbinden, öffnen Sie zuerst eine zweite Sitzung oder stellen Sie einen Konsolenzugang sicher. Eine falsch gesetzte Regel kann Ihre Fernverbindung abschneiden.

sudo dnf install firewalld
sudo systemctl enable --now firewalld
sudo firewall-cmd --state
sudo firewall-cmd --get-active-zones

Prüfen Sie die aktive Zone und das tatsächlich verwendete SSH-Port-/Dienstprofil. Verwenden Sie in den folgenden Befehlen die aktive Zone statt blind public zu übernehmen.

SSH und Webzugriff gezielt erlauben

Für ein System, auf dem SSH und HTTPS gebraucht werden, testen Sie die Laufzeitregeln zunächst ohne --permanent:

sudo firewall-cmd --zone=public --add-service=ssh
sudo firewall-cmd --zone=public --add-service=https
sudo firewall-cmd --zone=public --list-services

Falls der Server tatsächlich HTTP ausliefern soll, fügen Sie http hinzu. Ist SSH auf einem anderen Port konfiguriert, müssen Sie die passende Service- oder Port-Regel verwenden. Prüfen Sie nach der Änderung, dass eine neue SSH-Verbindung weiterhin möglich ist.

Erst wenn die Regeln stimmen, übernehmen Sie sie dauerhaft:

sudo firewall-cmd --zone=public --add-service=ssh --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list-all

Ersetzen Sie public gegebenenfalls durch die tatsächlich aktive Zone. Die offizielle firewalld-Dokumentation unterscheidet ausdrücklich zwischen Laufzeit- und permanenter Konfiguration.

Was nicht freigegeben werden sollte

Öffnen Sie nur Dienste, die von außen benötigt werden. Datenbanken, interne Admin-Dashboards und Monitoring-Oberflächen gehören in der Regel nicht in eine allgemein erreichbare Zone. Bei Bedarf begrenzen Sie den Zugriff zusätzlich auf definierte Quellnetze oder VPNs.

firewalld ersetzt keine Firewall-Regeln beim Cloud-Anbieter oder Router. Prüfen Sie die gesamte Strecke: Host-Firewall, Cloud-Security-Group, Load Balancer und tatsächliche Bind-Adresse des Dienstes. Nach einer Änderung helfen firewall-cmd --list-all und ein Verbindungstest von einem separaten System, die effektive Regel zu verifizieren.

Quellen