documentation.suse.com / Einführung in firewalld
SUSE Linux Micro 6.2

Einführung in firewalld

Veröffentlicht: 04.11.2025
WAS?

Erfahren Sie mehr über firewalld, ein wichtiges Werkzeug zum Schützen von Linux-Servern und -Diensten. Es handelt sich dabei um den standardmäßigen und primären Netzwerkverteidigungsmechanismus bei vielen modernen Distributionen. Die Funktionen der intuitiven zonenbasierten Verwaltung und der dynamischen Konfiguration ermöglichen eine präzise Steuerung des Netzwerkverkehrs ohne Dienstunterbrechung.

WARUM?

firewalld ist unerlässlich, da es eine moderne, dynamische und benutzerfreundliche Möglichkeit zum Verwalten der Netzwerksicherheit auf Linux-Systemen bietet, indem komplexe Firewall-Regeln in intuitive Zonen und Dienste abstrahiert werden.

AUFWAND

Es dauert bis zu 30 Minuten, diesen Artikel zu lesen.

ZIEL

Die Sicherheit eines Linux-Systems effektiv verwalten und erhöhen.

ANFORDERUNGEN
  • sudo- oder root-Rechte, da firewalld-Befehle – insbesondere die, die dauerhafte Änderungen an den Firewall-Regeln vornehmen – erhöhte Rechte erfordern.

  • firewalld ist die Standard-Firewall bei vielen modernen Linux-Distributionen. Wenn sie auf Ihrem System nicht vorinstalliert ist, müssen Sie das firewalld-Paket installieren.

  • Grundlegende Kenntnisse hinsichtlich des Linux-Terminals sind unerlässlich.

1 Informationen zu firewalld

firewalld ist ein dynamischer Firewall-Verwaltungsdienst, der eine flexible und effiziente Möglichkeit zum Steuern des Netzwerkverkehrs auf Linux-Systemen bietet. Er ermöglicht Änderungen, ohne vorhandene Verbindungen zu unterbrechen. Die Verwendung von firewalld bietet folgende Vorteile:

  • Dynamische Konfiguration: Wenden Sie Änderungen sofort an, ohne vorhandene Verbindungen zu unterbrechen.

  • Benutzerfreundliche Oberfläche: Zonen und Dienste vereinfachen komplexe Firewall-Regeln.

  • Abstraktion: Es besteht keine Notwendigkeit, nftables-Regeln für häufige Szenarien direkt zu ändern.

  • Dauerhafte Konfiguration: Einfache Verwaltung von Regeln, die bei Neustarts beibehalten werden.

  • Dauerhafte Konfiguration: Standardmäßig wird von firewalld ein deny-all-Prinzip verwendet, indem der gesamte eingehende Datenverkehr blockiert wird, sofern er nicht ausdrücklich zugelassen wurde.

1.1 firewalld-Zonen

Eine Firewall-Zone ist ein vordefinierter Satz aus Regeln, die vorgeben, wie eingehender und ausgehender Netzwerkverkehr für eine bestimmte Netzwerkschnittstelle oder Quell-IP-Adresse behandelt wird. Jede Zone stellt eine andere Vertrauensstufe für das Netzwerk dar, dem sie zugeordnet ist. Sie können je nach Ursprung der Netzwerkverbindung unterschiedliche Sicherheitsrichtlinien anwenden.

Zonen sind wie Sicherheitsprofile. Sie möchten beispielsweise für eine öffentliche WLAN-Verbindung und Ihr geschütztes Heimnetzwerk unterschiedliche Firewall-Regeln anwenden. Mithilfe von firewalld-Zonen können Sie diese unterschiedlichen Regelsätze definieren und entsprechend anwenden. Eine Netzwerkverbindung unterliegt den Regeln von nur einer firewalld-Zone. Eine firewalld-Zone kann viele Netzwerkschnittstellen oder Quell-IP-Adressen haben.

