RE:NODE

Zabezpečení13 min čtení

BattlEye a Easy Anti-Cheat na herních serverech

Co BattlEye a Easy Anti-Cheat opravdu dělají na dedikovaném serveru, co z toho patří tobě, jak fungují bany a co nezachytí ani jeden z nich.

3 čtenáři

Na dedikovaném serveru s BattlEye nebo Easy Anti-Cheat ovládáš překvapivě málo: jestli je anti-cheat zapnutý, pár nastavení kolem něj a - jen u BattlEye - lokální seznam banů, rozhraní RCon a u některých her sadu skriptových filtrů. Samotná detekce, signatury i všechny globální bany patří výrobci anti-cheatu a vývojářům hry. Nemůžeš odbanovat někoho, koho zabanovali oni, nevidíš, proč byl hráč vyhozen, kromě krátké zprávy, a nemůžeš přidat vlastní detekce. Když přesně víš, kde ta hranice leží, rozdíl je mezi tím, že to nastavíš správně, a tím, že strávíš večer hledáním voleb, které neexistují.

Tento článek popisuje, co který systém na serveru dělá, přepínače pro jednotlivé hry, soubory, které vlastníš, jak fungují bany na jednotlivých úrovních a které podvádění neodhalí ani jeden z nich - a tam nastupuje tvoje vlastní moderace.

Co dělá kernelový anti-cheat a kde je v tom server#

BattlEye i Easy Anti-Cheat (EAC, dnes součást Epic Online Services) jsou v první řadě klientské systémy. Hlavní část běží na PC hráče, u moderních verzí na úrovni jádra, a hledá známý cheatový software, zásahy do paměti, vložené moduly a nepodepsané ovladače. Serverová část je poměrně tenká: kontroluje, že každý připojující se klient anti-cheat spustil, předává hlášení klienta do backendu výrobce a klienta vyhodí, když to backend nařídí.

Z takového návrhu plynou tři důsledky, které stojí za to říct otevřeně:

  • Detekce se odehrává jinde. Tvůj server nic neskenuje. Vynucuje verdikt, který padl na počítači hráče a na serverech výrobce.
  • Server ho může jen vyžadovat, nemůže ho vylepšit. Žádný „přísnější režim“ si nekoupíš ani nenastavíš. Každý server se stejným buildem hry má stejné detekce.
  • Vypnutí je totální. Server s vypnutým anti-cheatem přijímá i klienty, kteří ho vůbec nespustili, takže platí cokoli.

Třetí systém, na který narazíš, je Valve Anti-Cheat (VAC), u her na enginu Source a v CS2. VAC funguje jinak - zpožděné bany uděluje Valve, žádný ovladač v jádře a žádná interakce se serverem kromě toho, že server je „secure“ - ale otázka vlastnictví má stejnou odpověď: rozhoduje Valve, ty si jen vybíráš, jestli se tvůj server zapojí.

Které hry používají který systém#

Mění se to v čase a vývojáři občas přecházejí k jinému výrobci, takže tabulku ber jako výchozí bod a než se na ni spolehneš, ověř si aktuální serverovou dokumentaci hry.

HraAnti-cheatPřepínač na serveru
Arma 3BattlEyeBattlEye = 1; v server.cfg
DayZBattlEyeU veřejných serverů zapnuto ve výchozím stavu
Arma ReforgerBattlEyebattlEye v konfiguraci JSON
ARK: Survival EvolvedBattlEyevolba spuštění -NoBattlEye ho vypne
7 Days to DieEACEACEnabled v serverconfig.xml
RustEACserver.secure (ve výchozím stavu zapnuto)
CS2, TF2, GMod, L4D2VACvolba spuštění -insecure ho vypne

