Linux-Desktop mit Firewalld absichern

Viele Linux-Anwender glauben immer noch, sie bräuchten keine Firewall. Das Mantra wurde schließlich jahrzehntelang vor Linux hergetragen. Doch die meisten Linux-Desktopinstallationen sind nicht mehr minimalistisch und bewegen sich auch nicht mehr nur innerhalb des Heimnetzes.

Eine Firewall kann dann Sinn machen, wenn man ein mobiles Gerät besitzt und sich in fremde Netze einwählt. Nennt sich Notebook und dürfte bei den meisten Anwendern der Standardfall sein. Man verweist immer gerne auf Windows mit seinen vermeintlich vielen offenen Ports und Diensten, die man nicht braucht, aber auch bei Linux laufen viele Dienste, die außerhalb des Heimnetzes nicht gebraucht werden: CUPS, Avahi, KDE Connect, ggf. ein Samba-Share. Die Liste ließe sich sicher noch erweitern. Das ist jetzt grundsätzlich kein Problem, aber es schadet auch nicht, diese Ports bei unbekannten Netzwerken zu blockieren. Wer weiß schon, welche Sicherheitslücke demnächst in CUPS oder sshfs gefunden wird.

Distributionen wie Red Hat Enterprise Linux, Fedora, SUSE Linux Enterprise oder openSUSE liefern deshalb mit Firewalld schon länger standardmäßig eine aktivierte Firewall aus. Distributionen wie Debian oder Ubuntu bieten eine Nachinstallation aus den Paketquellen an, aber hier ist ufw verbreiteter.

Ein bisschen Nacharbeit ist in jedem Fall notwendig. Bei SUSE kann man dies via YaST machen oder auf der Konsole. KDE bietet seit Neuestem mit Plasma Firewall eine GUI für Firewalls, aber bei mir hat diese nicht funktioniert.

Zonen in Firewalld

Firewalld arbeitet mit vordefinierten Zonen. Die wichtigen Kern-Zonen sind:

  • block – Alle eingehenden Netzwerkverbindungen werden blockiert. Nur vom System aus initiierte Netzwerkverbindungen sind möglich.
  • dmz – Klassische entmilitarisierte Zone (DMZ), die begrenzten Zugang zum Netzwerk bietet und nur definierte eingehende Ports zulässt.
  • drop – Löscht eingehenden Netzwerkverbindungen und erlaubt nur ausgehende Netzwerkverbindungen.
  • external – Nützlich vor allem im Router-Kontext.
  • home – Gedacht für Heimcomputer wie Notebooks und Desktops innerhalb des eigenen Netzwerks, in dem anderen Systemen vertraut werden kann.
  • internal – Für interne Netzwerke, wenn den anderen Servern oder Computern im Netzwerk vertraut werden kann.
  • public – Es wird anderen Systemen im Netzwerk nicht vertraut. Nur erforderliche Ports und Dienste sind erlaubt.
  • trusted – Alle Netzwerkverbindungen werden akzeptiert.
  • work – Äquivalent von Home für den Einsatz am Arbeitsplatz.

Welche Zonen zusätzlich noch verfügbar sind kann mit folgendem Kommando geprüft werden:

# firewall-cmd --get-zones

Dienste für Zonen konfigurieren

Für die klassischen Notebook-Installation sind vor allem zwei Zonen von Firewalld von Interesse: home und public.

Die Standard-Zone sollte public sein, das lässt sich mit folgendem Befehl prüfen:

# firewall-cmd --get-default-zone

Durch die Integration in den NetworkManager lassen sich Netzwerke Zonen zuordnen. Jede neue Verbindung wird automatisch public zugewiesen. Eigene Netzwerke können home zugewiesen werden.

Für Home können dann Dienste freigeschaltet werden, die man im heimischen Netzwerk gerne nutzen möchte.

Mit folgendem Befehl überprüft man, welche Services gerade aktiv sind:

# firewall-cmd --list-services --zone=home

Folgender Befehl kann man die vorkonfigurierten Dienste für Firewalld ausgeben. Diese sind bereits für den Dienst passend konfiguriert und man muss nicht manuell irgendwelche Ports zusammen stellen und freigeben.