Im Verzeichnis /usr/lib/firewalld/zones/ sind die vordefinierten Zonen gespeichert. Beispiel:

> /usr/lib/firewalld/zones ls
block.xml  dmz.xml  docker.xml  drop.xml  external.xml  home.xml  internal.xml  nm-shared.xml  public.xml  trusted.xml  work.xml

Einige der Standardeinstellungen der vordefinierten Zonen lauten wie folgt:

drop
  • Vertrauensstufe: Absolut nicht vertrauenswürdig.

  • Verhalten: Alle eingehenden Netzwerkpakete werden ohne Antwort entfernt. Es sind nur ausgehende Verbindungen zulässig, die vom System initiiert wurden. Dies ermöglicht einen heimlichen Modus, in dem das System für externe Angreifer nicht vorhanden zu sein scheint.

  • Anwendungsfall: Wird für maximale Tarnung und Sicherheit verwendet und ignoriert unerwünschten Datenverkehr vollständig. Eignet sich als strenge Standardeinstellung für einen Server, der niemals eingehende Verbindungen annehmen soll.

block
  • Vertrauensstufe: Sehr niedrig.

  • Verhalten: Alle eingehenden Netzwerkverbindungen werden mit einer Meldung icmp-host-prohibited für IPv4 und einer Meldung icmp6-adm-prohibited für IPv6 abgelehnt. Dadurch wird dem Absender mitgeteilt, dass seine Verbindung ausdrücklich abgelehnt wurde. Es sind nur ausgehende Verbindungen möglich, die vom System initiiert wurden.

  • Anwendungsfall: Wird angewendet, wenn Sie Absendern ausdrücklich signalisieren möchten, dass ihre Verbindungsversuche blockiert werden.

public
  • Vertrauensstufe: Nicht vertrauenswürdig oder öffentlich.

  • Verhalten: Stellt öffentliche, nicht vertrauenswürdige Netzwerke dar, in denen Sie anderen Systemen nicht vertrauen. Standardmäßig werden nur ausgewählte eingehende Verbindungen akzeptiert, z. B. SSH-, DHCPv6-Client usw.

  • Anwendungsfall: Allgemeine Standardzone für Schnittstellen, die direkt mit dem Internet verbunden sind, beispielsweise die WAN-Schnittstelle Ihres Routers. Dazu gehören auch Verbindungen mit einem Netzwerk, bei dem Sie keine Kontrolle über andere Geräte haben.

external
  • Vertrauensstufe: Extern mit Masquerading.

  • Verhalten: Ist für externe Netzwerke vorgesehen, wenn die Firewall als Gateway oder Router fungiert. In der Regel ist das NAT-Masquerading standardmäßig aktiviert. Es werden nur ausgewählte eingehende Verbindungen akzeptiert. Dabei wird angenommen, dass Sie anderen Systemen in diesem Netzwerk nicht vertrauen.

  • Anwendungsfall: Wird verwendet, wenn Ihr Linux-Computer als Router fungiert und ein internes privates Netzwerk mit dem öffentlichen Internet verbindet. Die externe Schnittstelle wird in dieser Zone platziert, um die interne Netzwerktopologie zu verbergen und internen Clients gleichzeitig den Zugriff auf externe Ressourcen wie das Internet zu ermöglichen.

dmz (Demilitarized Zone)
  • Vertrauensstufe: Begrenzter öffentlicher Zugriff.

  • Verhalten: Für Systeme in einer DMZ-Zone, die öffentlich aufrufbar sind, aber nur begrenzten Zugriff auf das interne Netzwerk haben. Es werden nur ausgewählte eingehende Verbindungen akzeptiert. Die Standardeinstellung umfasst in der Regel SSH und andere Dienste, die Sie bereitstellen.

  • Anwendungsfall: Eignet sich für öffentlich aufrufbare Server wie Web-, E-Mail- und DNS-Server. Diese Server sind dem Internet absichtlich ausgesetzt, aber von Ihren internen, vertrauenswürdigeren Netzwerken isoliert. Nützlich, wenn Sie Dienste hosten möchten, die über das Internet aufrufbar sein müssen, und gleichzeitig das Risiko für Ihre interne Kerninfrastruktur minimieren möchten.

