Files
crowdsec-manager/docs/CONFIGURATION.md
2026-03-11 21:25:53 +01:00

5.4 KiB

Konfigurationsreferenz

Dokumentation aller Konfigurationsoptionen für den CrowdSec Manager v0.1.0.

Datei: config/crowdsec-manager.conf Die Konfigurationsdatei ist ein Bash-Script und wird per source eingebunden.


Inhaltsverzeichnis

  1. CrowdSec Basis-Konfiguration
  2. Allowlist-Einträge
  3. DNS-Konfiguration
  4. Logging
  5. Backup
  6. Lock-File
  7. Auto-Cleanup

CrowdSec Basis-Konfiguration

CSCLI_CMD

Der Befehl zum Aufrufen von CrowdSec CLI. Ermöglicht die Unterstützung verschiedener Installationsarten:

# Native Installation
CSCLI_CMD="cscli"

# Docker (Container-Name: crowdsec)
CSCLI_CMD="docker exec crowdsec cscli"

# Docker Compose (Service-Name: crowdsec)
CSCLI_CMD="docker compose exec crowdsec cscli"

# Docker Compose mit eigenem Compose-File
CSCLI_CMD="docker compose -f /opt/crowdsec/docker-compose.yml exec crowdsec cscli"

# Podman
CSCLI_CMD="podman exec crowdsec cscli"

# SSH auf Remote-Server
CSCLI_CMD="ssh user@server cscli"

Tipp: Teste den Befehl manuell, bevor du ihn in die Config einträgst:

docker exec crowdsec cscli version

ALLOWLIST_NAME

Name der verwalteten Allowlist. Wird via cscli allowlists in CrowdSec verwaltet.

ALLOWLIST_NAME="crowdsec-manager"

ALLOWLIST_REASON

Beschreibung für die einzelnen Einträge in der Allowlist. Dient zur Nachverfolgbarkeit.

ALLOWLIST_REASON="allowlist-manager-auto"

HEALTH_CHECK

Ob vor dem Sync ein CrowdSec-Health-Check durchgeführt werden soll.

HEALTH_CHECK=true

DRY_RUN

Global aktivierbarer Dry-Run Modus. Kann auch per CLI mit --dry-run aktiviert werden.

DRY_RUN=false

Allowlist-Einträge

ALLOWLIST_ENTRIES

Bash-Array mit allen zu verwaltenden Einträgen:

ALLOWLIST_ENTRIES=(
    # === Webserver & CDN ===
    "meinedomain.de"
    "www.meinedomain.de"
    "cdn.meinedomain.de"

    # === Mail-Server ===
    "mail.meinedomain.de"

    # === Monitoring ===
    "monitoring.example.com"

    # === Feste IPs ===
    "203.0.113.10"
    "203.0.113.20"

    # === Büro-Netzwerk (CIDR) ===
    "192.168.1.0/24"

    # === IPv6 ===
    "2001:db8::1"
    "2001:db8:1::/48"
)

Regeln für Einträge:

  • Ein Eintrag pro Zeile (in Anführungszeichen)
  • Kommentare mit # sind direkt in der Zeile möglich
  • Leere Zeilen werden ignoriert
  • Domains werden automatisch per DNS aufgelöst
  • IPs und CIDRs werden direkt eingetragen
  • IPv4 und IPv6 werden unterstützt

Erkennung von Eintragstypen:

Eintragstyp Beispiel Aktion
IPv4 192.168.1.1 Direkt eintragen
IPv6 2001:db8::1 Direkt eintragen
IPv4-CIDR 10.0.0.0/8 Als range eintragen
IPv6-CIDR 2001:db8::/32 Als range eintragen
Domain example.com DNS auflösen → IPs eintragen

DNS-Konfiguration

DNS_SERVER

Eigenen DNS-Server für die Auflösung verwenden. Leer lassen für den System-DNS (aus /etc/resolv.conf).

# System-DNS (Standard)
DNS_SERVER=""

# Cloudflare
DNS_SERVER="1.1.1.1"

# Google
DNS_SERVER="8.8.8.8"

# Quad9
DNS_SERVER="9.9.9.9"

# Eigener DNS
DNS_SERVER="10.0.0.53"

RESOLVE_IPV6

Ob auch AAAA-Records (IPv6) aufgelöst werden sollen:

RESOLVE_IPV6=true   # IPv4 + IPv6
RESOLVE_IPV6=false  # Nur IPv4

DNS_TIMEOUT und DNS_RETRIES

DNS_TIMEOUT=5    # Timeout in Sekunden pro DNS-Anfrage
DNS_RETRIES=3    # Wiederholungsversuche bei Fehler

Logging

LOG_LEVEL

Steuert die Ausführlichkeit der Ausgabe:

Level Beschreibung
DEBUG Alles loggen (jede DNS-Anfrage, jeder Vergleich)
INFO Standard: Wichtige Schritte und Ergebnisse
WARN Nur Warnungen und Fehler
ERROR Nur Fehler
LOG_LEVEL="INFO"

Tipp: Verwende --verbose beim manuellen Aufruf und --quiet für Cron.

LOG_FILE

Pfad zur Log-Datei. Leer lassen wenn nur auf stdout ausgegeben werden soll.

LOG_FILE="/var/log/crowdsec-manager.log"

Log-Rotation

LOG_MAX_SIZE_KB=5120    # Rotation bei 5 MB
LOG_ROTATE_COUNT=3      # 3 alte Dateien aufbewahren

Rotierte Dateien:

crowdsec-manager.log       ← Aktuell
crowdsec-manager.log.0     ← Vorherige
crowdsec-manager.log.1
crowdsec-manager.log.2     ← Älteste

Backup

BACKUP_ENABLED=true
BACKUP_DIR="/var/backup/crowdsec-manager"
BACKUP_RETAIN_COUNT=7   # 7 Backups aufbewahren

Backup-Dateien werden im Format allowlist_YYYYMMDD_HHMMSS.bak gespeichert. Ältere Backups werden automatisch gelöscht.


Lock-File

Das Lock-File verhindert parallele Ausführung (z.B. wenn ein Cron-Lauf länger dauert als das Intervall).

LOCK_ENABLED=true
LOCK_FILE="/tmp/crowdsec-manager.lock"
LOCK_TIMEOUT=300   # 5 Minuten warten, dann abbrechen

Verwaiste Lock-Files: Das Script erkennt automatisch, ob der im Lock-File referenzierte Prozess noch läuft. Wenn nicht, wird das Lock-File entfernt.


Auto-Cleanup

AUTO_CLEANUP=true

Wenn aktiviert, entfernt das Script IPs aus der CrowdSec-Allowlist, die:

  • In der aktuellen Allowlist vorhanden sind (mit dem Origin ALLOWLIST_REASON)
  • NICHT mehr in der aufgelösten IP-Liste enthalten sind

Wenn also eine Domain ihre IP ändert, wird die alte IP automatisch aus der Allowlist entfernt.