Dokumentation
Willkommen zur Sentinel Scan Dokumentation. Diese Anleitung deckt alles ab – von der Ersteinrichtung bis zur erweiterten API-Nutzung und benutzerdefinierten Regelkonfiguration.
API →Integriere Scan-Cases, Reports, Webhooks und Guard-Bridge-Endpunkte. Die Live-OpenAPI-UI liefert das volle Schema — dieser Hub deckt Quickstart, Auth und Detection Engine V2 ab.
Schnellstart
Die Einrichtung von Sentinel Scan dauert etwa 5 Minuten:
Account erstellen
Registriere dich über Discord OAuth oder E-Mail auf der Login-Seite. Dein erster Tenant (Community) wird automatisch erstellt.
Discord konfigurieren
Gehe zu Einstellungen → Discord und gib deine Guild-ID und den gewünschten Report-Kanal ein. Der Bot wird mit den nötigen Berechtigungen auf deinen Server eingeladen.
Agent bereitstellen
Lade den Scan-Agent über dein Dashboard herunter. Konfiguriere ihn mit deinem API-Key und Server-Endpoint. Der Agent läuft auf Spieler-PCs, wenn er ausgelöst wird.
Ergebnisse prüfen
Scan-Ergebnisse erscheinen in deinem Dashboard und Discord-Kanal. Überprüfe Fälle, bestätige Bans oder entlaste Spieler.
Installation
Sentinel Scan ist eine Cloud-gehostete SaaS-Plattform — kein Self-Hosting nötig. Erstelle einfach einen Account und konfiguriere deinen Tenant.
Systemanforderungen
Der Scan-Agent erfordert Windows 10+ (64-Bit). Das Dashboard funktioniert in jedem modernen Browser.
Agent-Download
Lade den Agent über dein Dashboard oder direkt über die API herunter. Der Agent ist digital signiert und läuft mit minimalen Berechtigungen.
Netzwerk-Anforderungen
Der Agent kommuniziert über HTTPS (Port 443) mit der Sentinel Scan API. Stelle sicher, dass ausgehende Verbindungen zu sentinelscan.de erlaubt sind.
Konfiguration
Konfiguriere deine Tenant-Einstellungen, um Sentinel Scan für deine Community anzupassen.
Discord-Integration
Verbinde deinen Discord-Server, um Scan-Ergebnisse, Fall-Updates zu erhalten und Scans über Bot-Befehle zu verwalten. Navigiere zu Einstellungen → Discord.
API-Keys
Generiere API-Keys unter Einstellungen → API-Keys für programmatischen Zugriff. Keys nutzen das sk_-Präfix und werden über den Authorization-Header gesendet.
txAdmin-Integration
Verbinde deine txAdmin-Instanz, um Spieler nachzuschlagen und Bans direkt aus dem Dashboard auszustellen. Navigiere zu Einstellungen → txAdmin.
Server
Füge deine Gameserver unter Einstellungen → Server hinzu. Jeder Fall kann einem bestimmten Server zugeordnet werden.
API-Authentifizierung
Alle API-Anfragen erfordern eine Authentifizierung über:
- JWT Token: JWT-Token: Erhalten über /auth/login oder /auth/discord/callback
- API Key: API-Key: Generiert unter Einstellungen → API-Keys. Senden als
Authorization: Bearer sk_...
Alle Anfragen müssen den Tenant-Header enthalten:
GET /api/v1/cases Authorization: Bearer eyJhbG... X-Tenant-ID: your-tenant-uuid
Cases API
/api/v1/casesFälle mit Paginierung und Filterung auflisten
Query Parameters: limit - Number of results (default: 25, max: 100) offset - Pagination offset status - Filter: pending, in_review, confirmed, cleared, appealed search - Search by Steam ID or player name sort - Sort field: created_at, final_score, status order - Sort order: asc, desc
/api/v1/casesNeuen Fall erstellen und Scan-Token generieren
Body: {
"player_id": "steam:...",
"player_name": "Player",
"reason_type": "suspicious_activity",
"scan_scope": "full"
}
Response: { id, token, scan_url }/api/v1/cases/:idEinzelnen Fall per ID abrufen
Response: { id, steam_id, player_name, final_score, status, ... }/api/v1/cases/:id/statusFall-Status aktualisieren
Body: { "status": "confirmed" | "cleared" | "in_review" | "appealed" }/api/v1/cases/:id/assignFall einem Analysten zuweisen
Body: { "analyst_id": "uuid" }/api/v1/cases/:id/tokenNeuen Scan-Token für bestehenden Fall generieren
Response: { token, expires_at, scan_url }/api/v1/cases/:idFall löschen
Response: 204 No Content
/api/v1/cases/statsAggregierte Fall-Statistiken abrufen
Response: { total, pending, confirmed, cleared, ... }/api/v1/cases/bulk-deleteMehrere Fälle gleichzeitig löschen
Body: { "case_ids": ["uuid1", "uuid2"] }/api/v1/cases/bulk-clearFälle nach Status massenhaft bereinigen
Body: { "status": "pending" }Reports API
/api/v1/reportsScan-Bericht einreichen (Agent → Server)
Body: {
"token": "scan-token-here",
"result_json": { ... },
"score_components": "yara:20,hash:10",
"final_score": 30
}/api/v1/cases/:id/reportsBerichte für einen Fall auflisten
Response: { reports: [...] }Tenants API
/api/v1/tenantAktuelle Tenant-Infos und Live-Zähler abrufen
Response: { id, name, slug, plan, member_count, case_count, ... }/api/v1/tenantTenant-Einstellungen aktualisieren (Name, Akzentfarbe, Einstellungen)
Body: { "name": "My Community", "accent_color": "#5865F2", "settings": {} }/api/v1/tenant/membersTeammitglieder auflisten
Response: { members: [{ user_id, username, role, ... }] }/api/v1/tenant/membersTeammitglied hinzufügen
Body: { "user_id": "uuid", "role": "analyst" }/api/v1/tenant/members/:user_idTeammitglied entfernen
Response: 204 No Content
/api/v1/tenant/serversTenant-Server auflisten
Response: { servers: [{ id, name, game }] }/api/v1/tenant/serversServer hinzufügen
Body: { "name": "Server 1", "game": "fivem" }/api/v1/tenant/api-keysAPI-Keys auflisten
Response: { api_keys: [{ id, name, prefix, created_at }] }/api/v1/tenant/api-keysNeuen API-Key erstellen
Body: { "name": "My API Key" }
Response: { key: "sk_..." }/api/v1/tenant/api-keys/:key_idAPI-Key löschen
Response: 204 No Content
/api/v1/tenant/audit-logTenant Audit-Log einsehen
Query: limit, offset
Response: { entries: [{ action, actor, created_at, details }] }/api/v1/tenant/planAktuelle Plan-Details und Nutzung abrufen
Response: { plan, limits, usage, features }Analysen
Zugriff auf Dashboard-Statistiken und Erkennungsmetriken.
/api/v1/analytics/dashboardDashboard-Statistiken abrufen (Fälle, Scans, Trends)
Response: { total_cases, total_scans, confirmed_rate, trends, ... }/api/v1/analytics/dashboard/enhancedErweiterte Analysen mit detaillierten Aufschlüsselungen (Enterprise)
Response: { ... detailed breakdowns by server, time, detection type }/api/v1/detection/statsStatistiken der Erkennungs-Engine (Regel-Treffer, Trefferquoten)
Response: { rule_matches, hit_rates, top_rules, ... }/api/v1/detection/reputation-statsHash-Reputations-Statistiken
Response: { total_hashes, malicious, benign, unknown }Bewertungsgewichte
Die Bewertungs-Engine verwendet konfigurierbare Gewichte zur Berechnung des finalen Bedrohungs-Scores. Jeder Erkennungstyp trägt einen gewichteten Score bei.
/api/v1/scoring-weightsAktuelle globale Bewertungsgewichte abrufen
Response: { weights: { yara: 30, hash_deny: 25, loader: 20, keyword: 10, ... } }/api/v1/feedbackBewertungs-Feedback für einen Fall einreichen, um die Genauigkeit zu verbessern
Body: {
"case_id": "uuid",
"scanner_score": 75,
"analyst_score": 90,
"scanner_verdict": "suspicious",
"analyst_verdict": "confirmed",
"feedback_type": "score_correction"
}/api/v1/feedback/findingPer-Finding Feedback einreichen (Falsch-Positiv / Bestätigt)
Body: {
"code": "YARA_MATCH",
"path": "C:\\...",
"case_id": "uuid",
"action": "false_positive" | "confirmed"
}Discord Bot Einrichtung
Der Discord-Bot ermöglicht automatisierte Fallerstellung und Scan-Befehle direkt in deinem Server.
- Gehe zu Einstellungen → Discord in deinem Dashboard
- Gib deine Discord Guild (Server) ID ein
- Gib die Kanal-ID an, in der Scan-Berichte gepostet werden sollen
- Optional: Eigenen Bot-Token angeben oder den geteilten Sentinel Scan Bot nutzen
- "Auto-Scan bei neuen Beitritten" für automatisches Scannen aktivieren
Bot-Befehle:
/scan <steamid>— Scan für einen Spieler auslösen/case <steamid>— Bestehende Fälle nachschlagen/stats— Community Scan-Statistiken anzeigen
Eigene YARA-Regeln
YARA ist eine Evidence-Quelle in Detection Engine V2 — nicht der alleinige Decision-Kern. Signierte, versionierte Rule-Bundles treffen bekannte Cheat-Tools und Injektoren; schwache Treffer allein erzeugen keine Findings.
rule DetectCheatLoader {
meta:
description = "Detects common cheat loader pattern"
severity = "high"
score = 30
strings:
$inject = "inject.dll" nocase
$loader = "loader.exe" nocase
condition:
any of them
}Lade eigene Regeln über die Threat-Intel-Seite oder die API hoch unter POST /api/v1/intel/sources
/api/v1/rules/yaraAktuelle YARA-Regeln abrufen
Response: { rules: "rule ... { ... }" }/api/v1/rules/yaraYARA-Regeln aktualisieren
Body: { "rules": "rule ... { ... }" }/api/v1/rules/versionsRegel-Versionshistorie einsehen
Query: type=yara
Response: { versions: [{ id, created_at, type }] }/api/v1/rules/testRegeln live gegen einen Bericht testen
Body: { "report": { ... } }
Response: { matches: [...], score: 42 }Bedrohungsintelligenz
Verwalte externe Threat-Intelligence-Quellen. Quellen werden automatisch synchronisiert und in die Erkennungs-Engine integriert.
/api/v1/intel/sourcesThreat-Intel-Quellen auflisten (eigene + globale)
Response: { sources: [{ id, name, source_type, url, last_synced }] }/api/v1/intel/itemsThreat-Intel-Einträge auflisten
Query: limit, source_id
Response: { items: [...] }/api/v1/intel/sourcesNeue Threat-Intel-Quelle hinzufügen
Body: { "name": "My Intel", "source_type": "yara_repo", "url": "https://..." }/api/v1/intel/sources/:id/syncBestimmte Intel-Quelle synchronisieren
Response: { synced_items: 42 }/api/v1/intel/syncAlle aktiven Intel-Quellen synchronisieren
Response: { queued: true }Whitelist
Verwalte Whitelist-Einträge, um bekanntermaßen sichere Dateien, Prozesse oder Spieler von der Erkennung auszuschließen.
/api/v1/whitelistWhitelist-Einträge auflisten (nach Typ filtern)
Query: type=hash|process|player
Response: { entries: [...] }/api/v1/whitelistWhitelist-Eintrag hinzufügen
Body: { "entry_type": "hash", "value": "abc123...", "reason": "Known safe" }/api/v1/whitelist/:entry_idWhitelist-Eintrag entfernen
Response: 204 No Content
Spieler-Historie
Verfolge die Scan-Historie eines Spielers über mehrere Fälle hinweg.
/api/v1/player-historySpieler-Historie per Discord-ID, Lizenz oder Spieler-ID nachschlagen
Query: discord_id | license | player_id
Response: { history: [{ case_id, status, score, created_at }] }Massen-Scan-Warteschlange
Stelle mehrere Spieler gleichzeitig zum Scannen in die Warteschlange.
/api/v1/bulk-queueMassen-Scan-Warteschlange auflisten
Response: { queue: [{ id, player_id, status, created_at }] }/api/v1/bulk-queueSpieler zur Warteschlange hinzufügen
Body: { "player_id": "steam:...", "discord_id": "123", "license": "abc" }/api/v1/bulk-queue/:queue_idWarteschlangen-Element aktualisieren
Body: { "status": "completed" }/api/v1/bulk-queue/:queue_idSpieler aus der Warteschlange entfernen
Response: 204 No Content