Schutz & Sicherheit

Velocity-Netzwerk absichern: Niemand kommt am Proxy vorbei

Quele, Gründer von BlackProtectStand 7. Oktober 20268 Min. Lesezeit
Kurz gesagt

Backend-Server hinter Velocity laufen mit online-mode=false. Wer sie direkt erreicht, kann jeden Namen benutzen, auch deinen.

Schalte Modern Forwarding mit geheimem Schlüssel ein und lass die Backends nur vom Proxy erreichen. Danach testest du, dass der direkte Weg wirklich zu ist.

Inhalt
  1. Das Risiko
  2. Schritt 1: Modern Forwarding einschalten
  3. Schritt 2: Backends nur für den Proxy öffnen
  4. Schritt 3: Vor Velocity nur den Schutz durchlassen
  5. Schritt 4: Testen, ob der direkte Weg zu ist
  6. Häufige Fragen

Das Risiko

In einem Netzwerk prüft Velocity (der Proxy, auf dem deine Spieler landen), wer sich einloggt. Die Server dahinter, die Backends (Lobby, Citybuild, SkyPvP …), laufen deshalb mit online-mode=false: Sie verlassen sich darauf, dass der Proxy schon geprüft hat.

Ist der Port eines Backends aber aus dem Internet erreichbar, kann sich jemand direkt damit verbinden, am Proxy vorbei. Ohne weitere Absicherung kann er dabei jeden Namen angeben, auch deinen. Hat dein Name OP-Rechte, gehört der Server in diesem Moment ihm.

Offene Ports werden gefunden

Scanner-Bots durchsuchen das ganze Internet nach Minecraft-Servern, ein offener Port fällt meist innerhalb von Stunden auf. Mehr dazu in Fremde Namen und IPs in den Server-Logs.

Schritt 1: Modern Forwarding einschalten

Modern Forwarding heißt: Velocity schickt die Spielerdaten mit einem geheimen Schlüssel an die Backends, und Paper lässt nur Verbindungen mit diesem Schlüssel rein. Wer den Schlüssel nicht kennt, kommt nicht auf das Backend, auch wenn der Port offen wäre.

In der velocity.toml:

toml
player-info-forwarding-mode = "modern"

Den Schlüssel legt Velocity in der Datei forwarding.secret an (im selben Ordner). Behandle ihn wie ein Passwort.

Auf jedem Backend in config/paper-global.yml:

yaml
proxies:
  velocity:
    enabled: true
    online-mode: true
    secret: "inhalt-deiner-forwarding.secret"
  • online-mode muss genauso stehen wie online-mode in deiner velocity.toml. Bei einem Cracked-Netzwerk also beide auf false.
  • In der server.properties jedes Backends bleibt online-mode=false, und in der spigot.yml steht settings.bungeecord: false.
  • Auf Paper 1.18.2 und älter heißen die Einstellungen anders: settings.velocity-support in der paper.yml.
Noch BungeeCord oder Waterfall?

Das alte BungeeCord-Forwarding hat keinen Schlüssel und lässt sich fälschen. Installiere dort BungeeGuard auf dem Proxy und auf jedem Backend und trag denselben Token ein, oder steig auf Velocity um.

Schritt 2: Backends nur für den Proxy öffnen

Der Schlüssel schützt, die Firewall ist die zweite Tür. Ein Backend muss aus dem Internet gar nicht erreichbar sein, nur von deinem Velocity aus.

  1. Alles auf einem Server?

    Dann trag in der server.properties jedes Backends server-ip=127.0.0.1 ein. Das Backend hört dann nur noch auf den eigenen Rechner, und Velocity verbindet sich über 127.0.0.1:<Port>. Von außen ist es nicht mehr erreichbar.

  2. Backends auf anderen Servern?

    Dann erlaubst du den Backend-Port nur für die IP deines Velocity, zum Beispiel mit ufw:

Terminal
sudo ufw allow from <IP-deines-Velocity> to any port 25566 proto tcp
sudo ufw deny 25566/tcp
Docker und Pterodactyl

Docker umgeht ufw: Ports, die ein Container freigibt, sind trotz dieser Regeln erreichbar. Nutzt du Docker oder ein Panel wie Pterodactyl, richte die Regel in der Firewall deines Hosters ein, oder frag uns im Discord.

Schritt 3: Vor Velocity nur den Schutz durchlassen

Dasselbe Prinzip gilt eine Stufe weiter vorn: Läuft dein Netzwerk hinter BlackProtect, muss auch Velocity nur von unseren Filter-Servern erreichbar sein. Sonst kann ein Angreifer mit der echten IP am Schutz vorbei angreifen. Die aktuellen Adressen und Befehle, live geladen:

  • Frankfurt am Main194.62.248.59
  • Nürnberg185.217.124.16
Terminal
# SSH zuerst erlauben, sonst sperrst du dich aus!
# (Läuft SSH bei dir auf einem anderen Port, trag ihn statt 22 ein.)
sudo ufw allow 22/tcp

# Minecraft nur für die Filter-Server von BlackProtect
sudo ufw allow from 194.62.248.59 to any port 25565 proto tcp
sudo ufw allow from 185.217.124.16 to any port 25565 proto tcp

# Eine alte Freigabe für alle entfernen (falls vorhanden)
sudo ufw delete allow 25565/tcp

sudo ufw enable
sudo ufw status

Läuft dein Velocity nicht auf Port 25565, ersetze den Port in den Befehlen. Mehr dazu in Server-IP verstecken.

Schritt 4: Testen, ob der direkte Weg zu ist

  1. Direkt verbinden versuchen

    Trag im Minecraft-Client unter Server hinzufügen die IP und den Port eines Backends ein, also nicht die Adresse deines Netzwerks. Mach das von einem anderen Internet aus, zum Beispiel über das Handy als Hotspot.

  2. Ergebnis lesen

    Richtig ist: Der Server erscheint gar nicht oder die Verbindung wird abgelehnt. Kommst du auf das Backend, ist es noch offen, dann prüf Schritt 1 und 2.

  3. Über das Netzwerk joinen

    Zum Schluss ganz normal über deine Domain joinen. Klappt das, stimmen Schlüssel und Firewall.

Häufige Fragen

Reicht Modern Forwarding, wenn ich keine Firewall einrichten kann?

Es ist der wichtigste Schritt: Ohne Schlüssel kommt niemand mit fremdem Namen auf ein Backend. Die Firewall ist die zweite Absicherung, falls einmal eine Einstellung nicht stimmt. Am besten machst du beides.

Was ist der Unterschied zu PROXY protocol?

PROXY protocol gibt die echte Spieler-IP vom DDoS-Schutz an Velocity weiter. Modern Forwarding gibt Name, UUID und IP von Velocity an die Backends weiter. Bei einem Netzwerk hinter BlackProtect brauchst du beides.

Muss ich nach der Umstellung meine Spieler informieren?

Nein. Für Spieler ändert sich nichts, sie joinen weiter über dieselbe Adresse. Nur wer bisher direkt auf ein Backend gejoint ist, kommt dort nicht mehr rein, und genau das ist gewollt.