work
  • Vertrauensstufe: Überwiegend vertrauenswürdig (Arbeitsumgebung).

  • Verhalten: In einer Arbeitsumgebung vertrauen Sie anderen Computern im Netzwerk in der Regel. Lässt ausgewählte eingehende Verbindungen zu, die in einer Arbeitsumgebung üblich sind, z. B. SSH- und DHCPv6-Client.

  • Anwendungsfall: Eignet sich für Büronetzwerke und Systeme in einem Firmen-LAN.

home
  • Vertrauensstufe: Überwiegend vertrauenswürdig (Heimumgebung).

  • Verhalten: In einer Heimumgebung vertrauen Sie den anderen Systemen im Netzwerk überwiegend. Ermöglicht mehr Dienste als öffentliche oder externe Zonen, häufig einschließlich gängiger Heimnetzwerkdienste wie Dateifreigabe, Medienserver und Drucker sowie SSH- und DHCPv6-Client.

  • Anwendungsfall: Eignet sich am besten für Heimnetzwerke und kleine Home-Office-Einrichtungen.

trusted
  • Vertrauensstufe: Am höchsten.

  • Verhalten: Alle Netzwerkverbindungen werden ohne Filterung akzeptiert. Für Verbindungen, die dieser Zone zugewiesen sind, wurde keine Firewall implementiert.

  • Anwendungsfall: Reserviert für Verbindungen mit höchster Vertrauensstufe.

1.2 firewalld-Richtlinien und -Regeln

firewalld-Richtlinien bieten im Vergleich zu traditionellen Zonen eine fortschrittlichere und flexiblere Möglichkeit zum Verwalten des Netzwerkverkehrs. Sie ermöglichen Ihnen die Definition umfassender Regeln, die Quelle und Ziel des Datenverkehrs, Dienste, Ports und Aktionen wie das Akzeptieren, Ablehnen und Löschen festlegen. Diese Richtlinien sind nützlich, um komplexes Routing und Portweiterleitungen einzurichten oder isolierte Netzwerksegmente innerhalb eines einzelnen Hosts zu erstellen.

firewalld-Richtlinien nutzen Zonen, um Regelsätze zu definieren. Sie wenden Regeln statusbezogen und in eine Richtung an, was bedeutet, dass Sie den Datenverkehrsfluss in eine Richtung definieren und firewalld den Rückpfad implizit zulässt. Diese Richtlinien verknüpfen eine Eingangszone (bei der der Datenverkehr eingeht) mit einer Ausgangszone (bei der der Datenverkehr ausgeht). Dadurch wird der spezifische Pfad und die Richtung definiert, für den oder die die Regeln einer Richtlinie gelten. Sie können die Richtlinien beispielsweise wie folgt anzeigen:

> /usr/lib/firewalld/policies ls
allow-host-ipv6.xml

Mithilfe von Firewall-Regeln können Sie den Netzwerkverkehr präzise steuern und ihn zulassen oder blockieren, um Ihr System vor Sicherheitsbedrohungen zu schützen. Firewall-Regeln definieren bestimmte Kriterien anhand verschiedener Attribute wie Quell- und Ziel-IP-Adressen, Ports und Netzwerkschnittstellen. firewalld unterteilt Firewall-Regeln in Zonen und Richtlinien. Jede Zone in firewalld verfügt über einen eindeutigen Regelsatz, der die Datenverkehrsberechtigungen für die zugehörigen Netzwerkschnittstellen vorgibt.

1.3 Dienste und Ports

