UFW installieren und konfigurieren
UFW (Uncomplicated Firewall) ist eine vereinfachte Bedienoberfläche für die Linux-Firewall. Statt iptables-Regeln zu schreiben, gibst du lesbare Befehle ein — das Ergebnis ist dasselbe, der Weg dorthin deutlich kürzer.
Das Prinzip: Alles Eingehende wird blockiert, und du gibst gezielt frei, was erreichbar sein soll.
Voraussetzungen
- Debian- oder Ubuntu-basierter Server
- Root-Rechte bzw. ein Benutzer mit
sudo - Eine bestehende SSH-Verbindung
Installation
sudo apt update
sudo apt install -y ufwGrundregeln setzen
sudo ufw default deny incoming
sudo ufw default allow outgoingDamit ist von außen zunächst nichts erreichbar, während dein Server selbst weiterhin Verbindungen aufbauen darf — für Updates zum Beispiel.
SSH freigeben — vor dem Aktivieren
Der wichtigste Schritt
Aktivierst du UFW ohne SSH-Freigabe, wird deine laufende Verbindung beim nächsten Paket gekappt und du kommst nicht mehr auf den Server. Gib SSH immer zuerst frei.
sudo ufw allow OpenSSHLäuft SSH auf einem abweichenden Port:
sudo ufw allow 2222/tcpFirewall aktivieren
sudo ufw enableBestätige die Rückfrage mit y. Prüfe danach den Status:
sudo ufw status verboseWeitere Ports freigeben
# Webserver
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Über den Dienstnamen
sudo ufw allow 'Nginx Full'
# Minecraft
sudo ufw allow 25565/tcp
# Portbereich
sudo ufw allow 30120:30130/tcp
# Nur für eine bestimmte IP-Adresse
sudo ufw allow from 203.0.113.10 to any port 3306 proto tcpDie letzte Variante ist besonders nützlich für Datenbanken: Der Port ist dann ausschließlich für einen bekannten Absender offen, nicht für das gesamte Internet.
Welche Dienstnamen UFW kennt, zeigt:
sudo ufw app listRegeln löschen
Regeln nummeriert anzeigen:
sudo ufw status numberedDann gezielt entfernen:
sudo ufw delete 3Oder über die ursprüngliche Regel:
sudo ufw delete allow 80/tcpRegeln zuerst testen
Mit --dry-run siehst du, was ein Befehl bewirken würde, ohne dass er angewendet wird:
sudo ufw --dry-run allow 8080/tcpProtokollierung
sudo ufw logging onDie Einträge findest du in /var/log/ufw.log. Für eine intensivere Aufzeichnung stehen low, medium und high zur Verfügung — im Dauerbetrieb wächst die Datei damit allerdings schnell.
Firewall vorübergehend abschalten
sudo ufw disable
sudo ufw enableZum vollständigen Zurücksetzen aller Regeln:
sudo ufw resetNach dem Zurücksetzen
ufw reset entfernt auch die SSH-Freigabe. Setze sie sofort neu, bevor du die Firewall wieder aktivierst.
Docker und UFW
Docker umgeht UFW
Veröffentlicht ein Container einen Port mit -p 8080:80, schreibt Docker eigene iptables-Regeln direkt in die DOCKER-Kette. Diese greifen vor UFW — der Port ist dann öffentlich erreichbar, obwohl ufw status das Gegenteil nahelegt.
Binde Container deshalb gezielt auf localhost:
docker run -p 127.0.0.1:8080:80 ...Oder in der docker-compose.yml:
ports:
- "127.0.0.1:8080:80"Nächste Schritte
Troubleshooting
- Nach
ufw enablekeine Verbindung mehr: Über die Konsole im ForgeHost Dashboard anmelden undsudo ufw disableausführen. - Port ist trotz Freigabe nicht erreichbar: Prüfe mit
sudo ss -tulpn, ob der Dienst überhaupt lauscht — und ob er auf127.0.0.1statt auf0.0.0.0gebunden ist. - Port ist trotz Sperre erreichbar: Fast immer Docker (siehe oben).
- Regeln nach Neustart weg: UFW ist nicht aktiviert. Mit
sudo systemctl enable ufwnachholen.