UFW – Firewall Quickstart & Best Practices
network firewall security
UFW – Firewall Quickstart & Best Practices
Zielbild
Eingehend: alles blocken
Ausgehend: alles erlauben
Nur benötigte Dienste freigeben
Saubere, nachvollziehbare Regeln
Inhalt
1) Installation & Default-Policy
sudo apt update
sudo apt install -y ufw
# Standardregeln setzen
sudo ufw default deny incoming
sudo ufw default allow outgoing
2) SSH zuerst freigeben (sehr wichtig)
Wichtig: Immer vor dem Aktivieren von UFW sicherstellen, dass dein SSH-Port erlaubt ist – sonst sperrst du dich aus.
A) Aktuellen SSH-Port automatisch erkennen und freischalten
# Port aus der sshd_config lesen, sonst 22
SSH_PORT="$(grep -E '^\s*Port\s+' /etc/ssh/sshd_config 2>/dev/null | awk '{print $2}' | tail -n1)"
: "${SSH_PORT:=22}"
echo "Erkannter SSH-Port: $SSH_PORT"
sudo ufw allow "${SSH_PORT}/tcp"
B) Manuell (Beispiele)
# Standard-SSH (22/tcp)
sudo ufw allow 22/tcp
# Eigener SSH-Port (z. B. 2222)
sudo ufw allow 2222/tcp
3) Web & weitere Dienste
# HTTP/HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# MySQL nur aus bestimmtem Netz erlauben
sudo ufw allow from 10.10.0.0/16 to any port 3306 proto tcp
# SSH-Ratelimiting (Brute-Force erschweren)
# Erlaubt Verbindungen, limitiert neue Versuche pro IP
sudo ufw limit 22/tcp
# Regel an bestimmtes Interface binden (z. B. nur auf WAN-Interface eth0)
sudo ufw allow in on eth0 to any port 22 proto tcp
4) Aktivieren & Status prüfen
# Aktivieren (mit Nachfrage)
sudo ufw enable
# Übersichtliche Ausgaben
sudo ufw status verbose
sudo ufw status numbered
# Regeln neu einlesen (ohne den Status zu ändern)
sudo ufw reload
5) Regeln anpassen/entfernen
# Regel per Nummer löschen (Nummer aus "ufw status numbered")
sudo ufw delete 3
# Konkrete Regel löschen
sudo ufw delete allow 443/tcp
# Nur von einer Quelle erlauben (z. B. Monitoring)
sudo ufw allow from 203.0.113.10 to any port 9100 proto tcp
# Komplett zurücksetzen (setzt Policies wieder auf Default, löscht Regeln)
sudo ufw reset
6) Nützliche Optionen (Logging, IPv6, App-Profile)
# Logging einschalten (low/medium/high/full)
sudo ufw logging on
sudo ufw logging medium
# IPv6 aktivieren (falls Dual-Stack)
sudo sed -i 's/^IPV6=.*/IPV6=yes/' /etc/default/ufw
sudo ufw disable && sudo ufw enable
# Anwendungsprofile (sofern installiert, z. B. Nginx)
sudo ufw app list
sudo ufw allow "Nginx Full"
7) Rezepte (typische Setups)
Minimaler SSH-Only-Server (Port 2222) – eingehend dicht
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp
sudo ufw --force enable
sudo ufw status verbose
Webserver (SSH 2222, HTTP/HTTPS)
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw --force enable
Admin-Zugriff nur vom Büro-Netz (SSH 22 nur aus 203.0.113.0/24)
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow from 203.0.113.0/24 to any port 22 proto tcp
sudo ufw --force enable
Dienste ans Interface binden (z. B. nur WAN eth0)
sudo ufw allow in on eth0 to any port 443 proto tcp
8) Troubleshooting
Kein Zugriff nach Aktivierung
# Provider-KVM/Serielle Konsole nutzen
sudo ufw disable
# SSH-Port erlauben, dann erneut aktivieren
sudo ufw allow 22/tcp && sudo ufw enable
Regel greift nicht
sudo ufw status numbered
# Reihenfolge prüfen und ggf. Regel neu setzen:
sudo ufw delete <NR> && sudo ufw <REGEL>
Welcher Dienst belegt welchen Port
sudo ss -tulpen | grep -E ':(22|80|443|2222)\b'
IPv6 vergessen
# Falls du Dual-Stack nutzt, IPv6-Sektion prüfen/aktivieren (siehe oben)
sudo ufw status verbose
Tipp: So wenige Regeln wie möglich, so spezifisch wie nötig (Quelle, Protokoll, Port, Interface).
Für 95 % der Standardfälle reicht UFW völlig aus – komplexere Szenarien ggf. mit nftables.