Úvod
V tomto dalším článku na téma BungeeCord se podíváme na jeho zabezpečení, konkrétně na zabezpečení backend serverů, které jsou pomocí BungeeCordu propojeny. Největším rizikem, kterému se backend servery vystavují, je obejití autentizace, tj. obejití přihlášení. Standardní průběh přihlášení hráče většinou probíhá následovně:
- Hráč se připojí na BungeeCord server a je připojen na výchozí server. Na výchozím serveru se povětšinou bude nacházet nějaký autentizační plugin, například AuthMe.
- Hráč provede na tomto serveru autentizaci, v případě úspěchu je přepojen na herní server, například Lobby, v opačném případě není hráč dále vpuštěn a je například vyhozen.
- Můžeme také využít plugin FastLogin, pomocí kterého se hráči s originálním Minecraft účtem nemusí přihlašovat, ovšem průběh přihlášení je až na zadávání hesla identický.
Celý proces je velmi jednoduchý a v zásadě si vystačíte s jedním pluginem – AuthMe. A kde jsou teda ta rizika? Hned se na ně podíváme.
Přímé připojení na server
Začneme hned tím největším rizikem a tím je kompletní obejití BungeeCordu. Představte si, že by se někdo připojil přímo na backend server, bez využití našeho BungeeCordu či pomocí svého “falešného”. Co by se mohlo stát? Pokud by si hráč zjistil například nick majitele serveru, mohl by se za něj bez přihlášení připojit a dále už je pouze na něm, co by se serverem provedl.
Řešení problému
Naštěstí je zde naprosto perfektní plugin, nazvaný BungeeGuard. Tento plugin je od stejného autora, který vytvořil například plugin LuckPerms. Funkce tohoto pluginu je velmi jednoduchá, ale přesto dokáže servery mimořádně dobře zabezpečit – hráč je při připojení přes pravý BungeeCord “označkován” a tato značka je poté kontrolována na všech serverech. Pokud značka chybí nebo nesedí, není hráč na server vpuštěn.
Podíváme se tedy na instalaci tohoto pluginu.
Stažení pluginu a jeho závislostí
BungeeGuard se distribuuje jako univerzální plugin, tudíž není třeba rozlišovat mezi verzemi pro BungeeCord, Spigot, Paper, atp.
Nejnovější build BungeeGuardu lze stáhnout kliknutím na tento odkaz - Link
Pro funkčnost pluginu na backend serverech je také vyžadována knihovna ProtocolLib, kterou lze stáhnout zde - Link
Instalace pluginu na BungeeCord
BungeeGuard nyní nahrajeme na BungeeCord server, do složky plugins – můžeme využít buďto FTP nebo Správce souborů v Administraci. ProtocolLib zde není potřeba.
Po úspěšném nahrání BungeeCord server vypneme a otevřeme jeho konfigurační soubor (config.yml), kde vyhledáme řádek s nastavením ip_forward a ujistíme se, že je hodnota nastavena na true:
# config.yml
...
ip_forward: true
...
Nyní BungeeCord server zapneme a ve složce BungeeGuard se nám vygeneruje soubor s tokenem – token.yml. Token si poznamenáme.
Instalace pluginu na backend server
BungeeGuard opět nahrajeme do složky plugins na všechny servery za BungeeCordem, společně s knihovnou ProtocolLib a poté provedeme jejich restart, aby se vygenerovaly konfigurační soubory.
Dále se ujistíme, že na všech backend serverech máme v souboru spigot.yml u volby bungeecord nastavenu hodnotu na true, viz:
# spigot.yml
...
bungeecord: true
...
Posledním krokem je nastavení tokenu, který nám vygeneroval BungeeGuard, na všech backend serverech. To provedeme v souboru config.yml, který se nachází ve složce BungeeGuard a upravíme ho podle vzoru níže:
# BungeeGuard/config.yml
allowed-tokens:
- "AUSXEwebkOGVnbihJM8gBS0QUutDzvIG009xoAfo1Huba9pGvhfjrA21r8dWVsa8" # Zde nastavíme token, který nám vygeneroval BungeeGuard
Poté všechny servery restartujeme a voilà, máme BungeeCord síť zabezpečenou.