# firewall-cmd --get-services

Für meinen persönlichen Bedarf haben die vorkonfigurierten Dienste immer gereicht, aber das hängt natürlich von den eigenen Einsatzszenarien ab.

Mit folgenden beiden Befehlen fügt man einen Dienst hinzu bzw. entfernt ihn wieder. Hier mal am Beispiel von SSH.

# firewall-cmd --zone=home --add-service=ssh --permanent
# firewall-cmd --zone=home --remove-service=ssh --permanent

Nach jeder Anpassung muss man Firewalld neustarten, damit die Änderung greift:

# systemctl restart firewalld

Beispiel für den Einsatz

Mein primäres Notebook kommt mit zwei Zonen aus: home und public. In public ist so wenig die nötig erlaubt, in home einiges mehr, damit ich z. B. KDE Connect nutzen kann oder meinen Drucker erreiche:

GH-Elite:/home/gerrit # firewall-cmd --list-services --zone=home                  
dhcpv6-client kdeconnect kdeconnect-kde mdns samba-client
 
GH-Elite:/home/gerrit # firewall-cmd --list-services --zone=public 
dhcpv6-client

Die Netzwerke eines Erst- und Zweitwohnsitzes sind Home zugewiesen. Alle anderen Netzwerke landen bei der Einrichtung automatisch bei Public. Bisher hatte ich damit keine Probleme.

9 Kommentare

  1. Danke für den Artikel – endlich Licht im Dunkeln! 🙂 Aber kdeconnect habe ich bei mir im public, kdeconnect-kde gar nirgends freigegeben. KDE Connect läuft trotzdem einwandfrei.

    • Danke für den Tipp. Hab ich vermutlich doppelt gemoppelt. Muss mir mal die Konfigurationen ansehen und schmeiße dann eines raus. 🙂

  2. Gibt es auch eine Lern-Variante? So wie es die persönlichen Firewalls unter Windows (bsp. SimpleWall) schon immer anbieten?
    Grundsätzlich hätte ich gerne, dass alle Netzzugriffe erstmal gesperrt sind und beim Erstmaligen zugriff werde ich dann gefragt Erlauben/blockieren/für Xmin erlauben.

  3. Hallo Gerrit. Ich habe mich bisher erst mit UFW beschäftigt und bin damit auch sehr zufrieden. Wenn ich mit Fedora anstatt Debian unterwegs bin, würde Firewalld aber eine beßere Wahl sein. UFW läuft bei mir teilweise im Hardcore Modus. Eingehend (Drop) | Ausgehend (Reject). Danach DNS (53), HTTP (80), HTTPS (443) wieder freigeben. Teilweise ist sogar nur DNS und HTTPS auf die jeweils gewünschte IP eingestellt. Wie funktioniert diese paranoide Konfiguration bei Firewalld? Ich konnte das bisher nirgends finden.

Kommentarfunktion ist geschlossen.

Mehr aus dem Blog

Firmware Updates (BIOS) mit fwupd

Mein privates Hauptgerät ist schon länger ein HP EliteBook G7. Firmware-Updates für einzelne Hardwarekomponenten gab es schon länger via fwupd, aber nun geht darüber...

Boxcryptor von Dropbox übernommen

Ein bisschen untergegangen ist bei mir und vielen anderen vermutlich die Meldung, dass Dropbox von der Secomba GmbH deren Produkt Boxcryptor erworben hat. Das...

Firmen benötigen kein „zweites Leben“ mit Linux

Heise bringt mal wieder eine Serie zum Umstieg auf Linux. Dieses mal für Unternehmen im Angesicht der Windows 11-Migration. Das geht völlig am Thema...

Warum man „Face unlock“ mit einem Google Pixel 7 nicht nutzen sollte

Biometrische Entschlüsselung ist ein Thema für sich. Selbst wenn man dem nicht gänzlich ablehnend gegenüber steht, sollte man nicht leichtfertig jede Lösung nutzen. Gesichtserkennung...