4.0 KiB
4.0 KiB
CrowdSec Manager – Dokumentation
Umfassende Dokumentation für den CrowdSec Manager.
Dokumentationsübersicht
| Dokument | Beschreibung |
|---|---|
| CONFIGURATION.md | Alle Konfigurationsoptionen im Detail |
| ALLOWLIST.md | Allowlist-Verwaltung, CLI-Optionen, Cron-Integration |
| ADMIN.md | Interaktives Menü & CrowdSec-Administration |
| NOTIFICATIONS.md | Benachrichtigungen (Ntfy, Gotify, E-Mail, Desktop) |
| TROUBLESHOOTING.md | Fehlerbehebung & FAQ |
Schnellstart
1. Installation
cd /opt
git clone https://github.com/dein-user/crowdsec-manager.git
cd crowdsec-manager
chmod +x crowdsec-manager.sh
2. Abhängigkeiten
# Debian / Ubuntu
sudo apt update && sudo apt install -y dnsutils curl
# RHEL / CentOS / Fedora
sudo dnf install -y bind-utils curl
# Alpine
apk add --no-cache bind-tools curl
3. Konfiguration
nano config/crowdsec-manager.conf
Mindestens setzen:
CSCLI_CMD– CrowdSec CLI BefehlALLOWLIST_ENTRIES– Domains/IPs für die Allowlist
4. Test
./crowdsec-manager.sh --test
5. Verwendung
# Interaktives Menü (Standard)
./crowdsec-manager.sh
# Allowlist-Sync (für Cron)
./crowdsec-manager.sh --sync-allowlist
6. Cron einrichten
crontab -e
*/30 * * * * /opt/crowdsec-manager/crowdsec-manager.sh --sync-allowlist >> /var/log/crowdsec-manager-cron.log 2>&1
Architektur
Dateien
| Datei | Aufgabe |
|---|---|
crowdsec-manager.sh |
Hauptscript (Allowlist-Sync + Interaktives Admin-Menü) |
config/crowdsec-manager.conf |
Zentrale Konfigurationsdatei |
examples/crontab.example |
Vorlagen für Cron-Einträge |
docs/ |
Dokumentation (aufgeteilt nach Themen) |
Voraussetzungen
- Bash 4.0+ (für assoziative Arrays)
- dig (DNS-Auflösung) – Teil von
dnsutils/bind-utils - CrowdSec mit CLI-Zugriff
- Optional: curl (für Ntfy/Gotify/E-Mail-Benachrichtigungen)
- Optional: python3 (für JSON-Escaping bei Gotify)
Sicherheitsaspekte
- Lock-File verhindert Race Conditions bei paralleler Ausführung
- Temporäre Dateien werden nach Ausführung automatisch gelöscht (auch bei Abbruch)
- Keine sensiblen Daten in der Log-Ausgabe
- Config-Datei sollte nur vom Script-Benutzer lesbar sein:
chmod 600 config/crowdsec-manager.conf - Für DNS-Spoofing Schutz: DNSSEC-validierende DNS-Server verwenden
Logging & Monitoring
Log-Datei analysieren
# Letzte Ausführung anzeigen
grep "$(date '+%Y-%m-%d')" /var/log/crowdsec-manager.log
# Nur Fehler
grep "\[ERROR\]" /var/log/crowdsec-manager.log
# Nur Änderungen
grep -E "Hinzugefügt|Entfernt" /var/log/crowdsec-manager.log
Exit-Codes für Monitoring
| Exit-Code | Bedeutung |
|---|---|
0 |
Erfolgreich |
1 |
Kritischer Fehler |
2 |
Teilweise erfolgreich (mit Fehlern) |
Integration
Ansible
- name: Deploy CrowdSec Manager
hosts: crowdsec_servers
tasks:
- name: Clone repository
git:
repo: https://github.com/user/crowdsec-manager.git
dest: /opt/crowdsec-manager
- name: Deploy config
template:
src: crowdsec-manager.conf.j2
dest: /opt/crowdsec-manager/config/crowdsec-manager.conf
mode: '0600'
- name: Setup cron
cron:
name: "CrowdSec Manager"
minute: "*/30"
job: "/opt/crowdsec-manager/crowdsec-manager.sh --sync-allowlist >> /var/log/crowdsec-manager-cron.log 2>&1"
Docker Compose Sidecar
services:
crowdsec:
image: crowdsecurity/crowdsec
container_name: crowdsec
allowlist-manager:
image: alpine
volumes:
- ./crowdsec-manager:/app
- /var/run/docker.sock:/var/run/docker.sock
command: >
sh -c "apk add --no-cache bash bind-tools curl docker-cli &&
while true; do
/app/crowdsec-manager.sh --sync-allowlist;
sleep 1800;
done"