
Open-Source-, selbst gehostete Sicherheits-Pipeline für IT, KI und OT. Logs rein. Evidenz raus.: OCSF-Normalisierung, 46 Erkennungsregeln (MITRE/ATLAS/ICS-getaggt), Korrelation, Evidenzpakete, NIS2-Entwürfe, neu aufgebaute React-Konsole + GitHub-Pages-Demo. Apache-2.0.
Anmelden. Nachweise raus.
Open-Source-Sicherheitspipeline für IT, KI und OT: von Rohlogs zu einem verifizierten Vorfall und einem Entwurf einer NIS2-Meldung.
Projektseite und Live-Demo · Schnellstart · Konsole · Architektur · Status (SSOT)
Badges spiegeln den letzten echten Lauf auf
mainwider, kein Versprechen. Die verbleibenden Scorecard-Befunde sind akzeptierte, dokumentierte Kompromisse, keine Lücken; siehe SSOT.md §1.
FENGARDE verbindet Sicherheitstelemetrie über IT, KI und OT hinweg, um zu zeigen, was passiert ist, wer oder was gehandelt hat, was betroffen war, wie die Ereignisse zusammenhängen und welche Nachweise die Schlussfolgerung stützen.
Gebaut für den europäischen industriellen Mittelstand: Open Source, selbst gehostet, Apache-2.0, mit einem Entwurfspfad für NIS2-Vorfallmeldungen, einem deterministischen deutsch-/englischsprachigen Report-Generator, optionalem RBAC/MFA/Audit-Log/Multi-Tenancy für MSP-artige Deployments, einem optionalen HA-Profil (live-kill-getestet, nicht nur verdrahtet) und KI-Triage, die Ihr Netzwerk nie verlässt.
Logs werden gesammelt, auf ein einziges Schema normalisiert (OCSF), über Korrelationsregeln in einem gleitenden Fenster verarbeitet, zu Incidents mit einem Kausalitätsgraphen und einem hash-verketteten Evidenzpaket gruppiert und in OpenSearch indiziert. Jeder Dienst ist unabhängig und kommuniziert mit den anderen nur über einen Message Bus, sodass jeder Teil skaliert oder ersetzt werden kann, ohne die anderen umzuschreiben.
OLLAMA_URL gesetzt ist; andernfalls ein
gelabelter deterministischer Stub. Alarmdaten werden nie durch eine LLM-API eines Drittanbieters geleitet,
und die Konsole nennt, welche Engine tatsächlich lief. Die Urteilsqualität ist bei den beiden gemessenen Modellen schlecht (qwen2.5:3b 1 von 54 gelabelten Alarmen korrekt, qwen2.5:7b 7 von 54, überwiegend suspicious-Antworten); siehe
eval/llm_triage/RESULTS.md.OpenSearch, nicht Elastic: kein Lizenz-Sternchen auf der Storage-Engine (ADR 003). Wissenswert, aber kein Unterscheidungsmerkmal gegenüber Wazuh (dessen Indexer ebenfalls ein OpenSearch-Fork ist).
| Weg | Benötigt | Was Sie bekommen |
|---|---|---|
| Die Projektseite | Einen Browser | Die echte Konsole auf einer Aufzeichnung eines Laborlaufs, mit einem wiederholbaren Angriff, der Architektur, allen 46 Regeln und vier aufgezeichneten Walkthroughs. Statisch; Schreibvorgänge bleiben in Ihrem Browser (docs/console-demo.md sagt genau, was echt ist). |
make e2e | Python 3 | SSH-Brute-Force bis zu einem echten Alarm, idempotent bei Wiederholung. Kein Docker, Redis oder OpenSearch. |
make demo | Docker | Der vollständige Live-Stack; ein echter Brute-Force-Alarm erscheint innerhalb etwa einer Minute in der Konsole. |
git clone https://github.com/supermhel/fengarde.git && cd fengarde
make preflight # doctor: checks vm.max_map_count, Docker RAM, free ports
make demo # docker compose up -- a real SSH brute-force alert appears
# in the dashboard within ~30-60s, no manual step
# open http://localhost:8080
Kein Docker zur Hand? Die gesamte Erkennungspipeline läuft ohne Infrastruktur:
make e2e # SSH brute-force -> real alert -> idempotent replay, no Docker/Redis/OpenSearch
bash tools/demo.sh # same test, narrated (Windows: powershell -File tools\demo.ps1)
Was Sie sehen: 10 fehlgeschlagene Anmeldungen von einer IP innerhalb von 60 Sekunden (SSH Failed password oder Windows EventID 4625 — beide werden auf dasselbe OCSF-Authentication-Event normalisiert) lösen common_bruteforce.yml aus (threshold: 10, window_seconds: 60, gruppiert nach Quell-IP), und der Alarm erscheint in der Alarmliste des Dashboards, idempotent bei erneuter Zustellung.
Voraussetzungen: Docker Desktop oder Docker Engine + Compose v2, ≥4 GB RAM für Docker zugewiesen; Linux, macOS oder Windows über WSL2 (Linux-Container, POSIX-sh-Skripte). Python 3 nur, wenn Sie einen Parser beitragen — dafür ist kein Docker erforderlich (siehe Contributing).
vm.max_map_countsudo sysctl -w vm.max_map_count=262144
# persist across reboots:
echo 'vm.max_map_count=262144' | sudo tee /etc/sysctl.d/99-fengarde.conf
Ohne sie schlägt OpenSearch mit einem JVM-Absturz fehl, nicht mit einer hilfreichen Fehlermeldung. Unter macOS Docker Desktop nicht erforderlich (wird innerhalb seiner VM behandelt). make preflight prüft dies für dich und gibt die genaue Lösung aus, falls etwas fehlt.
Weitere Ziele: