Kurzfassung: UFW (Uncomplicated Firewall) ist eine benutzerfreundliche Schnittstelle zur iptables/netfilterl Firewall unter Linux. Sie ermöglicht das einfache Erstellen von Firewall-Regeln, Freigaben von Ports und Kontrolle des Netzwerkverkehrs. Zielgruppe: Systemadministratoren zur Netzwerksicherheit.
UFW ist ein vereinfachtes Frontend für iptables/netfilter oder nftables, das besonders auf Ubuntu standardmäßig mitgeliefert wird. Im Gegensatz zu direkter iptables-Bearbeitung bietet UFW eine intuitive Befehlszeilenschnittstelle. UFW arbeitet nach dem Prinzip „alles blockieren, außer explizit erlaubt“ und ist daher sehr sicher für Anfänger geeignet.
UFW kann auf zwei verschiedenen Firewall-Backends arbeiten:
iptables (klassisch):
nftables (modern):
# Aktives Firewall-Backend erkennen sudo update-alternatives --display iptables # Ausgabe zeigt: # iptables - auto mode # link best version is /usr/sbin/iptables-nft → nftables Backend # link currently points to /usr/sbin/iptables-nft # Alternativen: # /usr/sbin/iptables-legacy → klassisches iptables # /usr/sbin/iptables-nft → nftables Backend # Alternative Prüfung via Regeln sudo iptables -V # Version anzeigen sudo nft list ruleset # nftables Regeln (wenn leer, kein nftables aktiv) # Welche Kernel-Module geladen sind lsmod | grep -E "ip_tables|nf_tables" # ip_tables → iptables Backend # nf_tables → nftables Backend
# Zu nftables-Backend wechseln (empfohlen für neue Systeme) sudo update-alternatives --set iptables /usr/sbin/iptables-nft sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-nft # Zu klassischem iptables zurück sudo update-alternatives --set iptables /usr/sbin/iptables-legacy sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy # Nach dem Wechsel UFW neu starten sudo systemctl restart ufw
# UFW installieren (wenn nicht vorhanden) sudo apt install ufw # UFW Status prüfen sudo ufw status # WICHTIG: SSH vor Aktivierung erlauben sudo ufw allow 22/tcp # UFW aktivieren sudo ufw enable # UFW deaktivieren sudo ufw disable # UFW und alle Regeln zurücksetzen sudo ufw reset
# Spezifischen Port freigeben sudo ufw allow 80/tcp sudo ufw allow 443/tcp # Port mit UDP freigeben sudo ufw allow 53/udp # Port-Bereich freigeben sudo ufw allow 6000:6007/tcp # Service nach Namen freigeben sudo ufw allow ssh sudo ufw allow http sudo ufw allow https sudo ufw allow dns # Service auf spezifischem Interface sudo ufw allow in on eth0 to any port 22
# Port blockieren sudo ufw deny 23/tcp # Regel löschen sudo ufw delete allow 80/tcp # Regel nach Nummer löschen sudo ufw delete 3 # Alle Regeln mit Nummern anzeigen sudo ufw status numbered # Eingehenden Traffic blockieren (default) sudo ufw default deny incoming # Ausgehenden Traffic erlauben sudo ufw default allow outgoing
# Traffic von bestimmter IP erlauben sudo ufw allow from 192.168.1.100 # Traffic von IP mit spezifischem Port sudo ufw allow from 192.168.1.100 to any port 22 # Traffic vom ganzen Netzwerk erlauben sudo ufw allow from 192.168.1.0/24 # IPv6-Adresse sudo ufw allow from 2001:db8::1 # Traffic von Netzwerk auf Port sudo ufw allow in on eth0 from 192.168.1.0/24 to any port 22 # Traffic blockieren sudo ufw deny from 192.168.1.50
# Standardrichtlinie anzeigen sudo ufw status verbose # Richtlinie ändern sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw default reject routed # Detaillierte Anzeige mit Nummern sudo ufw status numbered
# Logging aktivieren sudo ufw logging on # Logging Level ändern sudo ufw logging high # Logs anzeigen sudo tail -f /var/log/ufw.log # Systemd-Logs sudo journalctl -u ufw -n 50 # Raw iptables Regeln sudo iptables -L -n -v # Wenn nftables Backend, auch nftables Regeln prüfen sudo nft list ruleset
Web-Server (HTTP + HTTPS):
sudo ufw allow ssh sudo ufw allow http sudo ufw allow https sudo ufw enable
SSH mit beschränktem Zugriff:
sudo ufw allow from 192.168.1.0/24 to any port 22 sudo ufw deny 22/tcp sudo ufw enable
Mail-Server:
sudo ufw allow 25/tcp # SMTP sudo ufw allow 465/tcp # SMTPS sudo ufw allow 110/tcp # POP3 sudo ufw allow 143/tcp # IMAP sudo ufw allow 993/tcp # IMAPS sudo ufw allow 995/tcp # POP3S
DNS-Server:
sudo ufw allow 53/tcp sudo ufw allow 53/udp
Rate Limiting gegen Brute-Force:
sudo ufw limit ssh sudo ufw limit http
sudo ufw logging on
- Regeln mit Nummern anzeigen: sudo ufw status numbered
- limit für Port-Scanning-Schutz nutzen: sudo ufw limit ssh
- allow vor deny setzen (Reihenfolge matters)
- Regeln testen, bevor UFW aktiviert wird
ufw reset löscht ALLE Regeln - es gibt kein Backup!
- default deny incoming ist restriktiv - alle Services einzeln erlauben
- Port-Bereich-Syntax: 6000:6007 nicht 6000-6007
- Interface-Namen checken (eth0, wlan0, enp0s3, docker0)
- Keine Unterscheidung: allow from IP erlaubt auf allen Ports