UFW erklärt — Uncomplicated Firewall für Linux-Server
Direkte Antwort: UFW (Uncomplicated Firewall) ist Ubuntus Standard-Firewall-Frontend für iptables/nftables. Sie regelt, welche Netzwerk-Ports von außen erreichbar sind. Auf einem OpenClaw-Server stellst du sie auf "default deny" und öffnest nur die nötigen Ports (SSH, HTTPS, ggf. Webhook).
Was ist UFW?
UFW steht für Uncomplicated Firewall und ist genau das: ein einfaches Frontend für die komplexen Linux-Firewall-Subsysteme iptables und nftables. Statt dich mit kryptischen Regelsyntaxen herumzuschlagen, schreibst du ufw allow 22 — und UFW kümmert sich um den Rest.
Auf Ubuntu-Servern (z.B. einem frischen Hetzner-VPS für OpenClaw) ist UFW vorinstalliert, aber initial deaktiviert. Es zu aktivieren ist eine der ersten Maßnahmen beim Hardening.
Kontext
Linux hat von Haus aus mit iptables ein extrem mächtiges Firewall-System. Mächtig, aber auch grauenhaft kompliziert. Eine simple Regel sieht z.B. so aus:
iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
UFW versteckt diese Komplexität hinter einem freundlichen Interface. Hinter den Kulissen schreibt es trotzdem iptables/nftables-Regeln, also profitierst du von der Robustheit, ohne den Aufwand.
Andere Linux-Distros nutzen oft firewalld (Fedora/RHEL) oder nftables direkt — UFW ist Ubuntu-typisch.
Funktionsweise
UFW arbeitet nach dem Prinzip "Default Policy + Exceptions":
- Default Deny für eingehenden Traffic (alles wird geblockt)
- Default Allow für ausgehenden Traffic (Server darf raus)
- Spezifische Regeln öffnen einzelne Ports oder erlauben einzelne IPs
So ist dein Server per Default sicher — niemand kommt rein. Du öffnest nur, was wirklich nötig ist.
Praxis-Beispiel
Erstmaliges Setup auf einem OpenClaw-Server:
# Regeln definieren BEVOR du UFW aktivierst (sonst sperrst du dich aus)
sudo ufw default deny incoming
sudo ufw default allow outgoing
# SSH erlauben (sonst bist du raus!)
sudo ufw allow 22/tcp
# Optional: Web-UI fuer OpenClaw oder Reverse-Proxy
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# UFW aktivieren
sudo ufw enable
# Status pruefen
sudo ufw status verbose
Output von sudo ufw status verbose:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
Wichtige Befehle
# Port erlauben
sudo ufw allow 22/tcp
sudo ufw allow 8080
# Port nur fuer eine IP erlauben
sudo ufw allow from 1.2.3.4 to any port 22
# Port nur fuer ein Subnetz erlauben
sudo ufw allow from 192.168.1.0/24 to any port 22
# Port wieder schliessen
sudo ufw delete allow 22/tcp
# Regel nach Nummer loeschen
sudo ufw status numbered
sudo ufw delete 3
# Verbindungen blocken (anstatt deny -> reject)
sudo ufw reject 25
# UFW komplett ausschalten (z.B. zum Debuggen)
sudo ufw disable
# Reset aller Regeln
sudo ufw reset
Standard-Setup für OpenClaw-Server
Empfohlene UFW-Konfiguration für einen typischen OpenClaw-Server auf Hetzner:
sudo ufw default deny incoming
sudo ufw default allow outgoing
# SSH: nur eigene IP erlauben (oder Tailscale)
sudo ufw allow from 1.2.3.4 to any port 22 proto tcp
# Alternative: SSH offen lassen, mit fail2ban absichern
# sudo ufw allow 22/tcp
# Wenn du Web-UI/Reverse-Proxy nutzt
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# WhatsApp/Telegram: keine Eingaenge noetig
# (Bot pollt selbst raus)
sudo ufw enable
UFW + fail2ban
UFW und fail2ban ergänzen sich:
- UFW macht statische Regeln (welche Ports überhaupt offen)
- fail2ban reagiert dynamisch (wer zu oft daneben tippt, fliegt raus)
Beide gleichzeitig laufen lassen ist Best Practice.
UFW + Tailscale
Wenn du Tailscale als Mesh-VPN nutzt, kannst du SSH komplett aus der öffentlichen Welt ziehen:
# SSH nur aus Tailscale-Netz erlauben
sudo ufw allow in on tailscale0 to any port 22
# Public SSH wieder zuschliessen
sudo ufw delete allow 22/tcp
Damit ist dein SSH öffentlich gar nicht mehr erreichbar — nur über Tailscale.
Logging
UFW loggt blockierte Pakete (auf Default-Level "low"). Logs sind in /var/log/ufw.log oder via journalctl -k | grep UFW.
Logging-Level einstellen:
sudo ufw logging low # Standard
sudo ufw logging medium # mehr Details
sudo ufw logging high # vollständig (kann fluten)
sudo ufw logging off # aus
Häufige Fehler / Stolperfallen
- SSH vergessen vor enable: Klassiker. Wenn du UFW aktivierst, ohne vorher SSH zu erlauben, fliegst du raus. Hetzner Console-Feature rettet dich, aber besser vermeiden.
- IPv6 nicht beachten: Default schaltet UFW IPv4 + IPv6, manche Setups nur IPv4.
sudo ufw allow 22deckt beide ab, abersudo ufw allow from 1.2.3.4nur IPv4. - UFW + Docker = Verwirrung: Docker manipuliert iptables an UFW vorbei. Container-Ports sind oft trotz UFW offen. Workaround:
--iptables=falsein Docker oder UFW-Docker-Bridge. - Port "spaeter mal" geöffnet vergessen: Audit deine UFW-Regeln regelmäßig.
sudo ufw status numberedund alles raus, was du nicht aktiv brauchst. - Default Allow für Eingehendes: Niemals. Das ist quasi "Firewall aus". Default Deny ist Pflicht.
Verwandte Begriffe
Vollständiges Server-Hardening: Modul 2 der Masterclass.