Sentinel Guard · Setup

Sentinel Guard in 10 Minuten installieren

Diese Anleitung führt dich durch Installation, Konfiguration und ersten Test der Anti-Cheat-Resource für deinen FXServer (FiveM).

Was Sentinel Guard ist

Sentinel Guard ist eine FXServer-Resource, die jeden Spieler aus Server-Perspektive beobachtet. Es gibt keine Client-DLL, keinen Treiber und keine Software, die der Spieler installieren muss.

Detections (Teleport, God-Mode, Waffen-Spawn, Vehicle-Mods, Noclip, Ped-Swap, Event-Flood, Aimbot-Heuristiken, Honeypots, Resource-Integrity und mehr) laufen Lua-seitig. Jedes auffällige Event wird HMAC-signiert an das Sentinel-Backend gesendet. Dort entscheidet eine Engine über Score, Cases und Auto-Aktionen (Kick/Ban). Aktuelle Resource-Version: 0.6.x.

Voraussetzungen

  • FXServer (txAdmin oder Standalone) auf Linux oder Windows.
  • Outbound-HTTPS auf sentinelscan.de (Port 443).
  • Sentinel-Account auf /auth/login.
  • Mindestens Guard-Starter-Tier — siehe Preise.

Resource installieren

  1. Lade das vorkonfigurierte ZIP aus Dashboard → Guard / AC Install (oder ein Release-Paket) in deinen resources/-Ordner:
# Prefer the preconfigured ZIP from Dashboard → Guard / AC Install
# (license & server credentials are baked in).
# Manual place into resources/ if you already have a package:
cd /path/to/fxserver/resources
unzip sentinel-ac-0.6.0.zip -d sentinel-ac
  1. In server.cfg aktivieren (möglichst weit oben):
ensure sentinel-ac

Server-ID & Secret

Im Dashboard einloggen auf /ac, dann Server → Neuen Server anlegen. Du bekommst zwei Werte:

  • server_id — eine UUID, identifiziert deinen Server.
  • secret — wird für HMAC-Signaturen verwendet — nicht öffentlich teilen.

Trage beides ein in resources/sentinel-ac/config.lua:

Config = Config or {}
Config.BaseUrl  = 'https://sentinelscan.de/sentinel-ac-api'
Config.ServerId = '01288a78-f27a-4dcf-8024-80b6c6156515'
Config.Secret   = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

Config.ServerHeartbeatMs = 15000
Config.ClientHeartbeatMs = 10000
Config.WeaponPollMs      = 4000
Config.VehicleModPollMs  = 2500
Config.NoclipSampleMs    = 1500
Config.PedModelPollMs    = 3000

Anschließend Server neu starten oder refresh; restart sentinel-ac.

Smoke-Test

Nach dem Start solltest du in der FXServer-Konsole sehen:

[sentinel-ac] resource_hash = a4f2c1d8b9e7…
[sentinel-ac] action poller started

Im Dashboard unter /ac/servers erscheint dein Server online, mit Spielerzahl. Joine als Testspieler — er taucht auf unter /ac/players.

Manueller Kick zum Testen: Admin → Actions, Identifier eintragen, "kick" wählen, Begründung eingeben.

Rollen & Bypasses

Staff/Admins sollen nicht selber geflaggt werden. Trage ihre Identifier (z.B. steam:11000010ababcd) unter Admin → Rollen ein und wähle die nötigen Bypasses:

  • bypass_position — kein Teleport-Flag (z.B. /tp-Befehle)
  • bypass_health — God-Mode während Tests
  • bypass_weapon_spawn — wenn Admins Waffen geben
  • bypass_vehicle_mod — Custom-Tuner-Tests
  • bypass_ped_model — Roleplay-Skins
  • bypass_invis — Stealth-Mod
  • bypass_event_flood — Skript-Tests mit hoher Event-Rate

Auto-Actions & Bans

Das System eskaliert automatisch:

  • Score ≥ 100 → Auto-Kick (mit 5min Cooldown gegen Loops)
  • Score ≥ 250 → Auto-Ban (persistent, blockt Re-Joins via Deferral)

Bans sind in der DB gespeichert (Tabelle ac_bans) und werden von der Lua-Resource bei jedem playerConnecting per HMAC-Check abgefragt. Manuelles Aufheben unter Admin → Bans.

Score-Decay: Standard −20 / Minute. Konfigurierbar per Backend-ENVSCORE_DECAY_PER_MINUTE

Discord-Alerts

Setze in deinem Backend (oder per Server-Setting) einen Webhook:

# backend .env
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/123…/abc…

Dann erhältst du Embeds bei Case-Open und Case-Eskalation (Severity-Aufstieg). Pro (Server, Identifier, Regel) ist das auf 1× / 5min rate-limited, damit Flap-Detections nicht spammen.

Rule-Overrides pro Server

Unter Admin → Regeln kannst du jede Regel pro Server anpassen:

  • aktivieren / deaktivieren
  • Severity überschreiben (low/medium/high/critical)
  • Weight multiplizieren (0.0 – 10.0)

Beispiel: Drift-Server will vehicle_mod nicht flaggen → Toggle aus. Hardcore-PvP will weapon_spawn kritisch → Severity = critical, ×1.5.

Resource-Integrity

Die Lua-Resource hasht beim Start alle eigenen Script-Files (SHA-256) und schickt den Hash in jedem Server-Heartbeat. Im Backend (Tabelle ac_servers) kannst du den erwarteten Hash setzen:

UPDATE ac_servers
   SET expected_resource_hash = 'a4f2c1d8b9e7…'
 WHERE server_id = '<server UUID>';

Bei Mismatch wird automatisch ein Flag (severity=high, weight=35) gegen einen synthetischen __server__-Player erzeugt und ein Case geöffnet — du wirst sofort gewarnt, falls jemand Resource-Files manipuliert.

Troubleshooting

  • "bad_signature" — in Backend-Logs → Server-Uhr stimmt nicht (HMAC-Timestamp hat 5min Toleranz). NTP einrichten.
  • Spieler taucht nicht auf — Outbound-HTTPS blockiert? Test:curl -I https://sentinelscan.de/sentinel-ac-api/health
  • Auto-Kick feuert, aber Spieler bleibt — Action-Poller-Log in der Konsole prüfen ("action poller started"). Bei 404 auf /api/v1/ac/actions/pending ist die Resource veraltet.
  • Falsch positiv — Im Player-Detail das Flag "als FP markieren". Aggregierte FP-Stats unter /api/v1/ac/admin/review/fp-stats helfen beim Tuning.

Brauchst du Hilfe beim Setup?

Setup läuft vollständig per Self-Service über die Doku. Wenn etwas hakt, hilft dir der Support direkt im Ticket.

Support anschreiben