Pár z nich si zaslouží větu navíc. Arma 3 a DayZ mají nejhlubší serverovou integraci BattlEye, s filtry a RCon, o kterých píšu níže. 7 Days to Die je typický případ, kdy lidé anti-cheat vypínají schválně, protože mody s vlastním kódem (DLL mody) se s EAC nenačtou, zatímco modlety jen z XML ano - zbytek toho souboru popisuje článek nastavení serveru 7 Days to Die. Komunitní servery Rustu běží s EAC samozřejmě; server s server.secure false je kuriozita, ke které se většina hráčů nepřipojí.

U her na Source je VAC zapnutý, pokud se server nespustí s -insecure nebo pokud z něj sv_lan 1 neudělá LAN server. Server bez ochrany se hráčům s VAC běžně nezobrazuje a mohou se na něj připojit účty zabanované VACem, což na veřejném serveru málokdy chceš.

Přepínače, které opravdu vlastníš#

Tady je kompletní seznam rozhodnutí o anti-cheatu, která jsou u většiny her na tobě:

  1. Zapnuto nebo vypnuto. Největší jednotlivá volba. Na každém veřejném serveru ho nech zapnutý. Vypni ho jen pro soukromou skupinu, která potřebuje mody, jež anti-cheat blokuje, a počítej s tím, že se teď spoléháš na důvěru.
  2. Ověřování podpisů a souborů, u her, které ho mají. Není to samotný anti-cheat, ale funguje vedle něj a u některých her je důležitější.
  3. Limity pingu a timeoutu, které BattlEye u některých her nabízí.
  4. Tvůj lokální seznam banů a přístup přes RCon, u her s BattlEye.
  5. Skriptové filtry, u her z rodiny Arma.

V Armě 3 vypadá příslušná část server.cfg takto:

server.cfg
BattlEye = 1;              // require BattlEyeverifySignatures = 2;      // reject clients with unsigned or mismatched addonskickDuplicate = 1;         // kick a second connection from the same IDallowedFilePatching = 0;   // clients may not load loose files over packed data

verifySignatures = 2 je nastavení, které v Armě 3 nejvíc zabírá proti příležitostnému podvádění. Vyžaduje, aby byl každý addon, který klient načte, podepsaný klíčem uloženým ve složce keys na serveru, což hráči zabrání načíst upravený PBO, který server nikdy neschválil. BattlEye chytá cheatový software; kontrola podpisů chytá cheatový obsah. Zbytek toho souboru projdeš v článku Arma 3: server.cfg a mise.

BattlEye na serveru: soubory, RCon a filtry#

Serverová část BattlEye žije ve složce BattlEye, obvykle uvnitř profilového adresáře serveru. Soubor, který upravuješ, je BEServer_x64.cfg (nebo BEServer.cfg u starších 32bitových buildů). Je krátký:

BattlEye/BEServer_x64.cfg
RConPassword a-long-generated-passwordRConPort 2306MaxPing 250

RConPassword a RConPort zapínají vlastní vzdálenou konzoli BattlEye, protokol UDP oddělený od protokolu hry. MaxPing vyhodí hráče nad daným pingem, což je hrubší, než to zní - hráč s výkyvem pingu je vyhozen uprostřed boje - takže ho nastav velkoryse nebo vynech. Některé buildy při startu přepisují tento soubor s příponou _active_ v názvu; uprav základní soubor, ne ten vygenerovaný.

Přes BattlEye RCon komunikují téměř všechny nástroje třetích stran se servery Army a DayZ. Příkazů je málo a stojí za to znát je přímo:

PříkazÚčinek
playersVypíše hráče s číslem, IP, pingem a GUID BattlEye
kick <number> [reason]Vyhodí podle čísla hráče
ban <number> [minutes] [reason]Zabanuje připojeného hráče, 0 nebo vynechání znamená trvalý ban
addBan <GUID or IP> [minutes] [reason]Zabanuje někoho, kdo není připojen
removeBan <ban number>Odstraní ban podle jeho pozice v bans
bansZobrazí seznam banů s čísly
writeBans / loadBansUloží seznam na disk / načte ho znovu
say -1 <message>Zpráva všem
loadScripts / loadEventsPo úpravě znovu načte soubory filtrů

