Skydda din Minecraft-hemserver från DDOS-attacker med AWS

By rik

Vill du driva en Minecraft-server från ditt hem utan att exponera din IP-adress? Det är faktiskt fullt möjligt! Du kan upprätta en kostnadsfri proxy via Amazon Web Services för att skydda din server mot överbelastningsattacker. Vi kommer att visa dig hur det går till.

Denna guide är applicerbar på alla typer av spelserver, inte enbart Minecraft. Det primära syftet är att styra trafiken genom en specifik port. Du behöver bara justera Minecrafts standardport 25565 till den port som din spelserver använder.

Hur fungerar det hela?

Låt oss anta att du vill hosta en Minecraft-server och göra den tillgänglig för internet. Att sätta upp en server är inte särskilt komplicerat. Installationen är enkel, de använder bara en bearbetningstråd, och även de mest modifierade servrarna kräver inte mer än 2-3 GB RAM med ett fåtal spelare online. Du kan utan problem köra en server på en äldre bärbar dator eller i bakgrunden av din stationära dator, istället för att betala någon annan för hostingen.

För att andra ska kunna ansluta till din server, måste du dock dela med dig av din IP-adress. Detta medför vissa risker. Det utgör en säkerhetsbrist, särskilt om din router fortfarande använder standardadministratörslösenordet. Du blir även sårbar för distribuerade denial-of-service (DDOS)-attacker, vilket inte bara skulle stoppa din Minecraft-server, utan också stänga av din internetanslutning tills attacken avtar.

Du behöver inte tillåta andra att ansluta direkt till din router. Istället kan du leasa en liten Linux-server från Amazon Web Services, Google Cloud Platform, eller Microsoft Azure – alla dessa erbjuder gratisnivåer. Denna server behöver inte vara tillräckligt kraftfull för att själva hosta Minecraft-servern, den vidarebefordrar bara anslutningen. Detta gör att du kan ge ut IP-adressen till proxyservern istället för din egen.

Ponera att en person vill ansluta till din server, och anger IP-adressen till din AWS-proxy i sin Minecraft-klient. En datapaket skickas till proxyn på port 25565 (Minecrafts standardport). Proxyn är konfigurerad för att identifiera port 25565-trafik och skickar den vidare till din hemrouter. Detta sker i bakgrunden – personen som ansluter är helt omedveten om det.

Din hemrouter måste sedan vidarebefordra porten för att ansluta till din faktiska dator. Din dator driver servern och svarar på klientens begäran. Den skickar svaret tillbaka till proxyn, som sedan skriver om paketet så att det ser ut som om det är proxyn som svarar. Klienten är inte medveten om detta och tror helt enkelt att proxyn är det system som driver servern.

Det är som att lägga till ytterligare en router framför servern, på samma sätt som din hemrouter skyddar din dator. Denna nya router körs dock på Amazon Web Services och får det fullständiga skyddet mot DDOS-attacker som erbjuds kostnadsfritt med varje AWS-tjänst (kallas AWS Shield). Om en attack upptäcks, hanteras den automatiskt utan att störa din server. Om den inte stoppas av någon anledning, kan du alltid stänga av instansen och bryta anslutningen till ditt hem.

För att hantera proxyn används ett verktyg som kallas sslh. Det är designat för protokollmultiplexering; om du ville köra SSH (vanligtvis port 22) och HTTPS (port 443) på samma port, skulle det uppstå problem. sslh placeras framför och dirigerar portar till de avsedda applikationerna och löser på så sätt detta problem. Det gör det på transportlagernivå, precis som en router. Det innebär att vi kan känna igen Minecraft-trafik och vidarebefordra den till din hemmaserver. sslh är som standard icke-transparent, vilket innebär att den skriver om paketen för att dölja din hemadress. Detta gör det omöjligt för någon att upptäcka det med verktyg som Wireshark.

Skapa och anslut till en ny VPS

För att starta, behöver du konfigurera proxyservern. Det är definitivt enklare om du har viss erfarenhet av Linux, men det är inte absolut nödvändigt.

Gå till Amazon Web Services och skapa ett konto. Du behöver ange dina betal- eller kreditkortsuppgifter, men detta är bara för att förhindra att människor skapar flera konton. Du kommer inte att debiteras för den instans du skapar. Gratisnivån upphör efter ett år, så kom ihåg att stänga av den när du är klar. Google Cloud Platform erbjuder en f1-mikroinstans som är gratis hela tiden om du föredrar att använda den. Google ger också en kredit på 300 dollar för ett år, som du faktiskt kan använda för att driva en riktig molnserver.

AWS tar ut en liten avgift för bandbredd. Du får 1 GB gratis, men du kommer att debiteras 0,09 USD per GB utöver det. I praktiken kommer du förmodligen inte att överskrida detta, men håll koll om du ser en avgift på 20 cent på din faktura.

