[:de]Mit ufw bieten moderne Linux Distributionen eine gute Möglichkeit die Server-Firewall ohne Schweißausbrüche zu administrieren. Das Tool nimmt einem das Eintragen der iptables Regeln ab.
Server die direkt im Internet stehen sollten immer hinter einer Firewall betrieben werden. Am Besten hinter einer Hardware-Firewall, zumindest aber hinter einer Software-Firewall.
Linux bietet mit Iptables in Verbindung mit dem Kernel hierfür eine leistungsstarke Lösung, auch wenn es sich streng genommen nur um einen Paketfilter handelt.
Vermutlich wurde nicht nur ich öfter nervös, wenn ich die iptables Regeln bearbeiten musste. Ein Fehler und man sperrt sich aus dem eigenen Server aus.
Kürzlich stolperte ich aber über ufw, ein Kommandozeilen Tool das einem die Arbeit mit Iptables deutlich vereinfacht und dadurch Fehlerquellen minimiert.
Ein Beispiel
Eine beispielhafte Einrichtung auf einem Ubuntu Server soll die Arbeit mit ufw verdeutlichen. Wir installieren und aktivieren ufw, geben einige Dienste frei und blocken den Rest.
Grundkonfiguration
Die Installation unter Debian / Ubuntu läuft gewohnt ab. Andere Distributionen bieten das Tool ebenfalls über deren Paketverwaltung
apt-get update apt-get install ufw
Ufw speichert die Regeln automatisch unter “/lib/ufw/user.rules“ und startet die Firewall bei einem Reboot automatisch wieder, falls sie vorher auch aktiv war.
ufw allow "OpenSSH" ufw enable ufw default deny ufw default deny outgoing ufw logging on
Damit haben wir die Firewall aktiviert und SSH, also Port 22 offen gelassen. Das Logging ist hierbei optional, hilft aber zunächst die Funktion zu überwachen.
Eigentlich ist ufw darauf ausgelegt nur eingehenden Traffic zu blocken. Wir wollen aber auch bestimmen was nach draussen funken darf. Wer dies nicht möchte lässt einfach die Zeile “ufw default deny outgoing“ sowie die outgoing Regeln weiter unten weg.
Profile
Je nach dem welche Programme und Dienste auf dem Server installiert sind, stehen bereits fertige Profile zur Verfügung, wie im obigen Beispiel „OpenSSH“. Diese findet man unter “/etc/ufw/applications.d/“.
Wir haben auf unserem Server bereits Postfix und Apache installiert. Daher können wir diese ebenfalls freischalten:
ufw allow "Postfix" ufw allow "Apache Full"
Das Profile “Apache Full“ beinhaltet die Port 80 und 443.
Wegen dem „deny outgoing“ müssen wir Clients auf dem Server extra freischalten. Darunter auch DNS, HTTP, HTTPS, SMTP und SSH.
ufw allow out to any port 80,443 proto tcp ufw allow out to any port 25 proto tcp ufw allow out to any port 53
DNS (Port 53) sollten wir für TCP und UDP freischalten für den Rest reicht TCP. Damit ICMP-Requests versendet werden können müssen wir die Datei „before.rules“ anpassen und folgenden Zeile einfügen:
-A ufw-before-output -p icmp --icmp-type echo-request -j ACCEPT
Eigene Profile
Für den Munin Server gibt es z.B. kein fertiges Profile. Natürlich können wir einfach eine neue Regel manuell hinzufügen. Oder aber wir erstellen unter „applications.d“ eine neue Profildatei:
[Munin node] title=Munin node description=Munin is a simple monitoring system with nodes beeing queried by a central munin server. ports=munin/tcp
Danach können wir das Profil aktivieren.
ufw allow "Munin node"
[:]