Hardening nového FiveM serveru: checklist, který bychom spustili první den

Publikováno 6 min čteníTitan Software z.s.

Ve zkratce

Zabezpečit nový FiveM server znamená vyřešit pět věcí dřív, než dorazí hráči: hostitele (SSH jen na klíče, firewall vystavující pouze herní a query port, FXServer běžící pod neprivilegovaným uživatelem), databázi (vlastní účet omezený na jedno schéma, nikdy dostupný z internetu), přístupové údaje (unikátní tajemství pro každou službu, uložená mimo strom resources a nikdy necommitnutá), oprávnění (ACE konfigurace napsaná záměrně, ne zděděná ze šablony, bez wildcard adminů) a přijímání resources (každý resource prověřený nebo proskenovaný před instalací, s poznamenaným původem a opakovanou kontrolou při aktualizaci). Přidejte otestované zálohy a jeden sepsaný kontakt pro incidenty a odstranili jste příčiny skoro každé kompromitace, kterou vídáme.

Hlavní body

  • Spouštějte FXServer pod neprivilegovaným uživatelem; kompromitovaný resource pak vlastní servisní účet, ne celý stroj.
  • Dejte serveru vlastní databázový účet omezený na jeho schéma — nikdy root přístup.
  • ACE konfiguraci napište záměrně. Zděděná oprávnění ze šablony jsou cesta, jak hráči skončí s konzolí.
  • Poznamenejte si při instalaci, odkud každý resource pochází; nezapsaný původ je původ, který nemáte.
  • Záloha, kterou jste nikdy neobnovili, je plán, ne záloha.

Nejlevnější hodina bezpečnostní práce je ta před připojením prvního hráče. Nic není v produkci, nic nepotřebuje servisní okno a každé rozhodnutí je pořád vratné. Takhle bychom tu hodinu využili.

1. Hostitel

  • Vypněte přihlašování heslem pro SSH a používejte klíče. Tahle jediná změna odstraní celou kategorii kompromitací hrubou silou.
  • Firewall s výchozím zákazem. Vystavte herní port, query port a svou administrativní cestu. Nic dalšího nemusí být z internetu dostupné.
  • Spouštějte FXServer pod vyhrazeným neprivilegovaným uživatelem, ne pod rootem ani pod vlastním loginem. Škodlivý resource zdědí práva toho uživatele — ať jsou malá.
  • Panel, pokud ho používáte, držte mimo veřejný internet nebo za autentizující proxy. Panely jsou trvalý cíl a často jsou skutečným místem vstupu.
  • Zapněte automatické bezpečnostní aktualizace operačního systému. Nezáplatované stroje padnou cestami, které s FiveM nemají nic společného.

2. Databáze

  1. 1Vytvořte serveru vyhrazeného databázového uživatele s právy jen na jeho schéma. Žádné GRANT ALL, žádný root, žádný sdílený účet napříč servery.
  2. 2Nabindujte MySQL/MariaDB na localhost nebo do privátní sítě. Databázi dostupnou z internetu někdo najde, a rychle.
  3. 3Použijte dlouhé náhodné heslo, které nepoužíváte jinde, a uložte ho tam, odkud ho strom resources nemůže vynést.
  4. 4Nastavte automatickou zálohu a jednou ji obnovte do testovací databáze, abyste doložili, že funguje.
  5. 5Logujte pomalé a neúspěšné dotazy. Bývají prvním viditelným znakem, že někdo prochází vaše data.

3. Přístupové údaje a konfigurace

Serverové Lua umí číst vaši konfiguraci, takže berte každé tajemství v ní jako jeden backdoor od zveřejnění. Neznamená to, že se tajemstvím vyhnete — znamená to, že jejich dosah je potřeba naplánovat.

  • Jedno tajemství na službu. Znovupoužití mění jednu kompromitaci resource v převzetí účtů všude.
  • Držte server.cfg mimo jakýkoli repozitář a ověřte, že ho .gitignore opravdu pokrývá, ještě před prvním commitem, ne po něm.
  • Dávejte Discord botům minimum oprávnění a oddělte alertovací webhook od čehokoli, co uděluje moderátorskou moc.
  • Zapište si, odkud každý klíč pochází a jak se mění. Pod tlakem incidentu vždycky chybí právě znalost „jak tohle vygeneruju znovu“.

4. Oprávnění (ACE) napsaná záměrně

Většina problémů s oprávněními ve FiveM je zděděná: šablonový server.cfg se širokým add_ace, přenášený přes tři generace serverů, udělující mnohem víc, než kdo zamýšlel. Napište si ten svůj od nuly a udržte ho dost krátký, aby se dal přečíst na jedné obrazovce.

ini
# Skupiny, definované jednou
add_ace group.admin command allow
add_ace group.moderator command.kick allow
add_ace group.moderator command.ban allow

# Lidé, každý jmenovitě
add_principal identifier.license:REPLACE_ME group.admin

