InfraGuard

Sicherheits-Problemlösung

Ein Fall-Board, das Sicherheitsvorfälle und Kompromittierungen durch den Ablauf offen→in Analyse→Ursache→gelöst→abgeschlossen führt und kritische Befunde, die aus der Sicherheitsdiagnose hochgestuft wurden, automatisch nachverfolgt.

Überblick — was dieser Bildschirm leistet

Sicherheit ▸ Problemlösung steuert die Reaktion auf Sicherheitsvorfälle und Kompromittierungen als ein einziges Fall-Board mit einer fünfstufigen Pipeline:

open → investigating → cause_identified → resolved → closed

Jeder Fall trägt eine 500-Berichtsstruktur (direkte Ursache / Grundursache / Lösung / Präventivmaßnahme) sowie eine auditierbare Zeitleiste. Dieser Bildschirm spiegelt den Controller von Service ▸ Problemlösung: Er nutzt dieselbe Tabelle infr_incident, filtert aber auf area='security', damit Sicherheitsfälle von Service-Vorfällen getrennt bleiben.

Fälle gelangen auf zwei Wegen auf dieses Board:

  1. Manuelle Erfassung — eine Betreiberin oder ein Betreiber legt den Fall an. Wählbare Quellen: manual · agency · quarantine.
  2. Hochstufung aus der Diagnose — Befunde mit fail + crit aus der Sicherheitsdiagnose werden automatisch zu Fällen hochgestuft (source=detection). Dies ist eine reine Systemquelle, die sich nicht von Hand auswählen lässt.

Diese Konsole greift weder auf entfernte crontabs noch auf Firewalls direkt zu. Sie ist ein Workflow-Werkzeug, das den menschlichen Reaktionsprozess dokumentiert und nachverfolgt. Die tatsächlichen Sperr- und Quarantäneaktionen finden Sie unter Sperrliste und Automatische Sperre.


Wann Sie ihn verwenden


Aufbau

KPI-Leiste

KPI Definition
total Gesamtzahl der Fälle mit area='security'
active Summe aus open + investigating + cause_identified
resolved Summe aus resolved + closed
MTTR Durchschnittliche Minuten der Fälle, die sowohl occurred_at als auch resolved_at besitzen
downtime Summe von downtime_min über alle Fälle
uptime target OpsPolicy::slaDefaults()['uptime_target']

Fall-Board

Die Fälle werden sortiert nach:

  1. Statusrang — open → investigating → cause_identified → resolved → closed
  2. Schweregradrang — crit → warn → info
  3. Neueste zuerst — id absteigend

Jede Karte zeigt Titel, Schweregrad, Status, Quellen-Badge, verknüpftes Projekt bzw. verknüpften Dienst, Eintrittszeitpunkt, Ausfallzeit und Ereignisanzahl.

Detail-Dialog

Beim Öffnen eines Falls teilt sich die Ansicht in zwei Bereiche:

Ein Klick auf die Status-Pipeline am oberen Rand öffnet einen Schritt-Übergangsdialog: Er zeigt den Hinweis „Was in dieser Stufe zu tun ist“ und lässt Sie die Berichtsfelder dieser Stufe direkt dort aktualisieren.


Bedienung

Einen Fall anlegen (manuell)

  1. Klicken Sie oben auf [Fall anlegen].
  2. Geben Sie Titel (Pflichtfeld), Schweregrad und Quelle (manual / agency / quarantine) ein.
  3. Optional setzen Sie Projekt, Dienst, URL, Eintrittszeitpunkt, Auswirkung und Ausfallzeit (Minuten).
  4. [Speichern] — es entsteht ein neuer Fall mit status=open, area=security und detected_at=now(), und in die Zeitleiste wird ein Ereignis created geschrieben.

detection wird in der Quellenliste nicht angeboten — es ist eine reine Systemquelle, die die Sicherheitsdiagnose automatisch erzeugt.

Statusübergänge (Pipeline)

Klicken Sie in der Pipeline des Detail-Dialogs auf den Zielstatus. Empfohlene Arbeit je Stufe:

Stufe Was in dieser Stufe zu tun ist
open Auf den Eingang zurücksetzen (vor der Analyse)
investigating Symptome bestätigen, Auswirkung eingrenzen, Zusammenfassung schreiben
cause_identified Direkte Ursache und Hintergrund- bzw. Grundursache bestimmen und festhalten
resolved Wiederherstellungsverfahren und Präventivmaßnahme festhalten
closed Prüfen, dass Maßnahmen und Prävention umgesetzt sind, dann den Fall abschließen

Übergangsregeln auf Serverseite:

Kollaborationsnotizen

Eine Notiz im Detail-Dialog erzeugt ein Ereignis kind=note auf der Zeitleiste. Es gibt keine eigene Notiztabelle — Notizen sind in infr_incident_event zusammengeführt.

