InfraGuard

Erkennungen + Regelsätze für JA3-Sequenzen

Der Flaggschiff-Bildschirm der Erkennung — erläutert die Erkennungs-Engines (Kitsune, srct, nginx, JA3) und leitet mit einer deterministischen Heuristik Anomalie-Regelsätze aus JA3-Sequenzen ab (infr_sec_ruleset).

Überblick — was der Bildschirm leistet

Security ▸ Detections (/security/detections) ist das Erkennungs-Flaggschiff von InfraGuard. Er führt drei Dinge auf einer Seite zusammen:

  1. Erzählung der Erkennungsalgorithmen — Lern-Popover erklären, wie jede Engine Bedrohungen fängt (Kitsune ML · srct-Heuristiken · nginx is_suspicious · JA3).
  2. Erzählung nach der Erkennung — zeigt anhand echter Daten die auffälligen IPs · verdächtigen Web-Zugriffe · Laufhistorie, die jede Engine im jüngsten Fenster erfasst hat.
  3. ★ Regelsätze für JA3-Sequenzen — eine deterministische Heuristik liest die chronologische JA3-Fingerabdruckfolge einer einzelnen Quell-IP und zählt ihr „fortlaufendes anomales Verhalten“ als fachsprachliche Regelsätze auf, gespeichert in infr_sec_ruleset.

Erfassung und automatische Sperrung laufen im Backend bereits (die alte stats-design-Oberfläche zeigte nur Firewall- und Blacklist-Tabellen) — der Zweck dieses Bildschirms ist es, diese verborgene Telemetrie als verlässliche Erzählung sichtbar zu machen.

Dieser Bildschirm ist überwiegend lesend + Analyse auf Abruf. Die Detektoren selbst (kts_tx · srct_tx · eve_ingest) sind Node-Collectors, die unter pm2 auf den Zielhosts laufen; die Anwendung liest nur die Tabellen, die sie füllen. Sie schnüffelt selbst niemals Datenverkehr mit.

Der LLM-Erzählpfad wurde am 2026-09-04 entfernt. Früher schickte die Analyse die Sequenzzusammenfassung an einen KI-Adapter und speicherte dessen Freitextantwort. Drei gemessene Probleme haben das beendet: Die Schlussfolgerung des LLM („JA3-Rotation“) war dieselbe, die eine dreizeilige Verhältnisrechnung bereits lieferte — bei rund 9.100 Token pro Lauf; der Freitext fror die Sprache des Schreibenden ein, sodass englische Sitzungen koreanische Karten lasen; und der Schreibpfad stempelte provider/model selbst im Rückfallfall aus dem Adapter, weshalb 10 von 13 gespeicherten Zeilen model=kimi-k2.6 behaupteten, obwohl sie Vorlagenausgabe waren. Die Analyse ist nun rein heuristisch — kein externer Aufruf, keine Token-Kosten — und provider/model halten fest, was tatsächlich lief.


Wann man ihn nutzt


Aufbau

KPI-Leiste

KPI Bedeutung Quelle
KI-Anomalien Anzahl der Kitsune-Anomalien im gewählten Fenster Zählung aus kitsune_detail_log
KI-Sperren Davon is_blocked=1 (Schwellwert + Veto erfüllt) kitsune_detail_log where is_blocked
Verdächtiger Webverkehr nginx-Anfragen mit is_suspicious=1 im Fenster Zählung aus nginx_meta_ct
Regelsätze Derzeit aktive Regelsätze (status=active) infr_sec_ruleset

Die ersten beiden KPI heißen „KI“, weil Kitsune tatsächlich ein Autoencoder des maschinellen Lernens ist — diese Bezeichnung stimmt und bleibt.

Panel der Erkennungsalgorithmen (Edu-Popover)

Jede Engine-Karte öffnet ein Lern-Popover mit Prinzip · was sie beobachtet · Tipps. Der Text liegt im statischen Sprachpaket security.det.edu.*.

pm2-Rollout-Anleitung

Liefert Befehl und Quellcode, um die 5 Erkennungs-Collectors als pm2-Cron auf einem Zielhost auszurollen (siehe Datenquellen · pm2-Tabelle).

Erkennungsprotokoll & Laufhistorie

JA3-Verursacher & Regelsätze


Vorgehen

1) Erkennungslage überblicken

Der Bereichsschalter (1h / 6h / 24h) oben ändert das Beobachtungsfenster (Standard 24h). KPI und Erkennungsprotokolle werden für dieses Fenster neu berechnet. Die Seite fragt etwa alle 30 s ab, der Dienst cacht 30 s.

Allein die Verursacherliste umfasst stets die letzten 6 Stunden, unabhängig vom gewählten Bereich. JA3-Rotation baut sich über mehrere Stunden auf; ein kurzes Fenster zeigt das Muster nicht (abgestimmt auf das 360-Minuten-JA3-Fenster der automatischen Sperrung).

2) JA3-Sequenzanalyse ausführen (★)

  1. Wählen Sie eine IP aus der Verursacherliste (oder kommen Sie per Direktlink aus Overview/Threats) und klicken Sie [Analysieren].
  2. Der Server holt die TLS-JA3-Sequenz dieser IP chronologisch aus suricata_tls_ct (Fenster = Betriebsrichtlinie sec_ai_window_min, Standard 60 Min. · bis zu 200 Zeilen).
  3. Liegt die Sequenzlänge unter dem Minimum (sec_ai_min_seq, Standard 5), wird mit insufficient_sequence übersprungen.
  4. Die Heuristik ordnet die Sequenz in Befunde ein (siehe Regeltabelle unten).
  5. Das Ergebnis wird als Regelsätze gespeichert; Liste und der Trichter in Overview aktualisieren sich sofort.

Beispielantwort:

{
  "ok": true,
  "provider": "heuristic",
  "model": null,
  "saved": 1,
  "seq_len": 37,
  "findings": [
    { "key": "ja3_rotation",
      "params": { "conns": 37, "variety": 34 },
      "category": "tls_anomaly",
      "severity": "crit", "action": "block", "confidence": 91 }
  ]
}

Die Analyse ist deterministisch und kostenlos — dieselbe Sequenz ergibt immer dieselben Regelsätze, es wird nie ein externer Dienst kontaktiert, und sie funktioniert ohne Netzwerkzugang. Ein Lauf kostet nichts: Analysieren Sie ruhig erneut, sobald sich die Zahlen eines Verursachers ändern.

Heuristische Regeln

Befunde entstehen aus Sequenzstatistiken (rotation = ja3_variety / seq_len).

Bedingung Regelsatz Kategorie Schweregrad Empfehlung Konfidenz
variety ≥ 3 UND rotation ≥ 0,5 JA3-Rotation (automatisierter Scanner/Botnet) tls_anomaly rotation≥0,9 → crit, sonst warn block 50 + round(rotation×45), max. 95
Sensible URLs beobachtet (.env·.git·wp-config…) Sondieren von Zugangsdaten/Konfigurationsdateien credential_access crit block 88
variety = 1 UND conns ≥ 10 UND sni_variety ≥ 4 Mehrziel-Scan mit einzelnem JA3 scan warn observe 72
Nichts davon TLS-Basisaktivität other info observe 40

Sensible URLs werden über die Regex .env .git wp-config .aws /actuator phpunit /.. shell.php wp-login xmlrpc erkannt (aus nginx is_suspicious + suricata_http-Kontext).

Kategorien, Schweregrade und Empfehlungen werden vor dem Einfügen gegen die Spalten-Enums geprüft (recon · credential_access · exfil · bruteforce · c2 · tls_anomaly · scan · other / info · warn · crit / observe · block · isolate · report).

Formulierung der Regelsätze und Sprachen

Ein Befund wird als Identität gespeichert, nicht als Satz. heuristicFindings() liefert {key, params}; die Zeile behält rule_key + params (Migration 000783), und die Formulierung wird beim Lesen der Zeile in der Sprache des Lesenden angewandt.

Vor 000783 erzeugte Zeilen behalten ihren ursprünglichen Text. Die Migration stellt rule_key nur dort wieder her, wo die Evidenz der Zeile selbst die alte Vorlage exakt reproduziert (kein Raten); Freitextzeilen aus dem alten LLM-Pfad bleiben eingefroren, bis diese IP erneut analysiert wird und sie ersetzt werden.

3) Regelsätze verwalten

Aktion Wirkung
Aktivieren status=active (wirkt im Overview-Trichter / in der Sperr-Erzählung)
Zurückstellen status=dismissed
Löschen Entfernt die Zeile