Dienste werden empfohlen, wenn ein vordefinierter Dienst verfügbar ist. Anstatt sich beispielsweise zu merken, dass HTTP den TCP-Port 80 verwendet, können Sie einfach den http-Dienst hinzufügen. Dies ist weniger fehleranfällig und einfacher zu verwalten. Verwenden Sie Ports, wenn ein Dienst nicht vordefiniert ist oder wenn Sie einen benutzerdefinierten Port für einen Dienst verwenden. Sie können die aktiven Dienste und Ports für die Standardzonen wie folgt anzeigen:

> sudo firewall-cmd --list-services
> sudo firewall-cmd --list-ports

2 Verwalten von Firewall-Regeln und -Zonen

Sie können firewalld-Zonen und ihre Regeln mit der grafischen Weboberfläche Cockpit oder dem Dienstprogramm firewall-cmd für die Befehlszeilensteuerung konfigurieren.

2.1 Verwalten von Firewall-Regeln und -Zonen mithilfe des Dienstprogramms firewalld-cmd

Sie können die Befehlszeilenschnittstelle verwenden, um firewalld-Zonen zu verwalten.

2.1.1 Hinzufügen von firewalld-Zonen

So fügen Sie eine neue firewalld-Zone hinzu:

  1. Erstellen Sie eine neue Zone. Beispiel:

    > sudo firewall-cmd --permanent --new-zone=test
  2. Legen Sie die Vertrauensstufe der Zone fest, die das Standardverhalten definiert:

    > sudo firewall-cmd --permanent --zone=example --set-target=trusted
  3. Laden Sie den firewalld-Dienst neu, um die neue Konfiguration anzuwenden:

    > sudo firewall-cmd --reload

2.1.2 Hinzufügen eines Diensts zu einer Zone

So fügen Sie einen Dienst einer Zone hinzu:

  1. Listen Sie alle Dienste auf, um zu überprüfen, ob Ihr Dienst bereits vordefiniert ist:

    > sudo firewall-cmd --get-services
          0-AD RH-Satellite-6 RH-Satellite-6-capsule afp alvr amanda-client amanda-k5-client amqp amqps anno-1602
          anno-1800 apcupsd audit ausweisapp2 bacula bacula-client bareos-director bareos-filedaemon bareos-storage bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-exporter ceph-mon cfengine checkmk-agent civilization-iv civilization-v cockpit collectd condor-collector cratedb ctdb dds dds-multicast dds-unicast dhcp dhcpv6 dhcpv6-client distcc dns dns-over-quic dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server factorio finger foreman foreman-proxy freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp galera
          ganglia-client ganglia-master git gpsd grafana gre http http3 https ident imap imaps ipfs ipp ipp-client ipsec irc ircs
          [...]
  2. Sie können einen Dienst entweder vorübergehend für die Laufzeitsitzung oder dauerhaft hinzufügen. Beispiel:

    > sudo  firewall-cmd --zone=public --add-service=http
    > sudo  firewall-cmd --zone=public --permanent --add-service=http

    Das --permanent-Flag stellt sicher, dass die Änderung bei allen Neustarts erhalten bleibt.

  3. Laden Sie den firewalld-Dienst neu, um die neue Konfiguration anzuwenden:

    > sudo firewall-cmd --reload
  4. Überprüfen Sie die Ergebnisse:

    > sudo firewall-cmd --zone=public --list-services

2.1.3 Hinzufügen eines Ports zu einer Zone

Wenn Ihre Anwendung keinen vordefinierten Dienst hat, können Sie einen bestimmten Port oder einen Portbereich öffnen.

  1. Sie können einen Port entweder vorübergehend für die Laufzeitsitzung oder dauerhaft hinzufügen. Beispiel:

    > sudo  firewall-cmd --zone=public --add-port=8080/tcp
    > sudo  firewall-cmd --zone=public --permanent --add-port=8080/tcp

    Das --permanent-Flag stellt sicher, dass die Änderung bei allen Neustarts erhalten bleibt.

  2. Laden Sie den firewalld-Dienst neu, um die neue Konfiguration anzuwenden:

    > sudo firewall-cmd --reload
  3. Überprüfen Sie die Ergebnisse:

    > sudo firewall-cmd --zone=public --list-ports

