Inhaltsverzeichnis
UFW Firewall
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.
Übersicht
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.
iptables vs. nftables Backend
UFW kann auf zwei verschiedenen Firewall-Backends arbeiten:
iptables (klassisch):
- Traditionelles Linux-Firewall-System seit Kernel 2.4
- Besteht aus mehreren Tools: iptables, ip6tables, arptables, ebtables
- Weit verbreitet und bewährt
- Performance-Nachteile bei vielen Regeln
nftables (modern):
- Nachfolger von iptables seit Kernel 3.13
- Vereinheitlichte Syntax für IPv4, IPv6, ARP, Bridge
- Bessere Performance und Skalierbarkeit
- Wird zum neuen Standard
Backend feststellen
# 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
Backend wechseln
# 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
Voraussetzungen
- UFW installiert (meist auf Ubuntu/Debian standard)
- Root-Privilegien oder Sudo-Zugriff
- Kenntnis von Ports und Protokollen (TCP/UDP)
- SSH sollte vor UFW-Aktivierung freigegeben werden!
Anleitung
Installation und Aktivierung
# 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
Ports und Services freigeben
# 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
Regeln blockieren und löschen
# 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
IP-Adressen und Netzwerke
# 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
Firewall-Richtlinien
# 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 und Debugging
# 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
Häufige Anwendungsszenarien
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
Hinweise
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
