Vytváříme vlastní Anti-DDoS ochranu pro Minecraft
Časy, kdy DDoS útok zvládli udělat jen ti nejlepší hackeři s velkými botnety jsou už dávno pryč, dnes dokáže provést DDoS útok i naprostý amatér s internetovým prohlížečem. Doslova.
Časy, kdy DDoS útok zvládli udělat jen ti nejlepší hackeři s velkými botnety jsou už dávno pryč, dnes dokáže provést DDoS útok i naprostý amatér s internetovým prohlížečem. Doslova. Důkazem může být zabavení 24 internetových domén spojených se službami pro pronájem DDoS útoků. Bohužel, takovýchto stránek na internetu existuje stovky, některé si účtují poplatek, některé ale poskytují útok zdarma. Navíc už útoky necílí pouze na webové stránky, ale i na herní servery, mezi které patří i oblíbená hra Minecraft.
Konkurenční boj či pro zábavu
DDoS útoky byly a jsou využívány z mnoha různých důvodů. Jedním z těch největších je konkurenční boj. Představte si, že máte internetový obchod s elektronikou a potřebujete získat nové zákazníky. Jiný internetový obchod ale roste 2x rychleji a zakoupení reklamy by pro vás bylo příliš drahé. Druhou možností může být ale DDoS útok: pokud konkureční e-shop bude příliš pomalý nebo dokonce nedostupný, lidé půjdou raději nakupovat k vám. Takto to funguje i u Minecraft serverů. Každý rok vznikne mnoho nových serverů které si konkurují navzájem, už to není pouze o reklamě a youtuberech. Proto se majitelé některých serverů uchylují k DDoS útokům vůči ostatním serverům, jelikož hráči nechtějí hrát na serveru který se laguje.
Druhým důvodem bohužel bývá i obyčejná zábava. Nejčastěji se tímto baví děti, kterým možnost shodit velký server dodává pocit moci, možnost rozhodovat o tom, zda stovky hráčů budou hrát na tomto serveru nebo odejdou. V kombinaci se širokou dostupností DDoS služeb na internetu to znamená problém pro úplně všechny servery.
Jak se bránit?
S tím, jak DDoS útoků na Minecraft servery přibývalo, vzniklo mnoho nových služeb poskytujících Anti-DDoS ochranu. Mezi ty největší patří TCPShield nebo Cloudflare. Jedná se o již hotové služby, které stačí pouze napojit na svůj server. Bohužel né vše je dokonalé a každá věc něco stojí. Tyto ochrany bývají pro menší servery příliš drahé, zároveň neznamenají jistou ochranu před každým druhem útoku. Některé navíc mají problém s vysokým pingem, jelikož se jejich servery nachází v zemích jako je Francie.
Je tu ale i druhá možnost, vytvořit si vlastní Anti-DDoS ochranu. I přes to že její realizace je o něco náročnější než zakoupení existujícího řešení, ve finále dokáže přinést mnoho benefitů, jako je například nižší cena, nastavení na míru a při zvolení vhodných lokací pro servery i menší ping.
Vytváříme vlastní ochranu
Jako první je vhodné si uvědomit, jak takový DDoS útok funguje. Je několik druhů útoku, který server může postihnout:
Přetížení serveru
Tím nejjednodušším útokem je pouhé přetížení serveru mnoha požadavky. Tím můžou být v našem případě boti, kteří se připojí na server a provádějí náročné requesty na server. Když se připojí třeba 300 botů kteří úmyslně spamují nebo načítají svět, může to pro vás být velkým problémem a na slabším hardware může server i spadnout. Tomuto útoku se dá bránit například zablokováním IP adresy útočníka, bohužel často je pro útok využíváno tisíce adres po celém světě.
Přetížení internetového spojení
Druhým typem útoku je přetížení vašeho internetu, takzvaný volumetrický DDoS. Tento útok je o něco náročnější, jelikož vyžaduje mnoho počítačů se silnou internetovou konektivitou. Tím můžou být jak nakoupené servery po celém světě, tak i velké botnety tvořené miliony zařízení. Takový útok má za cíl primárně jednu věc: přetížit vaše internetové spojení. Pokud máte pouze 1Gbitové spojení a útok je tvořen 100Gbitovým datovým tokem, k vašemu serveru se nedostanou požadavky hráčů. To vyžaduje obrovskou konektivitu i na straně serveru. Jak se ale těmto útokům účinně bránit?
Klíčem jsou proxy servery
Ve většině případů běží server pouze na jednom místě. To ale není vhodná situace, jelikož sehnat velmi silnou konektivitu může být komplikované a opravdu drahé. Zároveň nechceme útok k tomuto serveru vůbec pustit, jelikož by to znamenalo jeho přetížení. Řešení není ale vůbec náročné, a tím jsou proxy servery. V překladu se jedná o server, který zprostředkovává připojení k jinému serveru. Těchto serverů můžeme mít klidně i stovky, takže můžeme škálovat konektivitu ochrany nezávisle na konektivitě Minecraft serveru. Pokud začne být konektivita ochrany malá, stačí přidat nové proxy servery. Zároveň na těchto serverech odfiltrujeme pochybný datový tok a k hernímu serveru ve finále pustíme ve většině případu realné hráče. Aby jsme umožnili se hráčům připojit k těmto serverům skrze jedinou adresu, využijeme round robin funkce u DNS, takže DNS server bude střídavě vracet pro jednu doménu adresy proxy serverů.
Aby jsme mohli přesměrovávat spojení mezi hráčem k serverem, potřebujeme speciální aplikaci, která bude zprostředkovávat spojení. Můžeme buď využít velmi oblíbenou HaProxy, což je poměrně obecná proxy a dá se tedy využít téměř na vše. Zároveň má mnoho možností nastavení, její nevýhodou je ale vyšší využití procesoru. Druhou, lepší možností je využití specializované proxy přimo pro Minecraft protokol, v našem případě open-source proxy Infrared. Ta například podporuje i připojení podle domény, na jednom proxy serveru lze tedy podle domény rozdělit hráče na různé Minecraft servery.
Filtrujeme nebezpečný provoz
Aktuálně tedy dokážeme datový tok přenášet skrze proxy servery, teď je potřeba ho filtrovat. Na linuxu lze využít krásy firewallu iptables, který ačkoliv je poměrně náročný na pochopení, jedná se stále o jeden z nejmocnějších firewallů. Jedno z nejdůležitějších pravidel je filtrování podle státu. V našem případě totiž stavíme server pro Česko a Slovensko, je vhodné tedy povolit přístup jen z těchto zemí a jejich nejbližšího okolí. Ve většině případů totiž za DDoS útokem stojí ip adresy ze zemí jako je Thajsko, Vietnam a další. Druhým pravidlem je limit spojení. Pokud totiž z adresy přichází více jak 50 spojení za vteřinu, pravděpodobně se nejedná o běžného hráče, ale o útočníka. Nakonec pokud chceme zlepšit efektivitu našeho firewallu, můžeme si na linuxu pohrát se souborem sysctl.conf a pohrát si s hodnotami v systému.
Dáváme vše dohromady
Jako první si nakoupíme několik VPS, ideálně u různých poskytovatelů z důvodu redundance. Jako distribuci zvolíme Debian, což je nejrozšířenější linuxová distribuce s malými nároky na hardware. První si pohrajeme s firewallem, v našem případě budeme počítat s tím že jsme Český Minecraft server a chceme jen CZ/SK hráče, maximálně pár okolních států.
Začneme instalací firewallu a nastavením pravidla, které umožní odchozí komunikaci na již vytvořených spojení.
Následně si nainstalujeme speciální GeoIP tabulku. Ta slouží k přiřazení státu k IP adrese v rámci firewall pravidel. Následně nastavíme pravidlo, že státy které nesplňují náš seznam budou zakázány.
Ve finále přidáme mnoho pravidel (které zde nebudu vysvětlovat z důvodu náročnosti), ale zamezují běžným formátům DDoS útoku a limitují počet spojení na adresu za vteřinu.
Teď už stačí jen pravidla uložit.
Tím máme náš firewall hotový, teď optimalizujeme systém přímo pro potřeby našeho proxy serveru. To uděláme v již zmíněném souboru sysctl.conf. Ten se nachází ve složce /etc/. Na konec tohoto souboru vložíme konfiguraci, která by měla dovolit serveru odolat více útokům.
Ještě je potřeba vše uložit.
Tímto máme v systému nastaveno vše potřebné a můžeme se přesunout k nastavení samotného Infraredu. Z GitHubu stáhneme nejnovější release a provedeme základní konfiguraci. Je důležité povolit podporu proxy protokolu, jinak na vašem serveru budou mít hráči adresu proxy! Zároveň si podporu proxy protokolu zapněte i na samotném Minecraft serveru.
Po tom, co nastavíte vaší Infrared proxy je potřeba ještě nastavit round-robin v DNS. To umožní rovnoměrné rozdělení hráčů mezi vaše proxy servery.
Teď už by vše mělo být hotové. Po zapnutí Infrared proxy stačí se připojit na adresu proxy.(vašedoména). Pokud došlo k připojení k serveru, máte vyhráno! Infrared navíc podporuje mnoho dalšího nastavení, to už by ale bylo vhodné na nový článek.
Na závěr
V tomto článku jsme si popsali, co je to DDoS, jak takový DDoS probíhá a jak se vůči němu ve světě Minecraftu dá bránit. Ochranu můžete vylepšovat i podle vlastních zkušeností, záleží na okolnostech.