Löschen

Das Löschen eines Falls entfernt auch dessen Zeilen in infr_incident_event und wird ins Audit-Protokoll geschrieben. (Der ursprüngliche Diagnose-Scan hinter einem hochgestuften Fall ist davon unabhängig und wird nicht gelöscht.)

Automatische Lösung hochgestufter Fälle

Wenn die Sicherheitsdiagnose ein Sondenergebnis aufnimmt, gleicht DiagnosticsService::reconcileCases() die Fälle je Host ab:

Die automatische Lösung greift nur, wenn die Diagnoseprüfung erneut besteht. Manuell angelegte Fälle (manual/agency/quarantine) werden nie automatisch gelöst — hier muss eine Betreiberin oder ein Betreiber sie durch die Pipeline führen.


Datenquellen

Tabellen

Tabelle Rolle
infr_incident Fallkörper (gefiltert auf area='security'). Status, Schweregrad, Quelle, Felder des 500-Berichts, Zeitpunkte für Eintritt/Lösung/Abschluss, fingerprint, occurrence_count
infr_incident_event Zeitleiste des Falls (angelegt, Notiz, Statuswechsel, …)
infr_project Projektliste für die Verknüpfung
infr_service Dienstliste für die Verknüpfung

Aufzählungen

STATUSES   = [open, investigating, cause_identified, resolved, closed]
SEVERITIES = [info, warn, crit]
SOURCES    = [manual, pulse, alert, agency, quarantine, detection]   # alle
manual-selectable sources = [manual, agency, quarantine]
OPEN_STATUSES (dedup targets) = [open, investigating, cause_identified]
AREAS = [service, security]   # Trennachse der gemeinsam genutzten Tabelle

Berichtsfelder (500-Struktur)

Feld Bedeutung
summary Zusammenfassung von Symptom und Auswirkung
direct_cause Unmittelbare Ursache (z. B. MySQL Too many connections)
root_cause Hintergrund- bzw. Grundursache (z. B. Verbindungsleck eines Skripts)
resolution Während des Vorfalls durchgeführte Wiederherstellung
action_taken Präventivmaßnahme für die Zukunft
downtime_min Ausfallzeit (Minuten) — Quelle des KPI downtime
impact Betroffener Umfang

API-Endpunkte

Methode · Pfad Zweck
GET /security/resolution Erstes Rendern des Boards
GET /security/resolution/live Aktualisierung per Polling (Fälle, KPI, Zeitstempel)
POST /security/resolution/save Fall anlegen / aktualisieren
POST /security/resolution/transition Statusübergang (+ optionale Notiz / Berichtsaktualisierung)
POST /security/resolution/note Kollaborationsnotiz hinzufügen
POST /security/resolution/delete Fall löschen

Zugriff


Fehlersuche & FAQ

F. Ein Fall, den ich auf dem Service-Board sehe, fehlt hier. Beide Boards teilen sich dieselbe Tabelle infr_incident, trennen sich aber über area. Dieser Bildschirm zeigt ausschließlich area='security'. Service-Vorfälle finden Sie unter Service ▸ Problemlösung.

F. Ich kann keinen Fall mit der Quelle detection anlegen. Das ist so vorgesehen. detection ist eine reine Systemquelle, die die Sicherheitsdiagnose automatisch aus fail+crit-Befunden erzeugt. Die manuelle Erfassung bietet nur manual, agency und quarantine.

F. Ein automatisch hochgestufter Fall hat sich selbst auf gelöst gesetzt. Besteht die zugrunde liegende Diagnoseprüfung bei einem späteren Scan, löst reconcileCases() den offenen Fall automatisch: resolution wird mit dem Text der automatischen Lösung gefüllt und ein Statuswechsel-Ereignis ergänzt.

F. MTTR bleibt leer. MTTR wird nur für Fälle berechnet, die sowohl occurred_at als auch resolved_at besitzen. Fälle ohne Eintrittszeitpunkt oder noch ungelöste Fälle bleiben ausgeschlossen.

F. Kann ich einen zurückliegenden Abschlusszeitpunkt setzen? Ja. Tragen Sie im Feld Abschlusszeitpunkt des Abschlussdialogs einen Wert ein (dieselbe Oberfläche wie beim Eintrittszeitpunkt); er wird unverändert gespeichert. Lassen Sie das Feld leer, füllt der Server now() nur dann ein, wenn noch kein Wert vorhanden ist.

F. Löscht das Entfernen eines Falls auch dessen Diagnose-Scan? Nein. Ein hochgestufter Fall und der zugehörige Diagnose-Scan sind unabhängig voneinander. Beim Löschen eines Falls verschwinden nur die mit ihm verknüpften Zeitleisten-Ereignisse.


Verwandte Themen

보안 문제 해결 보드
보안 문제 해결 보드