När du har skapat ditt konto, sök efter ”EC2”. Detta är AWS:s virtuella serverplattform. Du kan behöva vänta en stund på att AWS ska aktivera EC2 för ditt nya konto.

Från fliken ”Instanser”, välj ”Starta instans” för att öppna startguiden.

Du kan välja standard ”Amazon Linux 2 AMI” eller ”Ubuntu Server 18.04 LTS” som operativsystem. Klicka på nästa, så kommer du att bli ombedd att välja instanstyp. Välj t2.micro, som är den kostnadsfria instansen. Du kan köra denna instans dygnet runt under AWS:s gratisnivå.

Välj ”Granska och starta”. På nästa sida väljer du ”Starta”, och du kommer att se dialogrutan nedan. Klicka på ”Skapa ett nytt nyckelpar” och sedan på ”Ladda ner nyckelpar”. Detta är din åtkomstnyckel till instansen, så tappa inte bort den – placera den i mappen Dokument för förvaring. När den har laddats ner, klickar du på ”Starta instanser”.

Du kommer tillbaka till instanssidan. Leta upp din instanss IPv4 Public IP, som är adressen till servern. Om du vill kan du ange en AWS Elastic IP (som inte ändras vid omstarter), eller till och med ett kostnadsfritt domännamn via dot.tk om du inte vill behöva gå tillbaka till denna sida för att hitta adressen.

Spara adressen för senare. Först måste du redigera instansens brandvägg för att öppna port 25565. Från fliken Säkerhetsgrupper, väljer du den grupp som din instans använder (troligen launch-wizard-1), och klickar sedan på ”Redigera”.

Lägg till en ny anpassad TCP-regel och ställ in portintervallet till 25565. Källan bör ställas in på ”Var som helst” eller 0.0.0.0/0.

Spara ändringarna, så uppdateras brandväggen.

Nu ska vi ansluta till servern med SSH för att konfigurera proxyn. Om du använder macOS/Linux kan du öppna terminalen. Om du använder Windows behöver du använda en SSH-klient, som PuTTY, eller installera Windows Subsystem för Linux. Vi rekommenderar det senare, eftersom det är mer pålitligt.

Det första du bör göra är att byta katalog (cd) till din dokumentmapp där nyckelfilen finns:

cd ~/Documents/

Om du använder Windows Subsystem för Linux, finns din C-enhet på /mnt/c/, och du behöver byta till din dokumentmapp:

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

Använd flaggan -i för att tala om för SSH att du vill använda nyckelfilen för att ansluta. Filen har filtillägget .pem, så du bör inkludera följande:

ssh -i keyfile.pem [email protected]

Ersätt ”0.0.0.0” med din IP-adress. Om du skapade en Ubuntu-server istället för AWS Linux, anslut som användaren ”ubuntu”.

Du bör beviljas åtkomst och se din kommandotolk ändras till serverns prompt.

Konfigurera SSLH

Du behöver installera sslh från pakethanteraren. För AWS Linux är det yum, och för Ubuntu använder du apt-get. Du kan behöva lägga till EPEL-förvaret på AWS Linux:

sudo yum install epel-release
sudo yum install sslh

När installationen är klar, öppna konfigurationsfilen med nano:

nano /etc/default/sslh

Ändra parametern RUN= till ”yes”:

Under den sista DAEMON-raden, skriv in följande:

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

Ersätt ”din_ip_adress” med din hem-IP-adress. Om du inte känner till din IP, sök på Google efter ”Vad är min IP-adress?” – ja, verkligen.

Denna konfiguration gör att sslh-proxyn lyssnar på alla nätverksenheter på port 25565. Ersätt detta med ett annat portnummer om din Minecraft-klient använder ett annat, eller om du spelar ett annat spel. Normalt med sslh, matchar du olika protokoll och dirigerar dem till olika platser. För vårt ändamål, vill vi dock helt enkelt matcha all trafik och skicka den vidare till din_ip_adress:25565.

Tryck på Ctrl+X och sedan på Y för att spara filen. Skriv in följande för att aktivera sslh:

sudo systemctl enable sslh
sudo systemctl start sslh

Om systemctl inte är tillgängligt på ditt system, kan du behöva använda kommandot service istället.

sslh ska nu vara igång. Se till att din hemrouter vidarebefordrar portar och skickar 25565-trafik till din dator. Du kanske vill ge din dator en statisk IP-adress så att detta inte ändras.

För att se om andra kan ansluta till din server, skriv in proxyns IP-adress i en onlinestatuskontroll. Du kan också skriva in din proxys IP i din Minecraft-klient och försöka ansluta. Om det inte fungerar, se till att portarna är öppna i instansens säkerhetsgrupper.