UFW-Firewall einrichten unter Ubuntu und Debian
UFW unter Ubuntu und Debian einrichten: zuerst SSH freigeben, Ports öffnen, Regeln prüfen und löschen, IPv6, ufw limit und die Docker-Falle.
UFW (Uncomplicated Firewall) ist die einfachste Firewall für Ubuntu und Debian. Sie steuert iptables bzw. nftables, ohne dass du deren Syntax lernen musst.
Installieren
Unter Ubuntu ist UFW meist schon installiert, aber ausgeschaltet. Unter Debian installierst du es:
apt install -y ufw
Wichtig: zuerst SSH erlauben
Achtung: Schaltest du UFW ein, ohne SSH freizugeben, sperrst du dich aus. Deshalb immer zuerst:
ufw allow OpenSSH
OpenSSH steht für Port 22. Hast du den SSH-Port geändert, zum Beispiel auf 2222, gibst du stattdessen diesen frei:
ufw allow 2222/tcp
Auf welchem Port SSH läuft, zeigt sshd -T | grep -i '^port'.
Standardregeln und Einschalten
ufw default deny incoming
ufw default allow outgoing
ufw enable
Die Rückfrage, ob bestehende SSH-Verbindungen gestört werden können, bestätigst du mit y, wenn SSH wie oben freigegeben ist. Die Regeln gelten sofort und auch nach jedem Neustart.
Weitere Ports freigeben
- Webserver:
ufw allow 80/tcpundufw allow 443/tcp - WireGuard:
ufw allow 51820/udp - Minecraft:
ufw allow 25565/tcp - Nur von einer IP erlauben:
ufw allow from 203.0.113.5 to any port 3306 - Eine IP ganz sperren:
ufw insert 1 deny from 203.0.113.5. Die Regel muss ganz oben stehen, weil die erste passende Regel gilt.
App-Profile
Viele Pakete bringen ein Profil mit, das ihre Ports kennt. ufw app list zeigt die vorhandenen Profile, ufw app info "Nginx Full" die Ports dahinter. Nach der Installation von Nginx gibst du HTTP und HTTPS so in einem Schritt frei:
ufw allow "Nginx Full"
Regeln prüfen
ufw status verbose
Das zeigt, ob UFW aktiv ist, welche Standardregeln gelten und welche Ports offen sind. Steht dort Status: inactive, ist die Firewall aus.
Regeln löschen
ufw status numbered
ufw delete 3
Nach jedem Löschen rücken die Nummern nach. Lass dir die Liste deshalb vor jedem weiteren delete neu anzeigen. Ist IPv6 aktiv, steht jede Regel zweimal in der Liste, einmal mit (v6). Einfacher ist es, die Regel selbst anzugeben. Das entfernt beide Einträge auf einmal:
ufw delete allow 80/tcp
IPv6 nicht vergessen
Damit deine Regeln auch für IPv6 gelten, muss in /etc/default/ufw diese Zeile stehen:
IPV6=yes
Unter Debian und Ubuntu ist das der Standard. Steht dort no, nimmt der Server bei eingeschalteter Firewall über IPv6 keine Verbindungen an. Nach einer Änderung schaltest du UFW einmal aus und wieder ein: ufw disable, dann ufw enable.
Login-Versuche bremsen mit ufw limit
ufw limit OpenSSH
Bei abweichendem Port entsprechend ufw limit 2222/tcp. UFW blockiert dann eine IP-Adresse, die innerhalb von 30 Sekunden sechs oder mehr Verbindungen aufbaut. Das bremst Passwort-Rater, ersetzt aber keinen SSH-Key und kein Fail2ban. Vorsicht bei Werkzeugen, die viele Verbindungen schnell hintereinander öffnen, etwa Deploy-Skripte: Sie können sich damit selbst aussperren.
Und die Firewall im Panel?
Für KVM-Server gibt es im XionHosting-Panel unter Firewall zusätzlich eine Firewall vor deinem Server. Sie arbeitet unabhängig von UFW. Steht sie auf „Eingehend: Geschlossen“, kommt nur durch, was dort eine Regel erlaubt. Gibst du in UFW einen neuen Port frei, lege dann auch im Panel eine Regel dafür an. Steht sie auf „Offen“, lässt sie alles durch, was du dort nicht ausdrücklich sperrst.
Achtung bei Docker
Docker schreibt eigene iptables-Regeln und umgeht dabei UFW. Ein Container mit -p 8080:80 ist von außen erreichbar, auch wenn UFW den Port nicht freigibt, und ufw status zeigt davon nichts. Binde solche Ports an localhost (-p 127.0.0.1:8080:80) und leite sie über einen Reverse Proxy nach außen.
Ausgesperrt?
Über die Konsole im XionHosting-Panel kommst du auch ohne SSH auf den Server. Dort schaltest du die Firewall mit ufw disable ab, gibst SSH frei und schaltest sie mit ufw enable wieder ein.
Die weiteren Schritte für einen neuen Server stehen in Linux-Server absichern.