Firewall mit UFW einrichten
Mit UFW in wenigen Minuten eine Host-Firewall aufsetzen: alles blocken außer SSH, HTTP und HTTPS – ohne dich dabei selbst auszusperren.
Inhaltsverzeichnis
Dein Server nimmt standardmäßig Verbindungen auf allen offenen Ports entgegen. Eine Firewall dreht das um: Sie blockt alles und lässt nur durch, was du ausdrücklich erlaubst. UFW („Uncomplicated Firewall") macht das mit wenigen, gut lesbaren Befehlen – die perfekte erste Verteidigungslinie.
Was bauen wir?
Am Ende läuft UFW auf deinem Debian 13 mit der Grundregel „alles eingehende blocken", geöffnet sind nur SSH (dein Zugang) sowie HTTP/HTTPS (Port 80/443, die du später für Traefik brauchst). Ausgehende Verbindungen bleiben erlaubt. Das Wichtigste dabei: Wir gehen so vor, dass du dich nicht selbst aussperrst.
Voraussetzungen
- Ein abgesicherter Server mit sudo-Benutzer
- Du weißt, auf welchem Port dein SSH läuft (Standard: 22)
Schritt für Schritt
Schritt 1: UFW installieren
sudo apt update
sudo apt install -y ufwPrüfe, welche Version du bekommen hast:
ufw versionufw 0.36.2
Copyright 2008-2023 Canonical Ltd.Direkt nach der Installation ist UFW noch inaktiv – das ist gewollt: Ein sofort
scharfer Paketfilter ohne Freigaben würde dich aussperren. sudo ufw status bestätigt
das mit Status: inactive.
Schritt 2: Grundregeln festlegen
Zuerst die Standardrichtung: alles Eingehende ablehnen, alles Ausgehende erlauben.
sudo ufw default deny incoming
sudo ufw default allow outgoingDefault incoming policy changed to 'deny'
(be sure to update your rules accordingly)
Default outgoing policy changed to 'allow'
(be sure to update your rules accordingly)Diese Regeln greifen noch nicht – UFW ist ja inaktiv. Deshalb kommen jetzt die Ausnahmen, bevor wir einschalten.
Schritt 3: SSH freigeben – zuerst, sonst Aussperrung
Erst SSH erlauben, dann aktivieren
Wenn dein SSH auf dem Standardport 22 läuft (und openssh-server installiert ist),
gibt es dafür ein fertiges Profil:
sudo ufw allow OpenSSHHast du den SSH-Port geändert (z. B. auf 2222), erlaube stattdessen genau diesen Port:
sudo ufw allow 2222/tcpSchritt 4: HTTP und HTTPS freigeben
Für den späteren Reverse Proxy mit Traefik brauchst du die Web-Ports. Öffne sie gleich mit:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpJede Regel bestätigt UFW mit Rules updated und Rules updated (v6) (die
IPv6-Variante).
Schritt 5: Firewall aktivieren und prüfen
Jetzt einschalten:
sudo ufw enableCommand may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startupKontrolliere das Ergebnis:
sudo ufw status verboseStatus: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp (OpenSSH) ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6)
80/tcp (v6) ALLOW IN Anywhere (v6)
443/tcp (v6) ALLOW IN Anywhere (v6)Status: active und deine drei Freigaben – fertig. Teste zur Sicherheit in einer
zweiten SSH-Sitzung, dass du dich weiterhin verbinden kannst, bevor du die erste
schließt.
Das disabled (routed) in der Default-Zeile ist auf einem frischen Debian normal:
UFW filtert weitergeleiteten Verkehr nur, wenn im Kernel überhaupt IP-Forwarding
aktiv ist. Sobald du später Docker installierst –
das schaltet net.ipv4.ip_forward ein – steht dort deny (routed). Beides ist in
Ordnung, es beschreibt nur unterschiedliche Ausgangslagen.
Wenn es nicht funktioniert
Nach ufw enable kommst du per SSH nicht mehr rein. Die SSH-Regel fehlte oder
betraf den falschen Port. Verbinde dich über die Konsole im netcup SCP (VNC,
unabhängig von SSH), erlaube dort deinen SSH-Port (sudo ufw allow …) und teste
erneut. Genau davor warnt Schritt 3.
ERROR: Could not find a profile matching 'OpenSSH'. Das OpenSSH-Profil
existiert nur, wenn openssh-server installiert ist. Nutze stattdessen die
Portnummer: sudo ufw allow 22/tcp (bzw. deinen Port). sudo ufw app list zeigt die
verfügbaren Profile.
Ein Docker-Container ist von außen erreichbar, obwohl UFW den Port nicht
freigibt. Kein Fehler von dir – Docker umgeht UFW. Docker schreibt seine Regeln
direkt in iptables und hängt sie vor die UFW-Ketten. Ein veröffentlichter
Container-Port (ports: in der compose.yaml) ist damit offen, egal was UFW sagt. Die
saubere Lösung ist eine zweite Firewall-Ebene vor dem Server – bei netcup die
Firewall im SCP als vorgelagerter
Perimeter. Auf dem Host hilft außerdem, Container-Ports nur an 127.0.0.1 zu binden
statt an 0.0.0.0.
Wartung & Backups
- Regeln ansehen und löschen:
sudo ufw status numberednummeriert alle Regeln;sudo ufw delete 3entfernt Regel 3. So räumst du auf, wenn ein Dienst wegfällt. - Neue Dienste: Für jeden zusätzlichen öffentlichen Port eine gezielte Regel – nie „mal eben alles" öffnen. Was nicht offen sein muss, bleibt zu.
- Kein Backup nötig, aber notiere dir deine Freigaben (oder halte sie im selben Dokument wie deine DNS-Records fest). Der Regelsatz ist in Sekunden neu getippt.
- Grenzen kennen: UFW schützt den Host, aber nicht gegen die Docker-Lücke oben. Eine vorgelagerte Perimeter-Firewall wie die netcup-Firewall im SCP ergänzt UFW zu zwei Ebenen, die sich gegenseitig absichern – ideal, sobald Container mit offenen Ports laufen.
Zuletzt aktualisiert: 27.08.2026
Feedback per E-Mail: feedback@serverkueche.de
Wie geht's weiter?

WireGuard-VPN einrichten: sicherer Zugang zum eigenen Server
Ein schlankes WireGuard-VPN nativ auf dem netcup-Server: Schlüssel, Server- und Client-Konfig, Firewall, Handy-QR – plus …

Fail2ban einrichten: Brute-Force-Angriffe automatisch blocken
Fail2ban überwacht deine Logs und sperrt IPs nach zu vielen Fehlversuchen – mit sicherer Whitelist für die eigene …

unattended-upgrades: automatische Sicherheitsupdates für Debian
Debian installiert Sicherheitsupdates automatisch: unattended-upgrades einrichten, den Neustart steuern und prüfen, dass …
Das könnte dir auch schmecken

Docker auf Debian installieren
Docker Engine und Docker Compose sauber aus dem offiziellen Repository installieren – die Basis für die meisten …

Erste Schritte mit einem netcup VPS
Vom bestellten Server zum einsatzbereiten System: SSH-Login, Updates, ein sudo-Benutzer und die wichtigsten Handgriffe …

Restic-Backups einrichten: verschlüsselt und off-site
Off-Site-Backups mit Restic: verschlüsselt einrichten, Snapshots wiederherstellen, mit Retention aufräumen und per …