← Zurück

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.