Files
2026-03-12 20:01:54 +01:00

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