3.3 KiB
Installation & Konfiguration
Voraussetzungen
- CrowdSec (als Docker-Container oder nativ installiert)
- NPMplus als Reverse Proxy mit aktiviertem Logging
- Immich (Docker-Setup)
Installation
1. Whitelist-Datei kopieren
Die YAML-Datei muss in das CrowdSec Parser-Verzeichnis s02-enrich kopiert werden:
cp s02-enrich/immich-whitelist.yaml /etc/crowdsec/parsers/s02-enrich/immich-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:
docker restart crowdsec
Überprüfung
Parser testen
Mit cscli explain kann geprüft werden, ob die Whitelist auf eine echte Log-Zeile greift:
grep '/api/assets/' /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
| ├ ☑ crowdsecurity/immich-whitelists ✅ (whitelisted)
Metriken prüfen
Die Wirkung ist in den CrowdSec-Metriken sichtbar:
docker exec crowdsec cscli metrics
Beispielausgabe:
+--------------------------------------------------------------------------------------------+
| Whitelist Metrics |
+------------------------------------+----------------------------------+------+-------------+
| Whitelist | Reason | Hits | Whitelisted |
+------------------------------------+----------------------------------+------+-------------+
| crowdsecurity/immich-whitelists | Whitelist false positive from | 312 | 298 |
| | Immich-api | | |
+------------------------------------+----------------------------------+------+-------------+
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: Die Whitelist verwendet evt.Meta.http_path != '' als Filter und greift damit auf alle Events mit geparsten HTTP-Daten. Die eigentliche Filterung erfolgt über die Whitelist-Expressions.
Whitelist-Regeln: GET-Anfragen auf Thumbnail-Endpunkte der Immich-API werden als legitim eingestuft:
| Pfad-Pattern | Beschreibung |
|---|---|
/api/assets/<uuid>/thumbnail |
Immich Asset-Thumbnails (UUID-basiert) |
Anpassung
Weitere Pfade hinzufügen
Die Datei kann bei Bedarf um weitere Immich-API-Pfade erweitert werden. Dazu einfach weitere Einträge unter expression hinzufügen:
whitelist:
reason: "Whitelist false positive from Immich-api"
expression:
- evt.Meta.http_verb == 'GET' && evt.Meta.http_path matches '/api/assets/[a-f0-9-]+/thumbnail'
- evt.Meta.http_verb == 'GET' && evt.Meta.http_path startsWith '/api/assets'
Nach jeder Änderung muss CrowdSec neu gestartet werden:
docker restart crowdsec