2.1.4 Löschen von firewalld-Zonen

So löschen Sie eine Zone:

  1. Überprüfen Sie, dass es sich bei der Zone nicht um die Standardzone handelt und dass sie nicht verwendet wird:

    > sudo  firewall-cmd --get-default-zone

    Wenn die Zone verwendet wird oder es sich um die Standardzone handelt, legen Sie eine andere Zone fest. Beispiel:

    > sudo  firewall-cmd --set-default-zone=NEW_DEFAULT_ZONE
  2. Überprüfen Sie, ob Netzwerkschnittstellen an die Zone gebunden sind:

    > sudo firewall-cmd --zone=ZONE_TO_BE_DELETED --list-all
  3. Das Feld interfaces in der Ausgabe listet alle Schnittstellen auf. Diese Schnittstellen müssen einer anderen Zone neu zugewiesen werden. Beispiel:

    > sudo firewall-cmd --zone=public --permanent --change-interface=ITERFACE_NAME
  4. Löschen Sie die Zone:

    > sudo firewall-cmd --permanent --delete-zone=ZONE_TO_BE_DELETED
  5. Laden Sie den firewalld-Dienst neu, um die neue Konfiguration anzuwenden:

    > sudo firewall-cmd --reload

2.2 Verwalten von Firewall-Regeln und -Zonen mit Cockpit

Mit Cockpit können Sie neue Zonen erstellen oder bestehende Zonen aktualisieren. In den Firewall-Einstellungen können Sie Dienste zu einer Zone hinzufügen oder den Zugriff auf Ports erlauben.

Anmerkung
Anmerkung: Der Cockpit-Dienst ist obligatorisch.

Entfernen Sie den Cockpit-Dienst nicht aus der Standard-Firewall-Zone, da der Cockpit-Dienst sonst blockiert und die Verbindung zum Server unterbrochen werden könnte.

2.2.1 Hinzufügen von Firewall-Zonen

Die öffentliche Zone ist die Standard-Firewall-Zone. Gehen Sie zum Hinzufügen einer neuen Zone wie folgt vor:

Vorgehen 1: Hinzufügen neuer Firewall-Zonen
  1. Navigieren Sie zur Seite Netzwerk.

  2. Klicken Sie auf Regeln und Zonen bearbeiten.

  3. Klicken Sie auf Zone hinzufügen.

  4. Wählen Sie die Vertrauensstufe aus. Jede Vertrauensstufe von Netzwerkverbindungen hat eine festgelegte Anzahl von Diensten (der Cockpit-Dienst ist in allen Vertrauensstufen enthalten).

  5. Definieren Sie die zulässigen Adressen innerhalb der Zone. Wählen Sie einen der Werte aus:

    • Ganzes Teilnetz, um alle Adressen im Teilnetz zuzulassen.

    • Bereich: eine kommagetrennte Liste von IP-Adressen mit dem Routing-Präfix, zum Beispiel 192.0.2.0/24, 2001:db8::/32.

  6. Fahren Sie mit Zone hinzufügen fort.

2.2.2 Hinzufügen von zulässigen Diensten und Ports zu einer Zone

Sie können einer bestehenden Firewall-Zone Dienste hinzufügen, wie unten beschrieben:

