UFW Firewall auf VPS einrichten Anleitung
Lernen Sie die Einrichtung von UFW auf Ihrem VPS. Vermeiden Sie den Ausschluss durch SSH-Sperren und sichern Sie Ihren Server mit einer Default-Deny-Policy ab.
Was UFW ist und warum Sie es benötigen
UFW steht für Uncomplicated Firewall. Der Name ist Programm. Es handelt sich um eine benutzerfreundliche Schnittstelle für die Firewall des Linux-Kernels. Anstatt komplexe Regeln zu schreiben, verwenden Sie kurze Befehle wie ufw allow 22/tcp. Auf einem neuen VPS ist standardmäßig jeder lauschende Dienst über das Internet erreichbar. Eine Firewall kehrt dieses Verhalten um: Sie verweigern zunächst allen Zugriff und erlauben nur die wenigen Ports, die Sie tatsächlich benötigen. Diese Änderung reduziert Ihre Angriffsfläche mit etwa vier Befehlen erheblich.
Bevor Sie die Konfiguration ändern, müssen Sie wissen, welche Dienste lauschen, da die Firewall über deren Zugriff entscheidet. Anzeigen der lauschenden Dienste mit ss -tlnp ist der richtige erste Schritt.
Die eine Regel, um sich nicht selbst auszusperren
Dies ist der Fehler, der viele Nutzer von Firewalls abschreckt. Sie aktivieren UFW mit einer Default-Deny-Policy, haben aber SSH nicht erlaubt. Sobald die Firewall aktiv ist, wird die eigene Verbindung unterbrochen und ein erneuter Zugriff ist nicht mehr möglich. Vermeiden Sie dies, indem Sie SSH immer erlauben, bevor Sie UFW aktivieren. Das ist der entscheidende Punkt; die folgenden Schritte führen dies in der sicheren Reihenfolge aus.
Falls es dennoch passiert, sind Sie nicht gefangen: Die Web-Konsole Ihres Providers funktioniert über VNC oder Serial und nutzt nicht SSH. Sie können sich dort anmelden und ufw disable ausführen oder die fehlende Regel hinzufügen.
Schritt 1: Standard-Policies festlegen
Teilen Sie UFW zuerst mit, dass alle eingehenden Verbindungen abgelehnt und alle ausgehenden Verbindungen zugelassen werden sollen:
sudo ufw default deny incoming
sudo ufw default allow outgoingdeny incoming ist der entscheidende Teil. Das bedeutet, dass jeder Port ohne explizite Allow-Regel für externe Verbindungen geschlossen ist, selbst wenn ein Dienst auf diesem Port lauscht. allow outgoing ermöglicht es Ihrem Server, das Internet für Updates und ähnliche Aufgaben normal zu erreichen. Diese beiden Befehle ändern nur die Policy; es wird nichts erzwungen, bis Sie UFW in Schritt 3 aktivieren.
Schritt 2: Erlauben Sie nur die benötigten Ports
Bevor Sie die Firewall aktivieren, öffnen Sie SSH, um die Verbindung aufrechtzuerhalten:
sudo ufw allow 22/tcpUFW kann SSH auch für Sie drosseln: sudo ufw limit 22/tcp erlaubt den Port, blockiert aber jede Adresse, die sechs oder mehr Verbindungen innerhalb von dreißig Sekunden aufbaut. Dies verhindert Brute-Force-Skripte ohne zusätzliche Software.
Falls Sie einen Webserver betreiben, erlauben Sie auch HTTP und HTTPS:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpErlauben Sie nur die Dienste, die Sie öffentlich bereitstellen. Eine Datenbank wie Postgres auf Port 5432 sollte fast nie eine Allow-Regel erhalten. Binden Sie diese stattdessen an 127.0.0.1, damit sie nur lokal auf dem Rechner erreichbar ist. Jeder geöffnete Port ist ein potenzielles Einfallstor, das verteidigt werden muss; halten Sie die Liste daher kurz.
Sie können die vollständige Sequenz der ufw Befehle für Ihren Server hier erstellen und diese anschließend nacheinander ausführen:
Schritt 3: Aktivieren und Status prüfen
sudo ufw enableDie Warnung weist darauf hin, dass der Befehl bestehende SSH-Verbindungen unterbrechen kann. Da Sie 22/tcp in Schritt 2 erlaubt haben, bleibt Ihre Sitzung bestehen. Überprüfen Sie das Ergebnis:
sudo ufw status verboseStatus: active
Default: deny (incoming), allow (outgoing)
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
80/tcp ALLOW IN AnywhereAchten Sie hier auf zwei Details. Status: active bedeutet, dass die Firewall läuft. Jede Regel erscheint doppelt: einmal im Klartext und einmal mit (v6). Letzteres zeigt an, dass UFW sowohl IPv6 als auch IPv4 abdeckt. Falls die (v6)-Zeilen fehlen, ist Ihr IPv6-Bereich nicht verwaltet. Dies stellt eine eigene Fehlerquelle dar, die im IPv6-Firewall-Post behandelt wird.
Spätere Verwaltung von Regeln
Um Regeln mit Nummern anzuzeigen, damit Sie eine Regel entfernen können:
sudo ufw status numbered
sudo ufw delete 3Um einen Port nur für eine bestimmte Adresse freizugeben (eine gute Methode, um einen Admin-Dienst nur für Ihre eigene IP zu öffnen):
sudo ufw allow from 10.0.0.24 to any port 5432 proto tcpEine Firewall stellt nur eine Sicherheitsebene dar. Sie kontrolliert, welche Anfragen einen Port erreichen können. Sie verhindert jedoch keine Brute-Force-Angriffe auf einen offenen Port, wie zum Beispiel SSH. Um dies zu verhindern, nutzen Sie Fail2ban vor SSH, um wiederholte Angriffe zu sperren. Defense in Depth bedeutet, dass jede Ebene die Schwächen der anderen kompensiert.
Eine Firewall ist nur sinnvoll, wenn Sie wissen, was Ports sind und wie Dienste lauschen, und die Konfiguration ist ein Schritt in den ersten 10 Minuten auf einem neuen VPS.
FAQ
Trennt das Aktivieren von UFW meine SSH-Sitzung?
Nein, wenn Sie SSH zuerst erlauben. Führen Sie sudo ufw allow 22/tcp vor sudo ufw enable aus. Die Verbindung bleibt bestehen, da die Firewall den Port 22 nun zulässt. Gefährlich ist das Aktivieren einer Firewall mit einer Default-Deny-Policy ohne SSH-Allow-Regel, da dies die Verbindung unterbricht. Falls dies geschieht, melden Sie sich über die VNC- oder Serial-Konsole Ihres Providers an und führen Sie ufw disable aus.
Welche Ports sollte ich auf einem VPS öffnen?
Nur die Ports, die für die öffentliche Nutzung bereitgestellt werden. SSH (22/tcp) für die Verwaltung des Servers sowie HTTP und HTTPS (80/tcp, 443/tcp), falls Sie eine Website betreiben. Lassen Sie alle anderen Ports gesperrt. Interne Dienste wie Datenbanken sollten an 127.0.0.1 gebunden sein und keine Firewall-Regel erhalten, damit sie aus dem Netzwerk nicht erreichbar sind.
Unterstützt UFW IPv6?
Auf modernen Ubuntu-Systemen ja: IPV6=yes ist in /etc/default/ufw gesetzt. Daher gilt jede Regel für beide Protokoll-Stacks und ufw status zeigt die IPv6-Regeln mit einem (v6) Suffix an. Mögliche Fehlerquellen sind in der IPv6-Firewall-Falle beschrieben.
Wie entferne ich eine UFW-Regel?
Führen Sie sudo ufw status numbered aus, um die Regeln mit Indexnummern aufzulisten. Nutzen Sie anschließend sudo ufw delete N, wobei N die Nummer der zu löschenden Regel ist. Sie können Regeln auch durch Spezifikation löschen, zum Beispiel mit sudo ufw delete allow 80/tcp.
Wie erlaube ich einen Port nur für eine bestimmte IP-Adresse?
Verwenden Sie eine from Regel anstelle einer einfachen allow Regel. Um nur Ihrer Büro-Adresse den Zugriff auf PostgreSQL zu erlauben, führen Sie sudo ufw allow from 10.0.0.10 to any port 5432 proto tcp aus. Bei einer Default-Deny-Policy bleibt der Port für alle geschlossen, bis eine Regel ihn öffnet. Diese from Regel ist der einzige Zugang: Das gesamte Internet bleibt blockiert und nur die angegebene Adresse erhält Zugriff. Fügen Sie keine einfache allow 5432/tcp Regel hinzu, da dies den Port für alle öffnen würde. Dies ist der sicherste Weg, um eine Datenbank oder ein Admin-Panel freizugeben. Überprüfen Sie dies mit sudo ufw status verbose, was die Quelladresse neben dem Port anzeigt.