Pro BattlEye RCon platí stejná pravidla jako pro jakoukoli vzdálenou konzoli: dlouhé náhodné heslo, port vystavený ven jen tehdy, když ho nějaký nástroj opravdu potřebuje, a přístup pro co nejméně lidí. Důvody rozebírá článek RCON bezpečně; nástroje specifické pro DayZ pokrývá admin nástroje pro DayZ a BattlEye RCon.

GUID BattlEye ve výpisu players není tajný identifikátor. Odvozuje se ze SteamID64 hráče - jde o hash MD5 z bajtů BE následovaných 64bitovým ID - takže ho banovací nástroj dokáže spočítat ze SteamID a ban podle GUID je prakticky ban podle účtu Steam.

Skriptové filtry v Armě

V Armě 3 umí BattlEye filtrovat i skriptový provoz: soubory jako remoteexec.txt, createvehicle.txt, publicvariable.txt a setvariable.txt ve složce BattlEye obsahují pravidla, která zapíšou do logu nebo vyhodí klienta, když pošle něco odpovídajícího vzoru. Dobře udělané filtry zastaví velkou třídu útoků vkládáním skriptů, které by kernelová část nikdy nezaznamenala, protože „cheat“ je jen legitimní herní příkaz poslaný klientem, který by ho posílat neměl.

Filtry jsou také nejsnazší způsob, jak rozbít misi. Filtr dost přísný na to, aby zastavil vložený kód, vyhodí legitimní hráče ve chvíli, kdy mise nebo mod udělá něco, s čím autor filtru nepočítal. Funkční postup je začít filtry zveřejněnými pro tvoji misi nebo sadu modů, nechat je pár sezení běžet jen v režimu logování, přečíst si, koho by vyhodily, a teprve potom zapnout vyhazování. loadScripts a loadEvents je načtou znovu bez restartu.

Jak fungují bany na jednotlivých úrovních#

U her s anti-cheatem existují tři druhy banů a jejich zaměňování způsobuje většinu zmatených tiketů, které majitelé serverů posílají na špatnou adresu.

každý serverkaždý serverjen tvůj serverGlobální ban výrobceBattlEye nebo EACBan od vývojářev celé hřeBan na tvém serverubans.txt nebo seznam hryHráč
Kdo může zrušit který ban

Jen spodní box je tvůj.

  • Globální bany anti-cheatu uděluje BattlEye nebo vývojář přes EAC, platí na každém serveru dané hry a ty je zrušit nemůžeš. Hráč vidí zprávu, že má globální ban. Pokud věří, že jde o omyl, odvolání jde k výrobci nebo vývojáři, ne k tobě, a to mu řekni bez dalšího vyjednávání.
  • Herní bany u her od Valve (VAC a herní bany) uděluje Valve. Stejné pravidlo: zrušit je nemůžeš a server chráněný VACem takový účet odmítne.
  • Tvoje lokální bany jsou celé tvoje. U her s BattlEye jsou v bans.txt ve složce BattlEye, jeden řádek na ban s GUID nebo IP, expirací (nebo -1 pro trvalý ban) a důvodem. U her s EAC a VAC jsou ve vlastním seznamu banů hry, který se liší podle titulu.

Lokální ban je jen tak dobrý jako identifikátor, na kterém stojí. Bany podle GUID a Steamu následují účet, který odhodlaný podvodník nahradí novým. Bany podle IP následují adresu, kterou může sdílet celá domácnost nebo kolej a která se změní s dalším restartem routeru. Jaký identifikátor banovat a jak naložit s druhým účtem, popisuje článek řešení cheaterů a seznamy banů.

Co anti-cheat nikdy nezachytí#

