von Michael Reber

Firewalld: Dynamische Firewall-Verwaltung unter Rocky Linux

IT-Security, Engineering, Linux, Network

Firewalld ist ein Firewall-Dienst, der auf modernen Linux-Distributionen wie Rocky Linux oder Red Hat Enterprise zum Einsatz kommt. Firewalld bietet eine flexible Verwaltung via Zonen und Service-Definitions, ohne dabei zum traditionellen und manuellen Erstellen von langen iptable rules gezwungen zu sein. Firewalld abstrahiert automatisch die nötigen iptable ruels und setzt diese bequem via Firewalld service auf dem jeweiligen System (netfilter Kernel-Modul). Der Fokus liegt dabei auf einer einfachen Verwaltung und einer schnellen Anpassungsfähigkeit.

Basiswissen und Konzept von firewalld

  • Zonen: zones definieren das Vertrauensniveau der am Server angeschlossenen Netzwerkverbindungen / Schnittstellen. Sie ermöglichen eine differenzierte Behandlung von eingehendem und ausgehendem Verkehr, basierend auf dem zugewiesenen Sicherheitsniveau.
    Die Public Zone gilt dabei als besonders restriktiv und wurde für nicht vertrauenswürdige Netzwerke vorgesehen.
  • Services: Die services in Firewalld repräsentieren vordefinierte Regelsätze, um den Zugriff auf bestimmte Netzwerkdienste / Ports einheitlich zu steuern. Dies umfasst häufig genutzte Protokolle und Anwendungsports wie HTTP, SSH, usw.
Generelle Nutzung der Public Zone für erhöhte Sicherheit
Wie bereits erwähnt, ist die Public Zone für den Einsatz in unsicheren oder öffentlichen Netzwerken vorgesehen und bietet die restriktivste Konfiguration. Dies minimiert das Risiko unerwünschter Zugriffe und ist besonders wichtig für Schnittstellen, die direkt mit dem Internet verbunden sind. Die Zuweisung einer Schnittstelle zur Public Zone und die anschliessend sorgfältige Konfiguration der erlaubten Services und Ports ist generell empfohlen – auch in scheinbar sicheren, internen Servernetzwerken (Zero-Trust-Ansatz).

Verwaltung von Zonen

  • Aktive Zonen auflisten: # firewall-cmd --list-all-zones zeigt alle konfigurierten Zonen und deren Einstellungen an.
  • Wechsel der Zone für eine Schnittstelle: Mit # firewall-cmd --zone=public --change-interface=eth0 kann die Netzwerkschnittstelle eth0 der Public Zone zugewiesen werden.

Verwalten von Services

  • Einen Service (Dienst) hinzufügen: # firewall-cmd --zone=public --add-service=http erlaubt HTTP-Verkehr (Port 80/TCP) in der Public Zone. Für persistente Änderungen wird zusätzlich dem Kommando «--permanent» angehängt.
  • Service entfernen: # firewall-cmd --zone=public --remove-service=http entfernt die Freigabe wieder. Persistente Änderungen erfordern auch hier das «--permanent» Flag.
  • Anzeigen aller aktuell erlaubten Services: # firewall-cmd --list-services

Hinzufügen und Entfernen von neuen Ports

  • Custom Port hinzufügen: # firewall-cmd --zone=public --add-port=5000/tcp öffnet TCP-Port 5000 in der Public Zone.
    Für eine dauerhafte Änderung auch hier «--permanent» nicht vergessen.
  • Custom Port schliessen: # firewall-cmd --zone=public --remove-port=5000/tcp schliesst den Port wieder.
  • Anzeigen aller erlaubten Ports: # firewall-cmd --list-ports
Pro-Tipp: Um alle aktuell erlaubten Services oder Ports anzuzeigen, wird am einfachsten # firewall-cmd --list-all verwendet.

Erstellen benutzerdefinierter Services

Wenn Sie beispielsweise Ihre eigene Software, welche mehrere Ports über verschiedene Protokolle wie TCP oder UDP benötigt, deployen, macht es Sinn, dass auch sämtliche Ports, welche zu dem besagten Service gehören, einheitlich auf dem Linux-System definiert und gepflegt werden können. Das Vorgehen dazu ist ziemlich simpel:

  • Neuen Service definieren: Unter «/etc/firewalld/services/» wird eine neue XML-Datei für den zu definierenden Dienst angelegt.

Ein Beispiel einer solchen Definition könnte so aussehen:

Nach dem Anlegen einer neuen Service-Definition, in unserem Fall «plex», unter dem genannten Pfad, muss jeweils Firewalld neu geladen werden, bevor der neu definierte Service anschliessend mit
# firewall-cmd --zone=public --add-service=plex aktiviert werden kann.

  • Service-Dateien neu einlesen: Mit # firewall-cmd --reload werden alle Änderungen neu von Firewalld eingelesen und die neuen Services können ab dann der Zone hinzugefügt werden.

Wichtige Details zu den persistenten Regeln

Persistente Regeln werden beim Definieren von Firewalld ausschliesslich in die Konfiguration, beim Beispiel der Public-Zone unter «/etc/firewalld/zones/public.xml«, geschrieben. Damit können diese bei einem Neustart des Systems automatisch geladen werden. Wichtig: Das heisst aber, dass neu definierte persistente Regeln nicht sofort angewendet werden. Daher ist jeweils die Definition in der Runtime, also entweder nochmals ohne «--persistant» nötig, oder die einfachere Variante, durch neu laden der Firewalld-Konfiguration mit # firewall-cmd --reload.
Dies stellt sicher, dass alle Änderungen der persistant-Konfiguration aktiv (reloaded) werden und kann zusätzlich als Test verwendet werden, um zu schauen, ob nach einem Reboot immer noch alle Verbindungen so funktionieren, wie sie sollten.

Zusammenfassung

Firewalld bietet eine fortschrittliche und skalierbare Lösung für die Firewall-Verwaltung unter Rocky Linux oder Red Hat basierten Systemen. Durch den Einsatz von Zonen und Services können Administratoren effektiv den Netzwerkverkehr planen, steuern und generell die Transparenz sowie Sicherheit erhöhen. Die Beachtung von Best Practices, wie die Nutzung der Public Zone nicht nur für unsichere Netzwerke, sowie das Testing von persistenten Änderungen oder restriktive Rules, sind wichtige erste Schritte zu einer sicheren IT-Landschaft in Ihrer Unternehmung.

Foto des Autors

Michael Reber

Jahrelange Erfahrung in Linux, Security, SIEM und Private Cloud

Hinterlassen Sie einen Kommentar

4 × fünf =

de_CH