Firewalls sind entgegen der landläufigen Meinung auch für Linux sinnvoll. Die meisten Distributionen setzen entweder auf Firewalld oder ufw. Auf Letzteres soll hier ein wenig eingegangen werden.
ufw als Kürzel für uncomplicated firewall ist ein relativ leicht zu konfigurierendes Frontend für iptables. Während Firewalld vor allem bei Red Hat, Fedora und openSUSE verbreitet ist, setzen Ubuntu und die offiziellen und inoffiziellen Derivate meist auf ufw. Beide Lösungen erfüllen ihren Zweck und reichen für Privatanwender aus.
Wichtig ist überhaupt eine Firewall zu nutzen. Die meisten Linux-Nutzer glauben immer noch dem alten Mythos, sie bräuchten keine Firewall, doch das war einmal. 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.
Den aktuellen Status von ufw kann man mit folgender Abfrage prüfen:
$ sudo ufw status
Die Ausgabe ist dann je nach Zustand Status: Inaktiv oder Status: Aktiv.
Mit folgendem Befehlen aktiviert bzw. deaktiviert man ufw.
$ sudo ufw enable
$ sudo ufw disable
ufw kennt drei Modi für Verbindungen: allow, deny reject. Der Unterschied zwischen letzteren beiden besteht darin, dass bei reject der Absender des Netzwerkpakets eine Nachricht über die Ablehnung bekommt. Der Vollständigkeit halber sei darauf hingewiesen, dass eine solche Reaktion manche Experten aus Sicherheitsgründen für nicht klug halten.
Normalerweise ist die Standardkonfiguration von ufw wenn weitere Einstellungen fehlen, eingehende Verbindungen zu blockieren und ausgehende Verbindungen zu erlauben. Die aktuelle Konfiguration kann mit dem verbose Befehl abgefragt werden. Die Ausgabe sollte wie folgt aussehen:
$ sudo ufw status verbose
Status: Aktiv
Protokollierung: on (low)
Voreinstellung: deny (eingehend), allow (abgehend), disabled (gesendet)
Neue Profile: skip
Sollten eingehende Verbindungen nicht per default blockiert werden kann dies mit folgendem Befehl nachgeholt werden:
$ sudo ufw default deny
Code-Sprache: JavaScript (javascript)
Mit einem anschließenden Reload von ufw werden die Regeln aktiviert:
$ sudo ufw reload
Eine Konfiguration kann auf Basis von Services oder Application-Profilen erfolgen. Zusätzlich kann man einzelne Ports konfigurieren. Ein Service wie z. B. SSH lässt sich mit folgendem Befehl freigeben:
$ sudo ufw allow ssh
Besonders praktisch sind die mitgelieferten Profile. Diese werden direkt bei der Installation von Programmen mitgeliefert. Verfügbare Profile lassen sich mit folgendem Befehl finden:
$ sudo ufw app list
Code-Sprache: PHP (php)
Normalerweise sollte mindestens ein Profil für CUPS vorhanden sein. Den Inhalt eines solchen Profils kann man sich ebenfalls anschauen:
$ sudo ufw app info CUPS
Profil: CUPS
Titel: Common UNIX Printing System server
Beschreibung: CUPS is a printing system with support for IPP, samba, lpd,
and other protocols.
Port:
631
Code-Sprache: JavaScript (javascript)
Anders als Firewalld kennt ufw keine Zonen, weshalb sich Verbindungen auch nicht klassifizieren und diese Klassifizierungen unterschiedlichen Netzwerken zugewiesen werden können. Das erleichtert zwar die Konfiguration, erlaubt aber nicht die Differenzierung zwischen privaten (vertrauenswürdigen) Netzwerken und öffentlichen Netzen.
Der Mehrwert von ufw für private Nutzer ist deshalb überschaubar. Bei einem ordentlich gepflegten Linux gibt es keine unnötigen offenen Ports. Wohl aber offene Ports, die man nicht in jedem Netzwerk benötigt. Firewalld bietet hier die Möglichkeit mit Zonen automatisiert zu differenzieren, ufw kennt nur zulässige Dienste oder Apps – egal in welchem Netz.