Kategorien
Systemadministration

Einfache Firewall-Administration unter Linux mit UFW

[: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"

[:]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.