Zum Inhalt

Firewall (UFW)

UFW (Uncomplicated Firewall) ist ein benutzerfreundliches Frontend für iptables.

Warum eine Firewall?

Offene Ports = Angriffsfläche

Jeder offene Port ist ein potenzieller Angriffspunkt. Die Firewall schließt alle Ports und öffnet nur die tatsächlich benötigten.

flowchart LR
    subgraph Internet
        A[Angreifer]
        B[Legitimer Traffic]
    end

    subgraph Firewall
        C{UFW}
    end

    subgraph Server
        D[SSH :2222]
        E[HTTP :80]
        F[HTTPS :443]
        G[Andere Ports]
    end

    A -->|Blockiert| C
    B -->|Erlaubt| C
    C -->|Port 2222| D
    C -->|Port 80| E
    C -->|Port 443| F
    C -.->|Blockiert| G

1. UFW installieren

UFW ist bei Ubuntu meist vorinstalliert. Falls nicht:

sudo apt install ufw -y

2. Default-Policies setzen

Reihenfolge beachten

Wichtig: Konfiguriere zuerst die SSH-Regel, bevor du UFW aktivierst! Sonst sperrst du dich aus.

Setze die Standard-Policies:

# Alle eingehenden Verbindungen blockieren
sudo ufw default deny incoming  # (1)!

# Alle ausgehenden Verbindungen erlauben
sudo ufw default allow outgoing  # (2)!
  1. Standardmäßig wird ALLES blockiert - "Deny by Default"
  2. Der Server kann nach außen kommunizieren (Updates, etc.)

3. SSH-Regel hinzufügen

KRITISCH: VOR dem Aktivieren!

Diese Regel muss vor dem Aktivieren von UFW gesetzt werden!

sudo ufw allow 2222/tcp comment 'SSH Custom Port'

SSH

Aktiviere den Zugriff via SSH:

sudo ufw allow 2222/tcp comment 'SSH'
Warum kein Rate-Limit?

Eigentlich wäre hier ein Rate-Limit sinnvoll, da somit automatisierte Brute-Force-Angriffe gestoppt werden. Jedoch verwendet Coolify selbst den SSH Port für das Management der Server. Dabei werden häufig neue Verbindungen aufgebaut, was dann zur automatisierten Blockierung führt.

TODO: Anfragen aus dem Internet limitieren, aber interne Zugriff von Coolify nicht.

4. HTTP/HTTPS-Regeln hinzufügen

Für Coolify und Web-Anwendungen:

# HTTP (für Let's Encrypt und Redirects)
sudo ufw allow 80/tcp comment 'HTTP'

# HTTPS (verschlüsselter Traffic)
sudo ufw allow 443/tcp comment 'HTTPS'

5. UFW aktivieren

Letzte Warnung

Stelle sicher, dass die SSH-Regel korrekt konfiguriert ist!

sudo ufw enable

Bestätige mit y:

Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

6. Status überprüfen

Zeige den aktuellen Firewall-Status:

sudo ufw status verbose

Erwartete Ausgabe:

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

To                         Action      From
--                         ------      ----
2222/tcp                   ALLOW       Anywhere                   # SSH
80/tcp                     ALLOW       Anywhere                   # HTTP
443/tcp                    ALLOW       Anywhere                   # HTTPS
2222/tcp (v6)              ALLOW       Anywhere (v6)              # SSH
80/tcp (v6)                ALLOW       Anywhere (v6)              # HTTP
443/tcp (v6)               ALLOW       Anywhere (v6)              # HTTPS

Zusammenfassung

Nach Abschluss dieses Abschnitts:

  • UFW installiert und konfiguriert
  • Default-Policy: deny incoming, allow outgoing
  • SSH-Port erlaubt
  • HTTP/HTTPS für Web-Traffic erlaubt
  • Firewall aktiviert