FiveM-scripts veilig installeren (en malware herkennen)
Een nieuw script op je FiveM-server zetten is vijf minuten werk. Een verkéérd script installeren ook — alleen ben je daarna geen vijf minuten maar dagen bezig, want in de FiveM-wereld circuleren opvallend veel resources met een ingebouwde backdoor. Wie snapt hoe een resource in elkaar zit én weet waar de rode vlaggen zitten, installeert sneller én veiliger.
Zo zit een FiveM-resource in elkaar
Alles wat je server draait leeft in de map resources. Elke resource heeft daar een eigen map, en mappen met blokhaken zoals [standalone] zijn alleen categorieën om het overzichtelijk te houden — FiveM kijkt er dwars doorheen.
Het hart van elke resource is fxmanifest.lua (bij oudere scripts kom je nog __resource.lua tegen). Daarin staat welke bestanden client-side draaien, welke server-side, en van welke andere resources het script afhankelijk is. Client-bestanden draaien bij elke speler op de pc, server-bestanden alleen bij jou, en gedeelde bestanden op beide plekken. Dat manifest is meteen je eerste controlepunt: een simpel decoratiescript dat volgens zijn manifest ook server-side van alles uitvoert, roept vragen op. En staan er bestanden in het manifest die je in de map helemaal niet terugvindt — of andersom, bestanden die nergens genoemd worden — dan is dat reden om extra goed te kijken wat daar gebeurt.
De mapnaam is tegelijk de resource-naam. Gebruik geen spaties of vreemde tekens, en hernoem een map niet zomaar: sommige scripts verwijzen intern naar hun eigen naam en breken dan zonder duidelijke foutmelding.
Installeren in vier stappen
- Bekijk vóór je uploadt. Pak het zip-bestand lokaal uit en loop de code door (waar je op let, lees je hieronder). Eerst uploaden en dan pas kijken is de verkeerde volgorde.
- Upload naar
resources. Via je paneel of SFTP, netjes in een categorie-map, zodat je over een half jaar nog weet wat waar staat. - Zet de resource in
server.cfgmet een regel alsensure mijn-script. De volgorde telt: je framework (zoals ESX of QBCore) en libraries zoals oxmysql moeten gestart zijn vóórdat de scripts starten die erop leunen. - Herstart en test. Kijk in de console of de resource zonder errors opkomt en test de functionaliteit zelf in de game, het liefst met een tweede account erbij.
Nog een tip die veel gedoe voorkomt: installeer nooit vijf scripts tegelijk. Gaat er dan iets mis, dan weet je niet welke van de vijf de schuldige is. Eén voor één installeren en testen kost nauwelijks extra tijd en bespaart je een zoektocht.
En pas op met je server.cfg zelf. Daar staan je licentiekey en vaak ook wachtwoorden en API-keys in. Deel dat bestand nooit zomaar in een Discord-kanaal als je hulp zoekt bij een installatieprobleem — haal eerst alle geheimen eruit. Een gelekte licentiekey betekent dat iemand anders zich als jouw server kan voordoen, en dat wil je er niet gratis bij hebben.
Betaald, gratis of 'gelekt'?
Betaalde scripts koop je vrijwel altijd via Tebex, het officiële verkoopplatform in het FiveM-ecosysteem. Veel makers gebruiken daarbij escrow: de code is versleuteld en draait alleen met jouw licentie. Het voordeel is dat je zeker weet dat je de originele versie hebt. Het nadeel: je kunt de versleutelde code niet lezen en dus ook niet zelf controleren of aanpassen, op de bewust opengelaten configbestanden na. Dat is een reële afweging, geen detail.
Gratis scripts van GitHub zijn juist volledig leesbaar. Bekende projecten hebben duizenden gebruikers die meekijken, waardoor fouten en geintjes snel aan het licht komen. Kleine, onbekende repos zonder historie verdienen dezelfde argwaan als elke willekeurige download van internet.
Dan de 'leaks': betaalde scripts die ergens gratis worden aangeboden. Los van het feit dat je er de ontwikkelaars mee benadeelt, zijn leaksites hét distributiekanaal voor malware. Een gelekt script is geregeld aangepast voordat het opnieuw werd geüpload — met een extraatje erin dat jou niets kost, behalve je complete server.
Rode vlaggen: zo herken je een backdoor
Open elke nieuwe resource gewoon in een teksteditor; Lua is goed leesbaar, ook zonder programmeerervaring. Dit zijn de signalen waar je op let:
| Signaal | Waarom verdacht |
|---|---|
| Onleesbare blokken code: hex-strings, base64, één gigantische regel | Obfuscation verbergt wat de code doet — in een 'gratis' script vrijwel altijd foute boel |
load( of assert(load( op strings of binnengehaalde data | Voert code uit die pas tijdens runtime binnenkomt, volledig buiten jouw zicht |
PerformHttpRequest naar onbekende domeinen bij het opstarten | Kan externe commando's ophalen of jouw servergegevens naar buiten lekken |
| Discord-webhooks die jij niet zelf hebt ingesteld | Stuurt data van jouw server naar het kanaal van iemand anders |
| Event handlers die geld, wapens of rechten uitdelen | De klassieke remote-backdoor: de maker kan zichzelf op afstand admin maken |
Een praktische zoekactie vóór elke installatie: doorzoek alle bestanden op PerformHttpRequest, load( en webhook. Niet elke treffer is fout — een logging-script hóórt webhooks te bevatten — maar elke treffer moet verklaarbaar zijn vanuit wat het script zou moeten doen.
Nog een nuance: versleutelde escrow-bestanden van Tebex zijn iets anders dan zelf-geobfusceerde Lua in een gratis download. In het eerste geval regelt het platform de versleuteling en ken je de verkoper; in het tweede geval heeft de uploader iets te verbergen.
Blijf ook ná de installatie even alert. Een backdoor die zich stilhoudt in de code, verraadt zich vaak alsnog in gedrag: een resource die volgens resmon opvallend veel rekenkracht vreet terwijl hij niets zichtbaars doet, of verbindingen naar domeinen die je niet kent. Een paar dagen meekijken na elke nieuwe installatie kost weinig en vangt precies de gevallen die je bij het lezen hebt gemist.
Toch raak? Zo maak je het schoon
Signalen dat er iets mis is: 'admins' die je niet kent, geld of items uit het niets, commando's die je nooit hebt toegevoegd, of een script dat verbinding maakt met vreemde domeinen. In dat geval:
- Haal de server offline, zodat de backdoor niet actief misbruikt kan worden terwijl jij opruimt.
- Vervang al je geheimen: licentiekey, txAdmin- en RCON-wachtwoorden, databasewachtwoorden en eventuele API-keys.
- Verwijder de verdachte resource — plus alles wat je van dezelfde bron hebt binnengehaald.
- Zet een backup terug van vóór de besmetting, of bouw je resources-map opnieuw op uit bekende, schone bronnen.
Die laatste stap voelt drastisch, maar een backdoor kan andere bestanden hebben aangepast. Alleen het zichtbaar foute script weggooien is dan schijnveiligheid. Maak daarom standaard een backup vóór elke nieuwe installatie — dat maakt herstellen een kwestie van minuten in plaats van dagen.
Veilig experimenteren zonder je hoofdserver te riskeren
De veiligste manier om nieuwe scripts te proberen is een aparte testserver zonder echte spelersdata. Bij MC-Node kan dat zonder kosten: het Free-pakket van €0,00 per maand is daar precies voor bedoeld. Draait een script daar een tijdje netjes, dan zet je het met een gerust hart op je hoofdserver. Voor productie kies je uit pakketten van Small (€1,75 per maand) tot Enterprise (€56,00 per maand), allemaal maandelijks opzegbaar, op eigen hardware met NVMe-opslag en DDoS-bescherming in het Previder-datacenter in Hengelo. Bekijk de opties in de FiveM-store van MC-Node — en houd die gratis testserver ernaast, want dat is en blijft je beste verdediging tegen foute scripts.