Deutsch

Ausgehenden Traffic in private Netze mit UFW blockieren

3 min
VPS/VDS-Hosting

Wenn ein kompromittiertes Skript oder eine falsch konfigurierte Anwendung Adressen in 10.x oder 192.168.x abtastet, verlässt der Traffic Ihren Server und löst oft Abuse-Meldungen des Netzes aus. Ausgehende Verbindungen in private Bereiche zu sperren ist eine einfache Schutzmaßnahme für jeden VPS Linux Infrawire. Diese Anleitung zeigt, wie Sie das mit UFW tun, ohne DNS oder Ihre eigene Konnektivität zu zerstören.

📋 Voraussetzungen

  • Ein VPS mit Root-SSH-Zugang unter Ubuntu 24.04 oder Debian 12 (UFW ist auf beiden verfügbar).
  • Grundkenntnisse zu UFW. Falls es noch nicht installiert ist:
Bash
sudo apt update && sudo apt install -y ufw
  • Eine zweite SSH-Sitzung, die Sie beim Ändern der Firewall offen halten.

🧭 Welche Bereiche gesperrt werden

BereichVerwendung
10.0.0.0/8Privat nach RFC1918
172.16.0.0/12Privat nach RFC1918
192.168.0.0/16Privat nach RFC1918
100.64.0.0/10Carrier-Grade NAT (RFC6598)
169.254.0.0/16IPv4 Link-Local
192.0.0.0/24IETF-Protokollzuweisungen
198.18.0.0/15Benchmarking
fc00::/7IPv6 Unique Local Addresses

Sperren Sie fe80::/10 nicht: IPv6 nutzt Link-Local-Adressen für die Nachbarerkennung und oft für das Standard-Gateway; sperren Sie sie, ist IPv6 komplett tot.

🔍 Zuerst prüfen, was Ihr VPS wirklich braucht

Liegt Ihr Gateway oder DNS-Resolver in einem privaten Bereich, kappt eine pauschale Sperre Ihr Netzwerk. Sehen Sie sich Ihre Konfiguration an, bevor Sie eine Regel hinzufügen:

Bash
ip route ip -6 route cat /etc/resolv.conf resolvectl status | grep -E 'DNS Servers|Link'

Hat ein Resolver oder ein Dienst, auf den Sie angewiesen sind, eine private Adresse (PRIVATE_DNS_IP), erlauben Sie ihn ausdrücklich und setzen Sie diese Regel wie unten gezeigt an die erste Stelle. Ist alles, was Sie nutzen, öffentlich, können Sie diesen Schritt überspringen.

🧱 Methode 1: ufw deny out

Stellen Sie sicher, dass SSH erreichbar bleibt, und setzen Sie dann die Standardrichtlinien. Eingehende Antworten auf Ihre SSH-Sitzungen sind von ausgehenden Regeln für private Bereiche nicht betroffen.

Bash
sudo ufw allow 22/tcp sudo ufw default deny incoming sudo ufw default allow outgoing

Benötigen Sie eine Ausnahme, fügen Sie sie an Position 1 ein, damit sie vor den Sperren ausgewertet wird:

Bash
sudo ufw insert 1 allow out to PRIVATE_DNS_IP port 53

Fügen Sie nun die Sperren hinzu, eine pro Bereich (UFW wertet Regeln der Reihe nach aus, der erste Treffer gewinnt):

Bash
sudo ufw deny out to 10.0.0.0/8 sudo ufw deny out to 172.16.0.0/12 sudo ufw deny out to 192.168.0.0/16 sudo ufw deny out to 100.64.0.0/10 sudo ufw deny out to 169.254.0.0/16 sudo ufw deny out to 192.0.0.0/24 sudo ufw deny out to 198.18.0.0/15 sudo ufw deny out to fc00::/7 sudo ufw enable

ufw enable warnt eventuell, dass SSH-Verbindungen gestört werden könnten; da Port 22 erlaubt ist, antworten Sie mit y. Die Reihenfolge prüfen Sie mit:

Bash
sudo ufw status numbered

📄 Methode 2: before.rules

Möchten Sie einen einzelnen Regelblock, der vor den Benutzerregeln greift, bearbeiten Sie /etc/ufw/before.rules. Legen Sie zuerst eine Sicherung an:

Bash
sudo cp /etc/ufw/before.rules /etc/ufw/before.rules.bak sudo nano /etc/ufw/before.rules

Fügen Sie im Abschnitt *filter nach den Zeilen, die Loopback und bestehende Verbindungen akzeptieren, Folgendes ein:

TEXT
1# Block outbound traffic to private networks 2-A ufw-before-output -d 10.0.0.0/8 -j REJECT 3-A ufw-before-output -d 172.16.0.0/12 -j REJECT 4-A ufw-before-output -d 192.168.0.0/16 -j REJECT 5-A ufw-before-output -d 100.64.0.0/10 -j REJECT 6-A ufw-before-output -d 169.254.0.0/16 -j REJECT

IPv6 hat eine eigene Datei, /etc/ufw/before6.rules, mit der Kette ufw-before-output:

TEXT
-A ufw-before-output -d fc00::/7 -j REJECT

Setzen Sie eine Ausnahme für PRIVATE_DNS_IP direkt über diese Zeilen mit -A ufw-before-output -d PRIVATE_DNS_IP -j ACCEPT. Neu laden:

Bash
sudo ufw reload

REJECT antwortet sofort mit einem Fehler, sodass Anwendungen schnell scheitern, statt auf ein Timeout zu warten. Nutzen Sie -j DROP, wenn Sie Stille bevorzugen.

✅ Überprüfen

Die Regeln müssen geladen sein, gesperrte Ziele müssen fehlschlagen, öffentliche weiter funktionieren:

Bash
sudo ufw status verbose ping -c 1 10.0.0.1 # muss fehlschlagen ping -c 1 192.168.1.1 # muss fehlschlagen curl -m 5 http://10.0.0.1 # muss fehlschlagen ping -c 2 1.1.1.1 # muss gelingen dig +short example.com # muss aufgelöst werden curl -I https://www.debian.org

Bei ufw deny out meldet der fehlgeschlagene Ping typischerweise Operation not permitted. Die Paketzähler bestätigen die Treffer:

Bash
sudo iptables -L ufw-user-output -n -v sudo iptables -L ufw-before-output -n -v

🛠️ Fehlerbehebung

DNS funktioniert nicht mehr. Ihr Resolver liegt in einem privaten Bereich. Korrigieren Sie die Reihenfolge mit sudo ufw status numbered und fügen Sie sudo ufw insert 1 allow out to PRIVATE_DNS_IP port 53 hinzu. Sie können in Ihrer Netzwerkkonfiguration auch auf einen öffentlichen Resolver wechseln.

IPv6 ist nach der Änderung kaputt. Wahrscheinlich haben Sie fe80::/10 oder ein Gateway in fc00::/7 gesperrt. Entfernen Sie die Regel mit sudo ufw delete deny out to fc00::/7 und legen Sie nur das Nötige neu an.

Sie erreichen einen Dienst in einem privaten Netz nicht mehr (VPN, interne API). Fügen Sie mit ufw insert 1 allow out to PRIVATE_IP eine Erlaubnisregel für genau diese Adresse hinzu. Sind Sie von SSH selbst ausgesperrt, nutzen Sie einen beliebigen Konsolenzugang zum Server und führen sudo ufw disable aus.


🔒 Ihr VPS kann private Netze nicht mehr versehentlich scannen: Abuse-Meldungen dieser Art sollten aufhören.

Bleiben Sie über die neuesten Angebote, Rabatte und Sonderaktionen informiert.

Aktionen ansehen

Wir verwenden Cookies

Wir verwenden Analyse-Cookies, um Ihre Erfahrung auf unserer Website zu verbessern. Es werden keine Daten an Dritte verkauft. Mehr erfahren Sie in unserer Datenschutzerklärung.