Vorgehen 2: Hinzufügen von Diensten zu einer Firewall-Zone
  1. Navigieren Sie zur Seite Netzwerk.

  2. Klicken Sie auf Regeln und Zonen bearbeiten.

  3. Klicken Sie auf Dienste hinzufügen.

  4. Wenn Sie einen Dienst hinzufügen möchten, markieren Sie Dienste und wählen Sie die Dienste aus der Liste aus.

  5. Wenn Sie eigene Ports zulassen möchten, markieren Sie Benutzerdefinierte Ports und geben Sie den Port-Wert für UDP und/oder TCP an. Sie können diesem Port eine Kennung zuweisen.

  6. Klicken Sie zum Bestätigen der Änderungen auf Dienste hinzufügen bzw. Ports hinzufügen.

3 Gängige firewalld-Kommandos

Das Befehlszeilenwerkzeug firewall-cmd wird zum Konfigurieren und Verwalten des Daemons firewalld verwendet. Es handelt sich um ein leistungsstarkes, dynamisches Dienstprogramm, das das Erstellen, Ändern und Löschen von Firewall-Regeln ermöglicht, ohne dass ein vollständiger Neustart des Diensts erforderlich ist, wodurch eine Unterbrechung aktiver Netzwerkverbindungen verhindert wird.

Einige häufige firewall-cmd-Befehlsbeispiele beinhalten Folgendes:

  • Überprüfen, ob firewalld ausgeführt wird Die Ausgaben lauten running, not running oder RUNNING_BUT_FAILED. Beispiel:

    > sudo firewall-cmd --state
    running
  • Auflisten aller verfügbaren Zonen – Beispiel:

    > sudo firewall-cmd --get-zones
     block dmz docker drop external home internal nm-shared public trusted work
  • Anzeigen der Standardzone – Beispiel:

    > sudo firewall-cmd --get-default-zone
    public
  • Anzeigen der aktiven Zonen und der zugewiesenen Zonen– Beispiel:

    > sudo firewall-cmd --get-active-zones
    docker
    interfaces: docker0
    public (default)
    interfaces: lo enp1s0
  • Anzeigen aller Regeln für die Standardzone – Beispiel:

    > sudo firewall-cmd --list-all
    public (default, active)
    target: default
    ingress-priority: 0
    egress-priority: 0
    icmp-block-inversion: no
    interfaces: enp1s0 lo
    sources:
    services: cockpit dhcpv6-client ssh
    ports:
    protocols:
    forward: yes
    masquerade: no
    forward-ports:
    source-ports:
    icmp-blocks:
    rich rules:
    rule family="ipv4" source address="192.168.1.100" service name="ssh" accept
  • Anzeigen aller Regeln für eine bestimmte Zone – Beispiel:

    > sudo firewall-cmd --zone=public --list-all
    public (default, active)
    target: default
    ingress-priority: 0
    egress-priority: 0
    icmp-block-inversion: no
    interfaces: enp1s0 lo
    sources:
    services: cockpit dhcpv6-client ssh
    ports:
    protocols:
    forward: yes
    masquerade: no
    forward-ports:
    source-ports:
    icmp-blocks:
    rich rules:
    rule family="ipv4" source address="192.168.1.100" service name="ssh" accept
  • Auflisten aller verfügbaren vordefinierten Dienste – Beispiel:

    > sudo firewall-cmd --get-services
      0-AD RH-Satellite-6 RH-Satellite-6-capsule afp alvr amanda-client amanda-k5-client amqp amqps anno-1602 anno-1800
      apcupsd audit ausweisapp2 bacula bacula-client bareos-director bareos-filedaemon bareos-storage bb bgp bitcoin bitcoin-rpc
      bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-exporter ceph-mon cfengine checkmk-agent civilization-iv civilization-v
      cockpit collectd condor-collector cratedb ctdb dds dds-multicast dds-unicast dhcp dhcpv6 dhcpv6-client distcc dns dns-over-quic dns-over-tls
      docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server factorio finger foreman foreman-proxy freeipa-4 freeipa-ldap
      freeipa-ldaps freeipa-replication freeipa-trust ftp galera ganglia-client ganglia-master git gpsd grafana gre http http3 https ident imap imaps
      ipfs ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell kube-api kube-apiserver
      kube-control-plane kube-control-plane-secure kube-controller-manager kube-controller-manager-secure kube-nodeport-services kube-scheduler kube-scheduler-secure
      [...]
  • Auflisten der derzeit in der Standardzone zulässigen Dienste – Beispiel:

    > sudo firewall-cmd --list-services
    cockpit dhcpv6-client ssh
  • Dauerhaftes Hinzufügen eines Diensts zur Standardzone – Beispiel:

    > sudo firewall-cmd --permanent --add-service=http
    success
  • Dauerhaftes Entfernen eines Diensts – Beispiel:

    > sudo firewall-cmd --permanent --remove-service=http
    success
  • Auflisten der derzeit in der Standardzone offenen Ports – Beispiel:

    > sudo firewall-cmd --list-ports
    22/tcp
  • Vorübergehendes Öffnen eines bestimmten TCP-Ports – Beispiel:

    > sudo firewall-cmd --add-port=8080/tcp
    success
  • Dauerhaftes Entfernen eines offenen Ports – Beispiel:

    > sudo firewall-cmd --permanent --remove-port=8080/tcp
    success
  • Vorübergehendes Hinzufügen einer Schnittstelle zu einer bestimmten Zone – Beispiel:

    > sudo firewall-cmd --zone=trusted --add-interface=eth1
    success