# Nikdo nic nedědí automaticky
remove_ace resource.example command allow
Explicitní, pojmenované, minimální
  • Žádné wildcard udělení příkazů skupině, ve které je někdo jiný než vy.
  • Dávejte resourcům konkrétní ACE, které potřebují, ne plošný přístup k příkazům.
  • Projděte seznam principálů čtvrtletně a odstraňte lidi, kteří odešli. Přístup, který přežije vztah, je trvalé riziko.
  • Po každém incidentu si tenhle soubor přečtěte znovu — přidělení udělaná backdoorem přetrvají v konfiguraci i po odstranění resource.

5. Přijímání resources — nejdůležitější kontrola

Všechno výše zpevňuje prostředí. Tohle řeší, jak ke kompromitacím doopravdy dochází: provozovatel nainstaluje kód, který neprověřil. Udělejte z přijímání proces, ne impulz.

  1. 1

    Zaznamenejte původ při instalaci

    Odkud to je, jaká verze, kdo to schválil a kdy. Stačí tabulka. Bez ní později nepoznáte, co je původní.

  2. 2

    Vždycky revidujte nebo skenujte před instalací

    Přečtěte manifest a serverové skripty, nebo spusťte automatický sken a přečtěte důkazy. Jde o to, aby rozhodnutí padlo dřív, než kód dostane vaše přístupy.

  3. 3

    Nechte si původní archiv

    Je vaší základnou pro porovnání a artefaktem, který pošlete do scanneru nebo na kontakt pro hlášení, když se něco vynoří později.

  4. 4

    Kontrolujte znovu při každé aktualizaci

    Verze, kterou jste schválili, není verze, kterou v noci nainstaloval auto-updater. Berte aktualizace jako nové instalace.

  5. 5

    Odmítejte, co neumíte doložit

    Uniklé a crackenuté resources z definice prošly rukama někoho, kdo je upravil. Žádný hardening nevykompenzuje, že si to nainstalujete dobrovolně.

Proskenovat resource před instalacíBezplatná statická analýza archivů FiveM resources — bez přístupu k serveru, bez spouštění, s důkazy, které si ověříte.

6. Věci, za které si poděkujete

  • Otestovaná obnova. Ne záloha — obnova, kterou jste aspoň jednou opravdu provedli.
  • Monitoring, který upozorní člověka. Nečtený dashboard není monitoring.
  • Komunikační cesta pro admin tým mimo server, která nezávisí na serveru ani na botovi běžícím na něm.
  • Jednostránkový runbook pro incidenty. Během incidentu nikdo nečte wiki; čte stránku, která říká, co udělat první.
  • Poznamenaný kontakt pro odpovědné hlášení, aby výzkumník, který u vás něco najde, měl kam to poslat.

Nic z toho není exotické a nic z toho nevyžaduje bezpečnostní tým. Vyžaduje to jednou se rozhodnout, že instalace je rozhodnutí a přístupy se udělují záměrně. Servery, které padnou, skoro nikdy neprohrály s chytrým útokem; prohrály s resourcem, který nikdo nečetl, běžícím pod rootem, s heslem k databázi, které bylo zároveň heslem do panelu.

Časté dotazy

Jak zabezpečit nový FiveM server?

Ještě před otevřením hráčům: používejte SSH na klíče a firewall s výchozím zákazem, spouštějte FXServer pod neprivilegovaným uživatelem místo roota, dejte databázi vlastní omezený účet nedostupný z internetu, používejte unikátní tajemství pro každou službu, napište ACE oprávnění explicitně místo kopírování šablony a každý resource před instalací prověřte nebo proskenujte. Přidejte otestovanou obnovu ze zálohy a pokryli jste příčiny skoro každé kompromitace.

Má FiveM běžet pod rootem?

Ne. Serverové Lua běží s právy procesu FXServeru, takže běh pod rootem znamená, že jakýkoli škodlivý nebo kompromitovaný resource vlastní celý stroj — panel, další herní servery i všechny uložené přístupy. Vytvořte serveru vyhrazeného neprivilegovaného uživatele a držte jeho oprávnění k souborům přísná.

Jak často mám znovu skenovat už nainstalované FiveM resources?

Při každé aktualizaci, protože verze, kterou jste prověřili, není verze, kterou mezitím mohl nainstalovat auto-updater. U produkčního serveru se vyplatí zautomatizovat pravidelnou kontrolu celé sady resources — jednorázový sken popisuje, co jste nainstalovali, průběžné sledování popisuje, co běží teď.

Související projekty

Čtěte dál

5 min čtení

Co o serveru skutečně prozradí cfx.re join kód

Jak se FiveM join kódy resolvují, jaká data o endpointu a resourcech jsou veřejná a jak tuhle viditelnost využít na vlastní infrastruktuře.

Provoz serveruBezpečnost FiveM
Číst článek