Bezpieczna instalacja skryptów FiveM (i wykrywanie malware)
Wgranie nowego skryptu na serwer FiveM to pięć minut roboty. Zainstalowanie ZŁEGO skryptu też — tyle że potem nie tracisz pięciu minut, lecz całe dnie, bo w świecie FiveM krąży zaskakująco dużo zasobów z wbudowanym backdoorem. Kto rozumie, jak zbudowany jest zasób, i wie, gdzie szukać czerwonych flag, instaluje szybciej i bezpieczniej.
Jak zbudowany jest zasób FiveM
Wszystko, co uruchamia Twój serwer, żyje w folderze resources. Każdy zasób ma tam własny folder, a foldery w nawiasach kwadratowych, jak [standalone], to tylko kategorie dla porządku — FiveM patrzy przez nie na wskroś.
Sercem każdego zasobu jest fxmanifest.lua (w starszych skryptach spotkasz jeszcze __resource.lua). Tam zapisane jest, które pliki działają po stronie klienta, które po stronie serwera i od jakich innych zasobów skrypt zależy. Pliki klienckie działają na komputerze każdego gracza, pliki serwerowe tylko u Ciebie, a współdzielone w obu miejscach. Ten manifest to od razu Twój pierwszy punkt kontroli: prosty skrypt dekoracyjny, który według swojego manifestu wykonuje też sporo rzeczy po stronie serwera, budzi pytania. A jeśli w manifeście są pliki, których w folderze w ogóle nie znajdziesz — albo odwrotnie, pliki nigdzie niewymienione — to powód, żeby przyjrzeć się bliżej, co tam się dzieje.
Nazwa folderu jest jednocześnie nazwą zasobu. Nie używaj spacji ani dziwnych znaków i nie zmieniaj nazwy folderu ot tak: niektóre skrypty odwołują się wewnętrznie do własnej nazwy i psują się wtedy bez czytelnego komunikatu o błędzie.
Instalacja w czterech krokach
- Przejrzyj przed wgraniem. Rozpakuj zip lokalnie i przejdź przez kod (na co zwracać uwagę, przeczytasz niżej). Najpierw wgrać, a dopiero potem patrzeć — to zła kolejność.
- Wgraj do
resources. Przez panel albo SFTP, porządnie do folderu-kategorii, żeby za pół roku wciąż wiedzieć, co gdzie leży. - Dodaj zasób do
server.cfglinią w styluensure mijn-script. Kolejność ma znaczenie: Twój framework (jak ESX czy QBCore) i biblioteki takie jak oxmysql muszą wystartować, zanim ruszą skrypty, które na nich polegają. - Zrestartuj i przetestuj. Sprawdź w konsoli, czy zasób podnosi się bez błędów, i sam przetestuj funkcjonalność w grze, najlepiej z drugim kontem pod ręką.
Jeszcze jedna rada, która oszczędza mnóstwo zachodu: nigdy nie instaluj pięciu skryptów naraz. Jeśli coś pójdzie nie tak, nie wiesz, który z pięciu zawinił. Instalowanie i testowanie po kolei prawie nie kosztuje czasu, a oszczędza śledztwa.
Uważaj też na sam server.cfg. Jest tam Twój klucz licencyjny, a często i hasła oraz klucze API. Nigdy nie udostępniaj tego pliku bez namysłu na kanale Discorda, gdy szukasz pomocy przy instalacji — najpierw usuń z niego wszystkie sekrety. Wyciek klucza licencyjnego oznacza, że ktoś może podszywać się pod Twój serwer, a tego bonusu nie chcesz.
Płatny, darmowy czy „leak"?
Płatne skrypty kupujesz niemal zawsze przez Tebex, oficjalną platformę sprzedaży w ekosystemie FiveM. Wielu twórców korzysta przy tym z escrow: kod jest zaszyfrowany i działa tylko z Twoją licencją. Zaleta — masz pewność, że to oryginalna wersja. Wada: zaszyfrowanego kodu nie przeczytasz, więc sam go nie sprawdzisz ani nie zmodyfikujesz, poza celowo pozostawionymi otwartymi plikami konfiguracyjnymi. To realny kompromis, nie szczegół.
Darmowe skrypty z GitHuba są za to w pełni czytelne. Znane projekty mają tysiące użytkowników, którzy patrzą na kod, więc błędy i „niespodzianki" szybko wychodzą na jaw. Małe, nieznane repozytoria bez historii zasługują na taką samą nieufność jak każdy przypadkowy plik z internetu.
No i „leaki": płatne skrypty oferowane gdzieś za darmo. Pomijając to, że krzywdzisz nimi deweloperów, strony z leakami to główny kanał dystrybucji malware. Wyciekły skrypt jest regularnie modyfikowany przed ponownym wgraniem — z dodatkiem, który nie kosztuje Cię nic, poza całym serwerem.
Czerwone flagi: jak rozpoznać backdoora
Po prostu otwórz każdy nowy zasób w edytorze tekstu; Lua jest dobrze czytelna nawet bez doświadczenia w programowaniu. Oto sygnały, na które zwracasz uwagę:
| Sygnał | Dlaczego podejrzany |
|---|---|
| Nieczytelne bloki kodu: ciągi hex, base64, jedna gigantyczna linia | Obfuskacja ukrywa, co robi kod — w „darmowym" skrypcie to prawie zawsze zły znak |
load( lub assert(load( na stringach albo pobranych danych | Wykonuje kod, który przychodzi dopiero w czasie działania, całkowicie poza Twoim wzrokiem |
PerformHttpRequest do nieznanych domen przy starcie | Może pobierać zewnętrzne komendy albo wyprowadzać dane Twojego serwera na zewnątrz |
| Webhooki Discorda, których sam nie skonfigurowałeś | Wysyła dane z Twojego serwera na cudzy kanał |
| Handlery eventów rozdające pieniądze, broń lub uprawnienia | Klasyczny zdalny backdoor: twórca może zdalnie nadać sobie admina |
Praktyczne wyszukiwanie przed każdą instalacją: przeszukaj wszystkie pliki pod kątem PerformHttpRequest, load( i webhook. Nie każde trafienie jest złe — skrypt logujący MA prawo zawierać webhooki — ale każde trafienie musi dać się wyjaśnić tym, co skrypt powinien robić.
Jeszcze jeden niuans: zaszyfrowane pliki escrow z Tebexu to co innego niż samodzielnie zaciemniona Lua w darmowym pliku do pobrania. W pierwszym przypadku szyfrowanie obsługuje platforma i znasz sprzedawcę; w drugim uploader ma coś do ukrycia.
Zachowaj czujność także PO instalacji. Backdoor, który siedzi cicho w kodzie, często i tak zdradza się zachowaniem: zasób, który według resmon pożera zaskakująco dużo mocy obliczeniowej, choć nic widocznego nie robi, albo połączenia do domen, których nie znasz. Kilka dni obserwacji po każdej nowej instalacji kosztuje niewiele, a łapie dokładnie te przypadki, które umknęły Ci przy czytaniu.
Jednak wpadka? Tak posprzątasz
Sygnały, że coś jest nie tak: „adminowie", których nie znasz, pieniądze lub przedmioty znikąd, komendy, których nigdy nie dodawałeś, albo skrypt łączący się z dziwnymi domenami. W takim przypadku:
- Wyłącz serwer, żeby backdoor nie był aktywnie wykorzystywany, gdy Ty sprzątasz.
- Wymień wszystkie sekrety: klucz licencyjny, hasła do txAdmin i RCON, hasła do bazy danych i ewentualne klucze API.
- Usuń podejrzany zasób — plus wszystko, co pobrałeś z tego samego źródła.
- Przywróć backup sprzed infekcji albo zbuduj folder resources od nowa ze znanych, czystych źródeł.
Ten ostatni krok brzmi drastycznie, ale backdoor mógł zmodyfikować inne pliki. Wyrzucenie tylko widocznie złego skryptu to pozorne bezpieczeństwo. Dlatego standardowo rób backup przed każdą nową instalacją — wtedy przywracanie to kwestia minut, a nie dni.
Bezpieczne eksperymenty bez ryzyka dla głównego serwera
Najbezpieczniejszy sposób na testowanie nowych skryptów to osobny serwer testowy bez prawdziwych danych graczy. W MC-Node zrobisz to bez kosztów: pakiet Free za 0,00 zł miesięcznie jest dokładnie do tego. Jeśli skrypt działa tam przez jakiś czas bez zarzutu, ze spokojem przenosisz go na główny serwer. Do produkcji wybierasz spośród pakietów od Small (7,56 zł miesięcznie) do Enterprise (241,92 zł miesięcznie), wszystkie z możliwością rezygnacji co miesiąc, na własnym sprzęcie z dyskami NVMe i ochroną DDoS w centrum danych Previder w Hengelo. Sprawdź opcje w sklepie FiveM od MC-Node — i trzymaj obok ten darmowy serwer testowy, bo to była i jest Twoja najlepsza obrona przed złymi skryptami.