4 Fehlerbehebung für firewalld

Die Fehlerbehebung von firewalld beinhaltet die Überprüfung des Status, die Überprüfung der Regeln und den Neustart oder das Neuladen des Diensts. Wenn Sie Probleme feststellen, können Sie das Debugging aktivieren, Protokolle prüfen und Firewall-Regeln bei Bedarf anpassen.

4.1 Überprüfen des firewalld-Status

  • Verwenden Sie den Befehl systemctl status. Beispiel:

    > sudo systemctl status  firewalld.service
    ● firewalld.service - firewalld - dynamic firewall daemon
    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset: enabled)
    Active: active (running) since Thu 2025-07-17 09:47:36 CEST; 5min ago
    Invocation: a7ea482f16d2431fa92d6204c297ebd9
    Docs: man:firewalld(1)
    Main PID: 921 (firewalld)
    Tasks: 2
    CPU: 262ms
    CGroup: /system.slice/firewalld.service
            └─921 /usr/bin/python3.13 /usr/sbin/firewalld --nofork --nopid
  • Der Befehl firewall-cmd --state bietet eine schnelle Statusprüfung mit den Ausgaben running, not running oder RUNNING_BUT_FAILED. Beispiel:

    > sudo firewall-cmd --state
    running
  • Wenn firewalld nicht ausgeführt wird, verwenden Sie den Befehl systemctl start firewalld.

    > sudo  systemctl start firewalld
  • Wenn der firewalld-Dienst maskiert ist, demaskieren Sie ihn zunächst, aktivieren und starten Sie ihn dann. Beispiel:

    > sudo systemctl unmask --now firewalld
    > sudo systemctl enable firewalld
    > sudo systemctl start firewalld

