Schützen Sie Ihren Minecraft-Heimserver vor DDOS-Angriffen mit AWS

Sie möchten einen Minecraft-Server von Ihrem Zuhause aus betreiben, ohne Ihre persönliche IP-Adresse preiszugeben? Das ist absolut möglich! Richten Sie einfach einen kostenlosen Proxy mit Amazon Web Services (AWS) ein, um Ihren Server vor potenziellen Denial-of-Service-Angriffen zu schützen. Wir zeigen Ihnen, wie das geht.

Diese Anleitung ist nicht nur für Minecraft-Server gedacht, sondern funktioniert mit jedem beliebigen Gameserver. Der Proxy leitet lediglich den Datenverkehr auf einem bestimmten Port weiter. Sie müssen lediglich den Standardport 25565 von Minecraft an den Port anpassen, auf dem Ihr jeweiliger Gameserver läuft.

Wie funktioniert das im Detail?

Nehmen wir an, Sie möchten einen Minecraft-Server hosten und ihn für das Internet zugänglich machen. Das ist nicht so schwierig, wie es vielleicht klingt. Minecraft-Server sind relativ einfach zu installieren, nutzen meist nur einen Verarbeitungsthread und selbst stark modifizierte Server benötigen mit einer Handvoll Spielern online in der Regel nicht mehr als 2 bis 3 GB RAM. Sie könnten einen Server problemlos auf einem alten Laptop oder im Hintergrund auf Ihrem Desktop-Rechner betreiben, anstatt dafür extra jemanden zu bezahlen.

Damit sich andere Spieler jedoch mit Ihrem Server verbinden können, müssten Sie normalerweise Ihre IP-Adresse preisgeben. Das birgt einige Risiken. Zum einen stellt es ein erhebliches Sicherheitsrisiko dar, insbesondere wenn Ihr Router noch das Standard-Admin-Passwort verwendet. Zum anderen sind Sie dadurch anfälliger für Distributed Denial-of-Service-Angriffe (DDoS), die nicht nur Ihren Minecraft-Server lahmlegen, sondern im schlimmsten Fall auch Ihre gesamte Internetverbindung unterbrechen könnten, bis der Angriff abflaut.

Anstatt anderen Personen zu erlauben, sich direkt mit Ihrem Router zu verbinden, können Sie stattdessen einen kleinen Linux-Server bei einem Cloud-Anbieter wie Amazon Web Services, Google Cloud Platform oder Microsoft Azure mieten – diese bieten alle kostenlose Kontingente an. Dieser Server muss nicht unbedingt leistungsstark genug sein, um den Minecraft-Server selbst zu hosten; er dient lediglich als Weiterleitung für die Verbindungen. Das bedeutet, dass Sie anstelle Ihrer eigenen IP-Adresse die IP-Adresse des Proxy-Servers angeben können.

Angenommen, jemand möchte sich mit Ihrem Server verbinden und gibt daher die IP-Adresse Ihres AWS-Proxys in seinen Minecraft-Client ein. Ein Datenpaket wird an den Proxy auf Port 25565 (dem Standardport von Minecraft) gesendet. Der Proxy ist so konfiguriert, dass er den Datenverkehr von Port 25565 abfängt und ihn an Ihren Heimrouter weiterleitet. Das geschieht alles im Hintergrund, ohne dass die Person, die sich verbindet, es überhaupt mitbekommt.

Ihr Heimrouter muss dann so konfiguriert sein, dass er die Verbindung an Ihren eigentlichen PC weiterleitet. Auf Ihrem PC läuft der Server und beantwortet das Paket des Clients. Die Antwort wird dann zurück an den Proxy geleitet, und der Proxy formatiert das Paket so um, dass es aussieht, als käme die Antwort direkt vom Proxy selbst. Der Client bekommt von alldem nichts mit und geht einfach davon aus, dass der Proxy derjenige ist, auf dem der Server läuft.

Es ist im Prinzip so, als würden Sie einen zusätzlichen Router vor Ihrem Server einsetzen, so wie Ihr Heimrouter Ihren Computer schützt. Dieser neue Router läuft jedoch in den Amazon Web Services und profitiert von der vollständigen DDoS-Abwehr auf der Transportebene, die bei jedem AWS-Service standardmäßig enthalten ist (bekannt als AWS Shield). Wenn ein Angriff erkannt wird, wird dieser automatisch abgewehrt, ohne dass Ihr Server beeinträchtigt wird. Wenn der Angriff aus irgendeinem Grund nicht aufgehalten werden kann, können Sie die Instanz einfach ausschalten und die Verbindung zu Ihrem Heimnetzwerk trennen.

