Praxisnahe Anleitung für eine saubere Host-Firewall auf Ubuntu mit UFW oder nftables, klaren Regeln und sicherem Aktivieren ohne Lockout.
Eine saubere Host-Firewall gehört zu den Grundlagen eines stabilen Ubuntu-Servers. Trotzdem bleibt sie in vielen Self-Hosted-Umgebungen erstaunlich lange improvisiert: ein paar geöffnete Ports hier, ein alter Testzugang dort und kaum jemand weiss später noch genau, warum eine Regel überhaupt existiert.
In dieser Anleitung schauen wir uns an, wie du nftables oder UFW auf Ubuntu sauber konfigurierst, welche Unterschiede es gibt, wie du dich nicht selbst aussperrst und welche Denkweise für kleine produktive Server am meisten Sinn ergibt.
1. UFW oder nftables: Was ist der Unterschied?
UFW steht für Uncomplicated Firewall und ist auf Ubuntu die klassische, einfache Standardlösung. Laut Ubuntu-Server-Dokumentation ist UFW das Standardwerkzeug für die Firewall-Konfiguration. Es eignet sich sehr gut, wenn du mit klaren Regeln schnell zu einem sicheren Host kommen willst.
nftables ist die modernere, flexiblere Paketfilter-Infrastruktur im Linux-Kernel und deutlich mächtiger. Sie ist sinnvoll, wenn du feinere Kontrolle, komplexere Regelwerke oder eine tiefergehende Netzwerklogik brauchst.
Die Kurzfassung für viele Setups:
- UFW für einfache bis mittlere Server-Setups
- nftables für bewusst geplante, detaillierte Firewall-Architektur
Wichtig ist weniger, welches Tool theoretisch stärker ist, sondern welches du später wirklich sauber warten kannst.
2. Die wichtigste Grundregel: erst Zugriff sichern, dann aktivieren
Die häufigste Angst bei Firewalls ist berechtigt: Man sperrt sich selbst aus. Genau deshalb solltest du vor dem Aktivieren immer zuerst prüfen:
- über welchen Port du administrierst
- ob SSH wirklich erlaubt wird
- ob du idealerweise eine zweite bestehende Sitzung offen hast
- ob du einen Notfallzugang über VPS-Konsole, Hypervisor oder Hosting-Panel hast
Diese Vorsicht ist keine Paranoia, sondern saubere Betriebspraxis.
3. Ein sinnvoller Standard mit UFW
Für viele Ubuntu-Server reicht UFW völlig aus. Ein vernünftiger Basissatz ist:
sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow OpenSSH sudo ufw enable
Danach prüfst du:
sudo ufw status verbose
Damit gilt vereinfacht:
- eingehend standardmässig alles blockieren
- ausgehend standardmässig erlauben
- SSH explizit freigeben
Das ist für viele Server bereits ein sehr guter Anfang.
4. Webdienste mit UFW freigeben
Wenn dein Server Webdienste öffentlich anbieten soll, öffnest du gezielt HTTP und HTTPS:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp
Oder wenn ein passendes Profil vorhanden ist:
sudo ufw allow 'Nginx Full'
Ubuntu weist in der Dokumentation darauf hin, dass Kommentare und nachvollziehbare Regeln gute Praxis sind. Genau das lohnt sich später, wenn mehrere Dienste auf dem Host leben.
5. UFW-Regeln dokumentiert und gezielt setzen
Je mehr Dienste dazukommen, desto wichtiger wird Nachvollziehbarkeit. Statt einfach alles offen zu lassen, arbeite lieber konkret:
sudo ufw allow from 10.0.0.0/24 to any port 22 proto tcp comment 'SSH nur aus internem Netz' sudo ufw allow from 100.64.0.0/10 to any port 22 proto tcp comment 'SSH über Tailscale'
Gerade diese Kommentare helfen dir Monate später enorm weiter.
6. Wann nftables die bessere Wahl ist
nftables ist dann interessant, wenn du mehr willst als einfache Portfreigaben. Zum Beispiel:
- saubere Trennung mehrerer Interfaces oder Netze
- komplexere Bedingungslogik
- eigene Sets und strukturierte Regelwerke
- feinere Kontrolle über Forwarding und spezielle Traffic-Flüsse
Für reine Standard-Hosts ist das oft nicht nötig. Wenn du aber bewusst mit Netzsegmenten, VPN, Bridges oder speziellen Routing-Szenarien arbeitest, ist nftables sehr stark.
7. Ein minimalistisches nftables-Grundgerüst
Ein einfaches Regelwerk könnte so aussehen:
table inet filter {
chain input {
type filter hook input priority 0;
policy drop;
iif "lo" accept
ct state established,related accept
tcp dport 22 accept
tcp dport {80, 443} accept
}
chain forward {
type filter hook forward priority 0;
policy drop;
}
chain output {
type filter hook output priority 0;
policy accept;
}
}
Die Logik dahinter ist sehr ähnlich zu UFW:
- Loopback erlauben
- bestehende Verbindungen erlauben
- nur bewusst gewünschte Dienste freigeben
- alles andere blockieren
nftables ist also nicht magisch kompliziert, aber weniger fehlertolerant für Einsteiger, wenn man ohne Struktur daran arbeitet.
8. UFW und nftables nicht chaotisch mischen
Auch wenn UFW intern mit moderneren Linux-Firewall-Mechanismen zusammenarbeitet, solltest du in der Praxis nicht gleichzeitig ungeordnet mit mehreren Werkzeugen an denselben Regeln arbeiten.
Meine klare Empfehlung:
- für einfache Hosts bewusst UFW wählen
- für anspruchsvollere Hosts bewusst nftables wählen
- nicht heute UFW und morgen manuell irgendwo zusätzlich herumregeln, ohne Dokumentation
Saubere Ownership ist hier wichtiger als theoretische Flexibilität.
9. Eine gute Host-Firewall-Denkweise
Unabhängig vom Werkzeug gilt:
- nur Ports öffnen, die wirklich gebraucht werden
- interne Dienste nicht unnötig öffentlich freigeben
- Admin-Zugänge wenn möglich auf Tailscale, VPN oder definierte Netze beschränken
- Reverse Proxy zentral über 80 und 443 veröffentlichen statt viele Einzelports offen zu lassen
Gerade in Docker-Umgebungen wird oft vergessen, dass veröffentlichte Container-Ports ebenfalls bewusst in die Host-Firewall-Strategie gehören.
10. Typische Fehler
- Firewall aktivieren, bevor SSH sauber erlaubt ist
- zu viele historische Testports offen lassen
- Docker veröffentlicht Ports, die in der Gesamtarchitektur gar nicht öffentlich sein sollten
- keine Dokumentation, warum eine Regel existiert
- interne Datenbanken oder Admin-Panels unnötig global freigeben
Wenn du diese Fehler vermeidest, ist schon viel gewonnen.
11. Was ich in der Praxis empfehlen würde
Für die meisten kleineren Ubuntu-Server:
- UFW mit klarer Default-Deny-Strategie
- SSH nur gezielt erlauben
- HTTP und HTTPS nur dort, wo wirklich benötigt
- interne Dienste nur per Tailscale, VPN oder LAN
- Regeln mit Kommentaren dokumentieren
Für komplexere Netzwerktopologien:
- nftables mit bewusst geplantem Regelwerk
- saubere Datei-Struktur und Tests vor Änderungen
- klare Trennung zwischen Input, Forward und Output
12. Fazit
Eine gute Firewall auf Ubuntu muss nicht kompliziert sein. Für viele Server ist UFW der beste pragmatische Weg, weil es schnell, lesbar und zuverlässig genug ist. nftables ist dort stark, wo du bewusst mehr Kontrolle und Struktur brauchst.
Entscheidend ist am Ende nicht nur das Werkzeug, sondern die Disziplin dahinter: wenige offene Ports, klare Regeln, gute Dokumentation und ein Betrieb, bei dem du dich nicht selbst aussperrst.
Tipp:
Wenn dein Server heute noch ohne klare Host-Firewall läuft, starte mit UFW und einem einfachen Default-Deny-Setup. Dieser erste Schritt bringt oft sofort mehr Ordnung und Sicherheit.