Tohle je část, na které nejvíc záleží pro tvoje očekávání. Kernelový anti-cheat je dobrý v odhalování známého cheatového softwaru na klientovi. Strukturálně není schopný zachytit:

  • Skryté podvádění kvalitními cheaty. Soukromé, dobře financované cheaty unikají detekci měsíce. Hráč s nenápadným aimbotem a přirozeně působícím stylem hry může zůstat dlouho neodhalen.
  • Hardwarové a externí cheaty. Zařízení, která čtou obraz druhým počítačem, nebo upravený vstupní hardware se herního procesu nikdy nedotknou.
  • Informace zvenčí. Někdo, kdo sleduje stream tvého serveru, spoluhráč na hlasovém kanálu druhého týmu nebo kamarád, který hlásí pozice.
  • Zneužití chyb samotné hry. Propadání pod mapu, duplikační chyby, zneužití rozbité logiky modu. Hra je dovoluje, takže anti-cheat vidí normálního klienta, který dělá normální věci.
  • Zneužití na straně serveru. Admin s RCon, který spawnuje věci kamarádům. Anti-cheat nemá o tvém týmu žádný názor.
  • Griefing a toxicita. V pojetí anti-cheatu to s podváděním vůbec nesouvisí.

Proto je anti-cheat základ, ne řešení. Nad ním pořád potřebuješ logy, podle kterých jde zpětně zjistit, co se stalo, adminy, kteří sledují hráče, jasná pravidla a banovací proces, který obstojí - politice se věnuje článek pravidla serveru, moderace a tým a chybám místo cheaterů exploity a pády herních serverů.

Mody, anti-cheat a kompromis u soukromých serverů#

Nejčastější důvod, proč majitel serveru sahá na přepínač anti-cheatu, jsou mody. Pravidla závisí na hře, ale vzorec se opakuje:

  • Mody jen s daty obvykle fungují se zapnutým anti-cheatem. Změny konfigurace, modlety v XML u 7 Days to Die, obsah z Workshopu v Armě a DayZ, který je podepsaný a ověřený.
  • Mody, které vkládají kód do klienta, obvykle ne. DLL mody pro 7 Days to Die, klientské frameworky, které se zahákují do herního procesu, cokoli, co anti-cheatu připadá přesně jako cheat, protože technicky je to stejná technika.
  • Mody na straně serveru anti-cheat nevidí. Pluginy Oxide nebo Carbon pro Rust, serverové skripty DayZ, admin nástroje - nic z toho se klientů nedotýká, takže to anti-cheat nezná a nezajímá ho to.

Pokud tvoje parta potřebuje klientský mod s kódem, který anti-cheat blokuje, jsou poctivé možnosti dvě: provozovat ten server bez anti-cheatu s heslem nebo seznamem povolených, aby se mohli připojit jen lidé, které znáš, nebo ten mod vynechat. Nedělej to, že kvůli jednomu modu provozuješ veřejný, vypsaný server s vypnutým anti-cheatem. Server se stane cílem přesně těch hráčů, kteří byli zabanovaní všude jinde.

Serverové admin a logovací mody naopak stojí za to mít v každé hře s anti-cheatem. Dávají ti důkazy, které anti-cheat nikdy nedá: kdo koho zabil odkud, kdo co sebral, kdo co napsal. V DayZ to bývá admin nástroj čtoucí admin log serveru, v Rustu pluginy určené pro logování a hlášení.

Provoz na hostovaném serveru#

BattlEye ani EAC nepotřebují žádný zvláštní hosting. Serverové komponenty jsou součástí souborů dedikovaného serveru a aktualizují se s nimi. Na čem záleží:

  • Porty. BattlEye RCon potřebuje vlastní port UDP, pokud používáš externí nástroje. Na RE:NODE má každý tarif uvedené přidělení portů a jeden můžeš přidat na záložce Network a nastavit na něj RConPort. Pokud externí nástroje RCon nepoužíváš, nech ho nenastavený a používej konzoli v panelu.
  • Aktualizace. Verze anti-cheatu jsou svázané s verzemi hry. Server, který se aktualizuje pozdě, způsobí, že klienti budou odmítnuti, nebo naopak; v Armě a DayZ aktualizuj server, když se aktualizuje hra, a problém zmizí. Jak to provést v klidnou hodinu, ukazuje plány restartů, které pomáhají.
  • Přihlašovací údaje. Arma 3, DayZ a 7 Days to Die na RE:NODE potřebují k instalaci přihlášení do Steamu, které se uloží tak, jak ho zadáš, takže použij záložní účet na Steamu, ne ten, na kterém hraješ. Server vznikne okamžitě a instalace čeká na záložce Setup, než údaje zadáš.
  • Logy. BattlEye zapisuje vlastní logy do složky BattlEye a ty jsou prvním místem, kam se podívat, když hráči hlásí vyhození se zprávou BattlEye.

