
UFW – Inbetriebnahme und Regeldefinition
Firewalls schützen Netzwerke oder Geräte vor unerwünschten und schädlichen Zugriffen von außen, indem sie den ein- und ausgehenden Datenverkehr (basierend auf vordefinierten Regeln) überwachen und filtern.
Solche Regeln lassen sich unter Linux u.a. mit dem Tool iptables erstellen. Aufgrund der hohen Einstiegshürde dieses Tools ist ein Frontend erschaffen worden, welches sich ufw (uncomplicated firwall) nennt. Im folgenden möchte ich auf dessen Funktionsweise und die gängigsten Befehle eingehen.
Installation und Inbetriebnahme
ufw sollte bereits von Haus aus auf jeder gängigen Linux-Distribution vorab installiert sein. Falls dem nicht so ist, kann dies hiermit nachgeholt werden:
### Debian/Ubuntu
sudo apt install ufw
### CentOS/RHEL/Fedora
sudo dnf install ufw
### Arch
sudo pacman -S ufw
### openSUSE
sudo zypper install ufw
Damit wäre ufw bereits installiert und einsatzbereit!
Ein- und Ausschalten lässt sich die Firewall mit ufw folgendermaßen.
### UFW aktivieren
sudo ufw enable
### UFW deaktivieren
sudo ufw disable
Hinweis:
Falls eine oder mehrere SSH-Verbindungen zur Zielmaschine bestehen, sollte die Firewall noch nicht eingeschaltet werden, da mit Abbrüchen der Verbindung zu rechnen ist. Zuvor sollten die entsprechenden Ausnahmen für z.B. SSH hinzugefügt werden!
Den Status der Firewall fragen wir mit diesem Befehl ab:
sudo ufw status
Regeln hinzufügen und entfernen
Hinweis:
Regel-Definitionen können auch erstellt werden wenn die Firewall deaktiviert ist.
Wir können eingehende Regeln auf einen bestimmten Port über das TCP-Protokoll zulassen …
sudo ufw allow 22/tcp
… oder blockieren:
sudo ufw deny 22/tcp
Neben dem TCP-Protokoll können wir auch das UDP-Prokokoll angeben:
sudo ufw allow 53/udp
Sofern im Befehl keine explizite Richtung angegeben wird (wie es im obigen Beispiel „ufw allow 22/tcp“ der Fall ist), bezieht sich die Regel nur auf eingehenden Datenverkehr.
Die Richtung kann aber optional noch angegeben werden:
### Optionale Angabe des Wortes 'in' für eingehenden Datenverkehr
sudo ufw allow in 22/tcp
Neben eingehenden Datenverkehr, lässt sich auch ausgehender Datenverkehr regulieren:
sudo ufw allow out 22/tcp
Vertrauen wir einer IP-Adresse, können wir hierfür explizit eine Ausnahme definieren:
sudo ufw allow from 192.168.0.2
Hinweis:
Auch in diesem Beispiel gilt; sofern weder das Wort in noch out verwendet wird, handelt es sich um die eingehende Richtung.
Das ganze lässt sich noch etwas feiner regulieren, indem wir der Adresse von eben lediglich Zugang über Port 80 erlauben:
sudo ufw allow from 192.168.0.2 to any port 80
to any bedeutet in diesem Kontext, dass die Regel für jeden Zielhost gilt. Auch hier können weitere Anpassungen vorgenommen werden:
sudo ufw allow from 192.168.0.2 to 10.0.0.5 port 80
In diesem Beispiel würde sämtlicher eingehender Datenverkehr von der IP-Adresse 192.168.0.2 über Port 80 auf die IP-Adresse 10.0.0.5 zugelassen werden.
Um nun noch einen daraufzusetzen, können wir auch noch das Protokoll mitgeben:
sudo ufw allow proto udp from 192.168.0.2 to 10.0.0.5 port 80
Die Regeln wieder zu löschen gestaltet sich mit ufw leider etwas holprig. Zwar lassen diese sich mit einem Editor aus folgender Datei auslesen (und das auch nur in der iptables schreibweise) …
less /etc/ufw/user.rules
… allerdings nützt uns das nichts, wenn wir das UFW-Frontend zum löschen verwenden möchten. Wir benötigen nämlich die Nummer der zu löschenden Regel und die bekommen wir nur heraus, wenn wir die Firewall einschalten und uns das Regelwerk nummeriert und tabellarisch ausgeben lassen:
### UFW aktivieren
sudo ufw enable
### Regelwerk auflisten
sudo ufw status numbered

Nun haben wir die Möglichkeit uns den entsprechenden Eintrag herauszusuchen und zu löschen:
sudo ufw delete <Regel-Nummer>

Standardrichtlinien festlegen
Neben einzelnen Regeln können wir auch den gesamten ein- oder ausgehenden Datenverkehr erlauben oder unterbinden:
### Verbietet sämtlichen eingehenden Datenverkehr
sudo ufw default deny incoming
### Erlaubt sämtlichen ausgehenden Datenverkehr
sudo ufw default allow outgoing
Sofern nun nicht explizit Ausnahmen hinzugefügt wurden, sollte sämtlicher eingehender Verkehr geblockt und ausgehender Verkehr erlaubt werden.
Nach jeder erfolgten Anpassung der Firewall müssen die Regeln erneut eingelesen werden. Nur so werden sie aktiv (ist lediglich im laufenden Betrieb der Firewall notwendig):
sudo ufw reload
Protokollierung
UFW verfügt über eine Protokollierung die sich aktivieren und deaktivieren lässt:
### UFW-Protokollierung aktivieren
sudo ufw logging on
### UFW-Protokollierung deaktivieren
sudo ufw logging off
Darüber hinaus lässt sich das Protokollierungs-Level anpassen, also wie intensiv geloggt werden soll:
sudo ufw logging medium
Mögliche Stufen sind: off, low, medium, high, full.
Alternativ lässt sich das Log-Level auch über /etc/ufw/ufw.conf und dem Parameter LOGLEVEL einstellen.
Die Log-Datei befindet sich standardmäßig unter /var/log/ufw.log.
Anwendungen verwalten
In UFW ist es möglich, sich Profile zu einzelnen Applikationen anzulegen. Diese Profile werden als einzelne Dateien unter /etc/ufw/applications.d/ hinterlegt:

Wir können uns einen Überblick verschaffen welche Profile derzeit verwendet werden können:
sudo ufw app list

Auch können wir nähere Details zu den Profilen einsehen:
sudo ufw app info openssh

Anstelle des Ports 22/tcp (wie es in der Profildatei von OpenSSH der Fall ist) haben wir nun also auch die Möglichkeit, mit Hilfe des Schlüsselwortes OpenSSH Regeln zu definieren. Folgender Befehl …
sudo allow OpenSSH
… würde (wie es in der Profildatei hinterlegt ist) eingehenden Datenverkehr auf Port 22/tcp zulassen.
/etc/ufw/applications.d/ lässt sich im übrigen auch beliebig um weitere Einträge ergänzen:

Fazit
UFW bietet einen seichten Einstieg in die Thematik der Firewall-Konfiguration unter Linux. Mit nur wenigen und leicht lesbaren Befehlen lassen sich bereits effektive Regeln definieren. Die oben aufgeführten Befehle sollten dabei eine solide Grundlage darstellen.
Bildquellen:
Krieger-Bild von OpenClipart-Vectors auf Pixabay
Firewall-Bild von Clker-Free-Vector-Images auf Pixabay