Benutzer-Werkzeuge

Webseiten-Werkzeuge


sammlung:ufw

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
Hinweis: UFW funktioniert mit beiden Backends transparent. Ein Backend-Wechsel ändert nichts an den UFW-Befehlen.

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
KRITISCH: Bevor UFW aktiviert wird, IMMER SSH (Port 22) freigeben! Sonst verliert man Zugriff auf Remote-Systeme.

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

Best Practices: - SSH immer vor Aktivierung auf Remote-Systemen freigeben - Logging aktivieren zur Fehlersuche: 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
Häufige Fehler vermeiden: - Kritisch: SSH MUSS freigegeben sein, 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

Siehe auch

Quellen

sammlung/ufw.txt · Zuletzt geändert: von 127.0.0.1