Řešení vyhazování a chyb anti-cheatu#

„BattlEye: Client not responding“. Služba BattlEye na klientovi přestala se serverem komunikovat. Obvykle chyba na straně hráče: firewall, spadlá služba BE nebo velmi špatné připojení. Pokud ji dostanou všichni hráči najednou, soubory BattlEye na serveru neodpovídají verzi hry - aktualizuj server.

„BattlEye: Global Ban“. Výrobce účet zabanoval. Na tvé straně se nedá nic dělat.

Hráči vyhození v Armě kvůli skriptovému omezení. Zabral filtr. Zpráva o vyhození obsahuje soubor filtru a číslo řádku; přečti si ten řádek v souboru, rozhodni, jestli šlo o cheat, nebo o tvoji misi, a uprav ho nebo vyjmi.

Selhala kontrola podpisů v Armě. Klient má addon, k němuž server nemá klíč, nebo jinou verzi modu. Ujisti se, že server i klient načítají přesně stejné verze modů a že odpovídající .bikey je ve keys.

EAC vyhazuje všechny hráče v 7 Days to Die po instalaci modu. Mod obsahuje vlastní kód. Buď ho odstraň, nebo nastav EACEnabled na false - a pokud to uděláš, dej na server heslo.

Po aktualizaci hry se nikdo nemůže připojit. Anti-cheat klienta se aktualizoval s hrou a server ne. Aktualizuj server; na serveru s mody aktualizuj i mody.

FAQ#

Můžu někoho zabanovat přes BattlEye, aby se nemohl připojit na žádný server?

Ne. Tvoje bany platí jen pro tvůj server. Globální bany vydává BattlEye nebo vývojář na základě vlastní detekce. U některých her je možné nahlásit cheatera výrobci s důkazy, ale globální ban přímo spustit nemůžeš.

Můžu odbanovat hráče, který dostal globální ban omylem?

Ne, a nesnaž se to obejít vypnutím anti-cheatu. Hráč se odvolává u výrobce nebo vývojáře hry. Můžeš mu říct, kam se obrátit, a tím tvoje účast končí.

Stojí provoz anti-cheatu výkon serveru?

Velmi málo. Serverové komponenty dělají ve srovnání se simulací hry téměř nic. Skriptové filtry BattlEye v Armě přidávají určitou zátěž na vytíženém serveru se složitými filtry, ale zřídka tolik, abys to poznal.

Je server s vypnutým anti-cheatem automaticky plný cheaterů?

Ne, pokud se na něj nikdo nemůže připojit. Soukromý server za heslem nebo seznamem povolených, pro skupinu, která se zná, je naprosto rozumný způsob, jak provozovat mody, které anti-cheat blokuje. Problém je veřejný server s vypnutým anti-cheatem.

Kolidují serverové pluginy s BattlEye nebo EAC?

Obecně ne. Serverový kód se klientů nikdy nedotkne, a klient je jediné místo, kam se anti-cheat dívá. Konflikty způsobují klientské mody, které se zahákují do herního procesu.


Komentáře

Zcela anonymně: žádný účet, žádný e-mail, žádné cookie. Ukládáme jen jméno, které napíšeš, text a čas - nic dalšího. Počet odkazů je omezený a značkování se nevykresluje.

0/2000