Um das Proxying zu bewerkstelligen, wird ein Programm namens sslh verwendet. Es ist eigentlich für das Protokoll-Multiplexing gedacht. Wenn Sie beispielsweise SSH (normalerweise Port 22) und HTTPS (Port 443) auf demselben Port betreiben möchten, würden Probleme auftreten. sslh agiert als vorgeschaltete Instanz und leitet die Ports an die jeweiligen Anwendungen um, um dieses Problem zu lösen. Das geschieht auf der Transportebene, wie bei einem Router. Das ermöglicht uns, den Minecraft-Traffic abzufangen und an Ihren Heimserver weiterzuleiten. sslh ist standardmäßig nicht transparent, was bedeutet, dass Pakete so umgeschrieben werden, dass Ihre Heim-IP-Adresse verborgen bleibt. Das macht es für andere unmöglich, Ihre IP-Adresse mit Tools wie Wireshark auszuspionieren.

Erstellen und Verbinden mit einem neuen VPS

Beginnen wir mit der Einrichtung des Proxy-Servers. Es ist hilfreich, wenn Sie bereits etwas Linux-Erfahrung haben, aber es ist nicht zwingend erforderlich.

Gehen Sie zu Amazon Web Services und erstellen Sie ein Konto. Sie müssen Ihre Debit- oder Kreditkarteninformationen angeben, dies dient jedoch lediglich dazu, die Erstellung von Mehrfachkonten durch Benutzer zu verhindern. Die erstellte Instanz wird Ihnen nicht in Rechnung gestellt. Das kostenlose Kontingent läuft nach einem Jahr ab, also stellen Sie sicher, dass Sie es deaktivieren, sobald Sie es nicht mehr benötigen. Die Google Cloud Platform bietet eine f1-micro-Instanz an, die dauerhaft kostenlos verfügbar ist, falls Sie diese bevorzugen. Google bietet außerdem ein Guthaben von 300 US-Dollar für ein Jahr an, mit dem Sie tatsächlich einen echten Cloud-Server betreiben könnten.

AWS berechnet eine geringe Gebühr für den Datentransfer. Sie erhalten 1 GB kostenlos, aber für alles darüber hinaus werden 0,09 USD pro GB berechnet. Im Normalfall werden Sie diese Grenze wahrscheinlich nicht überschreiten, aber behalten Sie es im Hinterkopf, wenn Sie eine unerwartete Gebühr von beispielsweise 20 Cent auf Ihrer Rechnung entdecken.

Nachdem Sie Ihr Konto erstellt haben, suchen Sie nach „EC2“. Dies ist die virtuelle Serverplattform von AWS. Möglicherweise müssen Sie etwas warten, bis AWS EC2 für Ihr neues Konto aktiviert.

Auf der Registerkarte „Instanzen“ wählen Sie „Instanz starten“, um den Startassistenten aufzurufen.

Als Betriebssystem können Sie das Standard-„Amazon Linux 2 AMI“ oder „Ubuntu Server 18.04 LTS“ auswählen. Klicken Sie auf „Weiter“, und Sie werden aufgefordert, den Instanztyp auszuwählen. Wählen Sie „t2.micro“ aus, die Instanz des kostenlosen Kontingents. Sie können diese Instanz rund um die Uhr im kostenlosen Kontingent von AWS ausführen.

Wählen Sie „Überprüfen und starten“. Wählen Sie auf der nächsten Seite „Starten“, und Sie werden das folgende Dialogfenster sehen. Klicken Sie auf „Neues Schlüsselpaar erstellen“ und dann auf „Schlüsselpaar herunterladen“. Dies ist Ihr Zugangsschlüssel zur Instanz. Verlieren Sie ihn also nicht. Speichern Sie ihn sicher in Ihrem Dokumentenordner. Klicken Sie nach dem Download auf „Instanzen starten“.

Sie werden zurück zur Seite mit den Instanzen geleitet. Suchen Sie nach der öffentlichen IPv4-IP Ihrer Instanz, die die Adresse des Servers ist. Wenn Sie möchten, können Sie eine AWS Elastic IP (die sich bei Neustarts nicht ändert) oder sogar einen kostenlosen Domänennamen mit dot.tk einrichten, falls Sie nicht jedes Mal auf diese Seite zurückkehren möchten, um die Adresse herauszufinden.

Speichern Sie die Adresse für später. Zunächst müssen Sie die Firewall der Instanz anpassen, um den Port 25565 zu öffnen. Wählen Sie auf der Registerkarte „Sicherheitsgruppen“ die Gruppe aus, die Ihre Instanz verwendet (wahrscheinlich launch-wizard-1), und klicken Sie dann auf „Bearbeiten“.

