diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..6313b56 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf diff --git a/01-matrix-whitelist.yaml b/01-matrix-whitelist.yaml new file mode 100644 index 0000000..289a5b8 --- /dev/null +++ b/01-matrix-whitelist.yaml @@ -0,0 +1,9 @@ +name: my/matrix-whitelist +description: "Whitelist Matrix/Synapse requests from NPMplus logs" +filter: "evt.Meta.service == 'http' && evt.Meta.log_type in ['http_access-log', 'http_error-log']" +whitelist: + reason: "Matrix federation/client traffic" + expression: + - "evt.Meta.http_path startsWith '/_matrix/'" + - "evt.Meta.http_path startsWith '/_synapse/'" + - "evt.Meta.http_path startsWith '/.well-known/matrix/'" diff --git a/README.md b/README.md index df7ff0a..dfe3574 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,35 @@ -# template_repository +# CrowdSec Parser-Whitelist für Matrix/Synapse +Eine Parser-Whitelist für [CrowdSec](https://www.crowdsec.net/), die legitimen Matrix/Synapse-Traffic in NPMplus-Logs vom Parsen ausschließt. Damit wird verhindert, dass Federation- und Client-Anfragen fälschlicherweise als verdächtig eingestuft werden. +## Überblick +| Pfad-Muster | Beschreibung | +|---|---| +| `/_matrix/` | Matrix Federation & Client-Server API | +| `/_synapse/` | Synapse Admin & interne Endpunkte | +| `/.well-known/matrix/` | Matrix Server-Discovery | -Wichtig: Link für Lizenz anpassen. +## Schnellstart +1. Datei kopieren: + ```bash + cp 01-matrix-whitelist.yaml /etc/crowdsec/parsers/s02-enrich/01-matrix-whitelist.yaml + ``` +2. CrowdSec neu starten: + ```bash + docker restart crowdsec + ``` + +3. Funktion prüfen: + ```bash + docker exec crowdsec cscli metrics + ``` + +Detaillierte Anleitung: [docs/installation.md](docs/installation.md) + +---

diff --git a/docs/installation.md b/docs/installation.md new file mode 100644 index 0000000..6d6c7c3 --- /dev/null +++ b/docs/installation.md @@ -0,0 +1,99 @@ +# Installation & Konfiguration + +## Voraussetzungen + +- CrowdSec (als Docker-Container oder nativ installiert) +- NPMplus als Reverse Proxy mit aktiviertem Logging + +## Installation + +### 1. Whitelist-Datei kopieren + +Die YAML-Datei muss in das CrowdSec Parser-Verzeichnis `s02-enrich` kopiert werden: + +```bash +cp 01-matrix-whitelist.yaml /etc/crowdsec/parsers/s02-enrich/01-matrix-whitelist.yaml +``` + +> **Hinweis:** Bei einer Docker-Installation liegt das Verzeichnis im gemappten Volume, z. B. +> `./data/crowdsec/config/parsers/s02-enrich/` + +### 2. CrowdSec neu starten + +Damit die Whitelist geladen wird, muss CrowdSec neu gestartet werden: + +```bash +docker restart crowdsec +``` + +## Überprüfung + +### Parser testen + +Mit `cscli explain` kann geprüft werden, ob die Whitelist auf eine echte Log-Zeile greift: + +```bash +grep '/_matrix/' /home/docker-projekte/npmplus/data/npmplus/nginx/logs/access.log \ + | tail -n 1 \ + | docker exec -i crowdsec cscli explain -f- --type npmplus +``` + +In der Ausgabe sollte die Whitelist als Treffer erscheinen, z. B.: + +``` + ├ s02-enrich + | ├ ☑ crowdsecurity/whitelists + | ├ ☑ my/matrix-whitelist ✅ (whitelisted) +``` + +### Metriken prüfen + +Die Wirkung ist in den CrowdSec-Metriken sichtbar: + +```bash +docker exec crowdsec cscli metrics +``` + +Beispielausgabe: + +``` ++--------------------------------------------------------------------------------------------+ +| Whitelist Metrics | ++------------------------------------+----------------------------------+------+-------------+ +| Whitelist | Reason | Hits | Whitelisted | ++------------------------------------+----------------------------------+------+-------------+ +| my/matrix-whitelist | Matrix federation/client traffic | 6085 | 5746 | ++------------------------------------+----------------------------------+------+-------------+ +``` + +Die Spalte **Whitelisted** zeigt an, wie viele Log-Zeilen durch die Whitelist herausgefiltert wurden. + +## Funktionsweise + +Die Whitelist arbeitet als CrowdSec-Parser in der Stufe `s02-enrich`. Sie prüft eingehende Log-Events anhand folgender Kriterien: + +**Filter:** Nur HTTP-Logs (Access- und Error-Logs) werden berücksichtigt. + +**Whitelist-Regeln:** Anfragen an folgende Pfade werden als legitim eingestuft: + +| Pfad-Muster | Zweck | +|---|---| +| `/_matrix/` | Matrix Federation API & Client-Server API (Nachrichten, Räume, Sync, …) | +| `/_synapse/` | Synapse-spezifische Endpunkte (Admin API, interne Routen) | +| `/.well-known/matrix/` | Matrix Server-Discovery (andere Server finden den Homeserver hierüber) | + +## Anpassung + +Die Datei kann bei Bedarf um eigene Pfade erweitert werden. Dazu einfach weitere Einträge unter `expression` hinzufügen: + +```yaml +whitelist: + reason: "Matrix federation/client traffic" + expression: + - "evt.Meta.http_path startsWith '/_matrix/'" + - "evt.Meta.http_path startsWith '/_synapse/'" + - "evt.Meta.http_path startsWith '/.well-known/matrix/'" + - "evt.Meta.http_path startsWith '/eigener-pfad/'" +``` + +Nach jeder Änderung muss CrowdSec neu gestartet werden.