tags:

  • linux
  • security
  • devops
  • ufw
  • vps date: 2026-10-05

Linux: UFW Firewall Konfiguration (Web + Tailscale SSH)

Diese Notiz beschreibt die grundlegende Absicherung eines Linux-VPS mittels UFW (Uncomplicated Firewall). Das Ziel ist es, den Zugriff von außen auf das Notwendigste (HTTP/HTTPS) zu beschränken und administrative Zugriffe (SSH) ausschließlich über ein sicheres VPN wie [[Tailscale]] zu erlauben.


1. Standard-Richtlinien (Default Policies)

Zunächst wird der gesamte eingehende Datenverkehr standardmäßig blockiert und ausgehender Datenverkehr uneingeschränkt erlaubt.

sudo ufw default deny incoming
sudo ufw default allow outgoing

2. Firewall-Regeln definieren

SSH nur über Tailscale erlauben

Um den Server nicht auszusperren, während Port 22 global geschlossen wird, binden wir den SSH-Zugriff exklusiv an das Tailscale-Interface (tailscale0). Dadurch sind Anfragen über die öffentliche IP wirkungslos.

Bash

sudo ufw allow in on tailscale0 to any port 22 proto tcp

Öffentliche Web-Ports freigeben

Für den Nginx-Webserver und Let’s Encrypt werden die Standardports für HTTP und HTTPS geöffnet:

Bash

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

[!note] Hinweis Falls zuvor eine globale Regel wie sudo ufw allow OpenSSH aktiv war, muss diese unbedingt entfernt werden, damit SSH nicht mehr öffentlich erreichbar ist (sudo ufw delete allow OpenSSH).

3. UFW aktivieren und prüfen

Nachdem alle Regeln konfiguriert sind, wird die Firewall eingeschaltet:

Bash

sudo ufw enable

Status-Kontrolle mit erweiterten Details

Mit dem folgenden Befehl lässt sich die vollständige Konfiguration inklusive aktiver Interfaces und Standard-Policies überprüfen:

Bash

sudo ufw status verbose

Erwartete Ausgabe:

Plaintext

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)

To                         Action     From
--                         ------     ----
80/tcp                     ALLOW IN   Anywhere                  
443/tcp                    ALLOW IN   Anywhere                  
22/tcp on tailscale0       ALLOW IN   Anywhere                  
80/tcp (v6)                ALLOW IN   Anywhere (v6)             
443/tcp (v6)               ALLOW IN   Anywhere (v6)             
22/tcp (v6) on tailscale0  ALLOW IN   Anywhere (v6)             

4. Nützliche Befehle im Alltag

  • Status anzeigen: sudo ufw status

  • Firewall neu laden: sudo ufw reload

  • Regeln nummeriert anzeigen (zum Löschen): sudo ufw status numbered

  • Bestimmte Regel löschen: sudo ufw delete <Nummer>