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 wieHTTP
,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.
# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: bridge0_to_LAN bridge1_to_RP enp1s0f0 enp1s0f1 enp1s0f2 enp1s0f3 storage-bond0
sources:
services: cockpit dhcpv6-client http https plex ssh
ports: 6060/tcp 6062/tcp 6063/tcp 6064/tcp 6065/tcp 8080/tcp 6061/tcp 7020/tcp 7015/tcp 7030/tcp 7040/tcp 6066/tcp 5601/tcp 9200/tcp 19999/tcp 32401/tcp 5044/tcp 7041/tcp 3000/tcp 6067/tcp 81/tcp 6070/tcp 8443/tcp 9300/tcp 6071/tcp 6622/tcp 2342/tcp 6072/tcp 7031/tcp 7042/tcp 3005/tcp 7043/tcp 7029/tcp 9003/tcp 8000/tcp
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
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:
<?xml version="1.0" encoding="utf-8"?>
<service version="1.0">
<short>plex</short>
<description>Needed Ports for Plex Server</description>
<port port="1900" protocol="udp"/>
<port port="5353" protocol="udp"/>
<port port="8324" protocol="tcp"/>
<port port="32400" protocol="tcp"/>
<port port="32410" protocol="udp"/>
<port port="32412" protocol="udp"/>
<port port="32413" protocol="udp"/>
<port port="32414" protocol="udp"/>
<port port="32469" protocol="tcp"/>
</service>
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.