Einfache Firewall-Administration unter Linux mit UFW

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

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.

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:

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.

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:

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:

Danach können wir das Profil aktivieren.

Kommentar verfassen