4.2 Überprüfen von firewalld-Regeln

  • Der Befehl firewall-cmd --list-all-zones zeigt alle Zonen und ihre Regeln an. Beispiel:

    > sudo firewall-cmd --list-all-zones
            block
              target: %%REJECT%%
              ingress-priority: 0
              egress-priority: 0
              icmp-block-inversion: no
              interfaces:
              sources:
              services:
              ports:
              protocols:
              forward: yes
              masquerade: no
              forward-ports:
              source-ports:
              icmp-blocks:
              rich rules:
    
            dmz
              target: default
              ingress-priority: 0
              egress-priority: 0
              icmp-block-inversion: no
              interfaces:
              sources:
              services: ssh
              ports:
              protocols:
              forward: yes
              masquerade: no
              forward-ports:
              source-ports:
              icmp-blocks:
              rich rules:
    
            docker (active)
              target: ACCEPT
              ingress-priority: 0
              egress-priority: 0
              icmp-block-inversion: no
              [...]
  • Der Befehl firewall-cmd --list-ports zeigt offene Ports an. Beispiel:

    > sudo firewall-cmd --list-ports
    22/tcp
  • Der Befehl firewall-cmd --zone=YOUR_ZONE --list-all. listet Ports für bestimmte Zonen auf. Beispiel:

    > sudo firewall-cmd --zone=dmz --list-all
                    dmz
                      target: default
                      ingress-priority: 0
                      egress-priority: 0
                      icmp-block-inversion: no
                      interfaces:
                      sources:
                      services: ssh
                      ports:
                      protocols:
                      forward: yes
                      masquerade: no
                      forward-ports:
                      source-ports:
                      icmp-blocks:
                      rich rules:

4.3 Debugging von firewalld

  • Aktivieren Sie das Debugging in /etc/sysconfig/firewalld durch Hinzufügen von ‑‑debug=[level] zu FIREWALLD_ARGS. Beispiel:

    > sudo  vi /etc/sysconfig/firewalld
    # firewalld command line args
    # possible values: --debug
    FIREWALLD_ARGS=--debug=[level]
  • Starten Sie firewalld mit der Option --debug. Beispiel:

    > sudo firewalld --nofork --debug
    2025-07-23 11:10:05 DEBUG1: start()
    2025-07-23 11:10:05 DEBUG1: Loading firewalld config file '/etc/firewalld/firewalld.conf'
    2025-07-23 11:10:05 DEBUG1: CleanupOnExit is set to 'True'
    2025-07-23 11:10:05 DEBUG1: CleanupModulesOnExit is set to 'False'
    2025-07-23 11:10:05 DEBUG1: IPv6 rpfilter is enabled
    2025-07-23 11:10:05 DEBUG1: LogDenied is set to 'off'
    2025-07-23 11:10:05 DEBUG1: FirewallBackend is set to 'nftables'
    2025-07-23 11:10:05 DEBUG1: FlushAllOnReload is set to 'False'
    2025-07-23 11:10:05 DEBUG1: RFC3964_IPv4 is set to 'True'
    2025-07-23 11:10:05 DEBUG1: NftablesFlowtable is set to 'off'
    2025-07-23 11:10:05 DEBUG1: NftablesCounters is set to 'False'
    2025-07-23 11:10:05 DEBUG1: Loading lockdown whitelist
    2025-07-23 11:10:05 ipset not usable, disabling ipset usage in firewall. Other set backends (nftables) remain usable.
    2025-07-23 11:10:05 iptables-restore and iptables are missing, IPv4 direct rules won't be usable.
    2025-07-23 11:10:05 ip6tables-restore and ip6tables are missing, IPv6 direct rules won't be usable.
    2025-07-23 11:10:05 ebtables-restore and ebtables are missing, eb direct rules won't be usable.
    2025-07-23 11:10:05 DEBUG1: Loading icmptype file '/usr/lib/firewalld/icmptypes/address-unreachable.xml'
    2025-07-23 11:10:05 DEBUG1: Loading icmptype file '/usr/lib/firewalld/icmptypes/bad-header.xml'
    2025-07-23 11:10:05 DEBUG1: Loading icmptype file '/usr/lib/firewalld/icmptypes/beyond-scope.xml'
    2025-07-23 11:10:05 DEBUG1: Loading icmptype file '/usr/lib/firewalld/icmptypes/communication-prohibited.xml'
    2025-07-23 11:10:05 DEBUG1: Loading icmptype file '/usr/lib/firewalld/icmptypes/destination-unreachable.xml'
    [...]

    Alle Protokolldateien sind unter /var/log/firewalld verfügbar.

5 Weitere Informationen

Weitere Informationen zu firewalld finden Sie in den folgenden Ressourcen: