Proč na adrese záleží víc než u webu
Ochrana Minecraft serveru funguje tím, že je v cestě. Spojení dorazí na ochrannou síť, projdou prověřením a dál se přepošlou jen ta, která přežijí. Všechno popsané v článku DDoS ochrana Minecraft serveru na tom stojí.
Útočník, který zná skutečnou adresu vašeho stroje, tu cestu použít nemusí. Pošle flood přímo a každá vrstva, kterou jste zaplatili, stojí v chodbě, kterou nikdo nejde. Tohle je zdaleka nejčastější důvod, proč provozovatel říká „máme ochranu a stejně jsme spadli".
Jak adresa uniká
Staré DNS záznamy. Zdaleka nejčastější. Nasměrujete play.example.com na ochrannou síť a A záznam na holé doméně, na staré subdoméně nebo na něčem jako mc.example.com či map.example.com pořád ukazuje na stroj. Historické DNS archivuje několik veřejných služeb, takže záznam smazaný loni je pořád dohledatelný.
Něco jiného na stejném stroji. Web, dynmap, ovládací panel, Git server, poštovní služba. Když se cokoli z toho překládá přímo na stroj, je stroj veřejný. Proto „port Minecraftu je chráněný" není totéž co „stroj je chráněný".
Stránky se seznamy serverů. Řada z nich si poznamená adresu ve chvíli, kdy server přidáte, a některé ji zobrazují. Pokud jste server přidali před přesunem za ochranu, počítejte s tím, že stará adresa je někde zaznamenaná.
Vaše vlastní historie. Screenshoty na Discordu, příspěvek na fóru z doby, kdy jste něco řešili, seznam serverů ve starém klientovi na stroji jednoho člena, ticket na podpoře. Adresy přežívají na místech, která neovládáte.
Chybové hlášky a hlavičky. Cokoli na stroji, co hlásí vlastní hostname nebo adresu v chybové stránce, v hlavičce e-mailu nebo v certifikátu, ji dokáže zveřejnit, aniž by kdokoli na cokoli útočil.
Co s tím dělat
1. Předpokládejte únik a přesuňte se. Pokud adresa někdy byla veřejná, jediným skutečným řešením je změnit ji. Pořiďte novou a ujistěte se, že se nikdy nikde neobjevila — čerstvá IP u stejného poskytovatele, kterou jste už na něco použili, není čerstvá.
2. Zafirewallujte server na ochrannou síť. Tenhle krok lidé přeskakují a přitom je nejdůležitější. Server má přijímat spojení na herním portu z adres ochranné sítě a odnikud jinud. Bez toho stačí znát adresu a všechno je obejité; s tím je znalost adresy o hodně méně cenná.
3. Přesuňte všechno ostatní ze stroje, nebo taky za ochranu. Web, mapu, panel. Jedna nechráněná služba stačí ke zveřejnění adresy všech ostatních.
4. Ukliďte DNS. Každý záznam, který se překládá na origin, včetně těch, o kterých si myslíte, že je nikdo nepoužívá. Zkontrolujte holou doménu, běžné subdomény a poštovní záznamy mířící na stejný stroj.
5. Nedávejte skutečnou adresu do MOTD, do popisu discordového kanálu ani do odpovědi na podpoře. Zní to zjevně. Pořád je to nejčastější způsob, jak se adresa po přesunu vrátí.
Webovou verzi téhle situace rozebírá Jak skrýt IP adresu originu; platí stejné úvahy s tím, že herní server má obvykle na stejném stroji přišroubováno víc služeb.
Past na druhé straně: offline mód za proxy
Existuje druhé selhání spojené s adresou, které je specifické pro Minecraft, a vyplatí se ho pochopit dřív, než si vyberete, jak má vaše ochrana fungovat.
Řada proxy hráče ověří sama a pak se do vašeho serveru přihlásí jeho jménem. Aby to fungovalo, musí být váš server v offline módu, protože hráč se už prokázal proxy a podruhé se prokazovat nebude. Proxy pak serveru řekne, kdo hráč je.
Ta zpráva je celý model identity. V moderním schématu přeposílání je podepsaná sdíleným tajemstvím, takže váš server může odmítnout připojení, které nepřišlo od vaší proxy. Ve starším schématu jsou to čtyři řetězce v handshaku bez jakéhokoli podpisu — kdo se dostane na backend, může tvrdit, že je kdokoli, včetně vašich administrátorů.
S forwardovací proxy před serverem v offline módu tedy uniklá adresa není jen způsob, jak vám poslat flood. Je to způsob, jak se připojit pod libovolným jménem. Váš firewall je jediné, co stojí mezi útočníkem a celým systémem oprávnění vašeho serveru — což je hodně váhy na jedno pravidlo v iptables.
Alternativa: nechat serveru vlastní ověřování
Existuje návrh, který se tomuhle vyhne úplně. Místo ukončení session hráče a jejího přeposlání se ochrana chová jako brána: přihlášení dokončí sama, ověří účet, předá klientovi token a spojení ukončí. Klient se vrátí — na moderních verzích automaticky, na starších dalším kliknutím na server — a vracející se spojení se přeposílá napřímo.
Důsledky stojí za vypsání, protože jsou důvodem, proč to preferovat:
- Server zůstává v online módu a každého hráče si ověří sám, přesně jako dnes. Žádná změna konfigurace.
- Díra „uniklá adresa znamená, že kdokoli může být kýmkoli", se vůbec neotevře, protože si server dál ověřuje sám. Uniklá adresa je zase jen problém DDoS, ne problém identity.
- Není co spravovat za forwardovací tajemství a na přihlašovací cestě neběží překlad session závislý na verzi.
Cenou je jedno znovupřipojení, když je hráč poprvé vyzván k ověření. Na klientech od 1.20.5 dál to hra udělá sama a hráč si toho nevšimne; na starších klikne na server ještě jednou.
Co „skrytí" doopravdy přinese
Buďme věcní. Proxy před serverem znamená, že adresa, kterou si komunita předává, není adresa vašeho stroje — a v tom je většina užitku, protože nahodilí útočníci použijí adresu, kterou dostali. Nezveřejní zpět adresu, která už zveřejněná byla, a nepomůže vůbec, pokud váš stroj dál přijímá spojení z celého internetu.
Skrytí je vrstva. Firewall je vynucení.
Ochrana herních serverů od Itnetic používá výše popsaný návrh brány, takže si váš server nechá vlastní ověřování a zůstane v online módu.