Firewalld

Jean-Jacques Sarton

Was ist firewalld

Es ist ein Firewall, welchen sowohl für den Einsatz im Heimbereich wie auch im professionellen Umfeld eingesetzt werden kann.

Firewalld baut auf nftables und wurde von RedHat entwickelt.

Nftables erstezt weitgehend die alten iptables.

Masquerding erfolgt jedoch immer noch per iptables, firewalld beinhaltet eine Schnittstelle dafür.

Mir neuere Versionen von iptables geht einiges nicht mehr!

Vorteil von Firewalld

Firewalld kennt einige Zonen:

drop, block, external, public, dmz, work, home, internal, trusted

Weitere Zonen können hinzugefügt werden.

Die Konfiguration von firewalld kann permanent oder temporär erfolgen.

Ausgehende Verbindungen sind in alle Zonen möglich.

Die Zugehörigkeit einer Zone zu einer Netwerkverbindung wird durch das NetworkManager unterstützt.

Zone drop und block

Zone dmz

Zone public

Zone work, home

Zone external internal

Diese Zonen sind für die Konfigurieren einen Router gedacht.

Zone trusted

Firewalld und NetworkManager

Das NetworkManager kann, je nach Verbindung, den Anschluss eine Vorgegebene Zone zuweisen. Dies ist vor allem bein WLAN Verbindungen von Vorteil.

Im Tab "Allgemein" kann eine Firewall Zone vorgegeben werden.

Falls eine Vorgabe nicht vorhanden ist, wird die Vorgabe von firewalld (normalerweise public) für die Verbindung eingestellt.

NetworkManager und Zonen

Permanent oder Runtime?

Neue Regeln können fest vorgegeben werden (permanent) oder nur in der Runtime Umgebung.

Regeln die permanent sind, werden gesichert und beim erneuten Booten beachtet.

Dagegen sind die Regeln, die in der Runtime Umgebung nur solange gültig bis das System läuft.

Konfiguration

Die Regeln können mittels der graphische Oberfläche firewall-config oder per Terminal mit firewall-cmd (Fedora, Suse)

Unter Debian basierte Systeme ist ufw bzw. die grafische Oberfläche gufw mit nftables verwendbar, leider sind die Zonen nicht dynamisch. Firewalld kann jedoch installiert werden.

Konfigurationsbeispiel mit firewall-cmd

Permanent Versus Runtime

# firewall-cmd --zone=trusted --permanent --add-interface=wg0
# firewall-cmd --zone=trusted --list-interface

# firewall-cmd --reload
success
# firewall-cmd --zone=trusted --list-interface
wg0
#
# firewall-cmd --zone=trusted --add-interface=wg0
# firewall-cmd --zone=trusted --list-interface
wg0
# firewall-cmd --reload
success
# firewall-cmd --zone=trusted --list-interface

#

Konfigurationsbeispiel mit firewall-cmd

Dienst hinzufügen

# firewall-cmd --zone=home --add-service=http --add-service=https
success
# firewall-cmd --zone=public --list-services
dhcpv6-client http https mdns ssh
# firewall-cmd --reload
success
# firewall-cmd --zone=public --list-services
dhcpv6-client mdns ssh
#

Konfigurationsbeispiel mit firewall-cmd

Neue Zone anlegen / entfernen

# firewall-cmd --permanent --new-zone=wireguard
success
# firewall-cmd --permanent --zone=wireguard --add-interface=wg0
success
# firewall-cmd --permanent --zone=wireguard --set-target=ACCEPT
success
# firewall-cmd --reload
success
# firewall-cmd --permanent --delete-zone=wireguard
success
# firewall-cmd --reload
success
# firewall-cmd --permanent --new-zone-from-file=/home/user/test/Wireguard.xml
sucess
# firewall-cmd --reload
success

Konfigurationsbeispiel

Datei /home/user/test/Wireguard.xml

<?xml version="1.0" encoding="utf-8"?>
<zone target="ACCEPT">
  <short>wireguard</short>
  <description>Wireguard zone. All network connections are accepted.</description>
  <interface name="wg0"/>
</zone>

firewalld GUI (firewall-config)

firewall-applet

/