Fügen Sie eine neue benutzerdefinierte TCP-Regel hinzu und legen Sie den Portbereich auf 25565 fest. Die Quelle sollte auf „Überall“ oder 0.0.0.0/0 gesetzt sein.

Speichern Sie die Änderungen, und die Firewall wird aktualisiert.

Als Nächstes verbinden wir uns über SSH mit dem Server, um den Proxy einzurichten. Wenn Sie macOS/Linux verwenden, können Sie Ihr Terminal öffnen. Wenn Sie Windows verwenden, benötigen Sie einen SSH-Client, wie PuTTY, oder Sie installieren das Windows-Subsystem für Linux. Letzteres wird empfohlen, da es konsistenter ist.

Zuerst wechseln Sie in Ihren Dokumentenordner, wo sich die Schlüsseldatei befindet:

cd ~/Documents/

Wenn Sie das Windows-Subsystem für Linux verwenden, befindet sich Ihr C-Laufwerk unter /mnt/c/, und Sie müssen wie folgt in Ihren Dokumentenordner wechseln:

cd /mnt/c/Users/username/Documents/

Verwenden Sie das Flag -i, um SSH mitzuteilen, dass Sie die Schlüsseldatei zur Verbindung verwenden möchten. Die Datei hat die Endung .pem, also sollte der Befehl wie folgt aussehen:

ssh -i keyfile.pem [email protected]

Ersetzen Sie „0.0.0.0“ durch Ihre tatsächliche IP-Adresse. Wenn Sie anstelle von AWS Linux einen Ubuntu-Server erstellt haben, müssen Sie sich als Benutzer „ubuntu“ verbinden.

Sie sollten nun Zugriff haben und die Eingabeaufforderung des Servers sehen.

SSL Konfiguration

Installieren Sie sslh aus dem Paketmanager. Unter AWS Linux wäre das yum, unter Ubuntu apt-get. Unter AWS Linux müssen Sie gegebenenfalls das EPEL-Repository hinzufügen:

sudo yum install epel-release
sudo yum install sslh

Öffnen Sie nach der Installation die Konfigurationsdatei mit nano:

nano /etc/default/sslh

Ändern Sie den Parameter RUN= auf „yes“:

Fügen Sie unterhalb der letzten Zeile DAEMON= Folgendes ein:

DAEMON_OPTS="--user sslh --listen 0.0.0.0:25565 --anyprot your_ip_address:25565 --pidfile /var/run/sslh/sslh.pid

Ersetzen Sie „your_ip_address“ durch Ihre private IP-Adresse. Wenn Sie Ihre IP nicht kennen, suchen Sie bei Google nach „Wie lautet meine IP-Adresse?“ – Ja, wirklich.

Diese Konfiguration bewirkt, dass der SSL-Proxy auf allen Netzwerkschnittstellen auf Port 25565 lauscht. Ersetzen Sie diese Portnummer durch eine andere, wenn Ihr Minecraft-Client einen anderen Port verwendet oder wenn Sie ein anderes Spiel spielen. Normalerweise würden Sie mit sslh verschiedene Protokolle abfangen und diese an unterschiedliche Ziele weiterleiten. In unserem Fall möchten wir jedoch einfach den gesamten Datenverkehr abfangen und an Ihre_IP_Adresse:25565 weiterleiten.

Drücken Sie Strg+X und dann Y, um die Datei zu speichern. Führen Sie folgende Befehle aus, um sslh zu aktivieren:

sudo systemctl enable sslh
sudo systemctl start sslh

Wenn systemctl auf Ihrem System nicht verfügbar ist, müssen Sie stattdessen möglicherweise den Befehl service verwenden.

sslh sollte jetzt ausgeführt werden. Stellen Sie sicher, dass Ihr Heimrouter die Portweiterleitung aktiviert hat und Datenverkehr auf Port 25565 an Ihren Computer sendet. Es empfiehlt sich, Ihrem Computer eine statische IP-Adresse zuzuweisen, damit diese sich nicht ändert.

Um zu sehen, ob Spieler auf Ihren Server zugreifen können, geben Sie die IP-Adresse des Proxys in einen Online-Status-Checker ein. Sie können auch die IP Ihres Proxys in Ihren Minecraft-Client eingeben und versuchen, dem Server beizutreten. Wenn dies nicht funktioniert, überprüfen Sie, ob die Ports in den Sicherheitsgruppen Ihrer Instanz korrekt geöffnet sind.