Eine erneute Analyse ersetzt nur die maschinell abgeleiteten Regelsätze dieser IP (löscht entity_type=ip, entity_key=ip, source=ai und legt sie neu an) — von Hand verfasste Regelsätze bleiben erhalten.

Das Feld action eines Regelsatzes ist eine Empfehlung, keine Anweisung. Nichts handelt danach: Die automatische Sperrung berechnet die JA3-Rotation direkt aus suricata_tls_ct und liest infr_sec_ruleset nie. Ein Regelsatz mit action=block sperrt nichts — gesperrt wird über Blocklist oder durch den Autoblock-Scheduler.

4) Geplante Sammlung (Opt-in)

Der Befehl infr:sec-analyze durchläuft die auffälligsten JA3-Verursacher und sammelt Regelsätze. Es ist ein Einmalbefehl, der nach dem Lauf endet, lässt sich also gefahrlos einplanen (kein Daemon).

# Sperre umgehen und einmal ausführen (Debug)
php artisan infr:sec-analyze --force

# Einzelne IP analysieren (ignoriert die Sperre)
php artisan infr:sec-analyze --ip=203.0.113.10

5) pm2-Rollout-Befehle kopieren

Die pm2-Karte bietet [Befehl kopieren] (pm2-Ausführungszeile), [Quellcode kopieren] (Snippet-Rumpf) und [Mit Instanzwerten füllen & kopieren] (Ersetzung der HOSTNAME/IP-Token). Der Quellcode stammt aus dem eingespielten Snippet in Inventory ▸ Tools (infr_snippet).


Datenquellen

Gelesene Alttabellen (nicht verändern)

Tabelle Verwendung Speisender Collector
kitsune_detail_log auffällige IP · anomaly_score · is_blocked kts_tx
kitsune_process_log Kitsune-Laufhistorie kts_tx
srct_process_log srct-Laufhistorie srct_tx
nginx_meta_ct verdächtige Web-Anfragen (is_suspicious) nginx_shipper/aggregator
suricata_tls_ct JA3-Sequenz (ja3_hash · sni · version) eve_ingest
suricata_http_ct HTTP-Kontext für die Analyse eve_ingest
blacklist_info Ergebnisse der automatischen Sperrung (Referenz) kts_tx · srct_tx
ip_info_loop Geo-/ASN-Anreicherung —

Neue Tabellen im Besitz der Anwendung

pm2-Rollout-Collectors

key Speist Rollout-Befehl (cron-restart)
eve_ingest suricata_*_ct pm2 start infr_eve_ingest.cjs --name infr-eve --cron-restart="0 0 * * 6"
kts_tx kitsune_*_log · blacklist_info pm2 start infr_kts_tx.cjs --name infr-kitsune --cron-restart="0 0 * * 2"
srct_tx srct_process_log · blacklist_info pm2 start infr_srct_tx.cjs --name infr-srct --cron-restart="0 0 * * 4"
sync_black ipset · iptables pm2 start infr_sync_black.mjs --name infr-syncblack --cron-restart="*/5 * * * *"
sync_firewall firewall_status pm2 start infr_sync_firewall.cjs --name infr-firewall --cron-restart="0 0 * * 0"

Dienste und Routen

Methode Route
GET /security/detections (index)
GET /security/detections/live (Polling)
POST /security/detections/analyze (analysieren)
POST /security/detections/ruleset/save
POST /security/detections/ruleset/delete

Zugriff

Vorgang Schranke
Bildschirm ansehen Zugriff auf den Rollenbereich Security (min_req 2) — demo (1) sieht den Sicherheitsbereich gar nicht; staff (5) · admin (10) dürfen ihn ansehen
Analysieren / Regelsatz speichern·löschen user_level ≥ 2 (canWrite) + Audit in infr_audit_log

Fehlerbehebung & FAQ

Analyse mit insufficient_sequence übersprungen — die suricata_tls_ct-Sequenz dieser IP liegt unter sec_ai_min_seq (Standard 5). Erweitern Sie das Fenster (sec_ai_window_min, Standard 60 Min.) oder wählen Sie aus dem 6-Stunden-Fenster der Verursacherliste eine aktivere IP.


Verwandt

탐지 · AI JA3 시퀀스 분석
탐지 · AI JA3 시퀀스 분석