Initialer Import
This commit is contained in:
+198
@@ -0,0 +1,198 @@
|
||||
# Interaktive Administration
|
||||
|
||||
Dokumentation der interaktiven CrowdSec-Administrationsfunktionen im CrowdSec Manager v0.1.0.
|
||||
|
||||
---
|
||||
|
||||
## Übersicht
|
||||
|
||||
Ab Version 0.1.0 startet das Script standardmäßig ein **interaktives Menü**, über das CrowdSec-Funktionen direkt verwaltet werden können – ohne manuell `cscli`-Befehle absetzen zu müssen.
|
||||
|
||||
```bash
|
||||
# Interaktives Menü starten (Standard)
|
||||
./crowdsec-manager.sh
|
||||
|
||||
# Oder explizit:
|
||||
./crowdsec-manager.sh --interactive
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Menü-Struktur
|
||||
|
||||
```
|
||||
╔═══════════════════════════════════════════════════════╗
|
||||
║ CrowdSec Manager v0.1.0 ║
|
||||
╚═══════════════════════════════════════════════════════╝
|
||||
|
||||
── ALLOWLIST MANAGEMENT ──────────────────────────────
|
||||
1) Allowlist synchronisieren (DNS auflösen & updaten)
|
||||
2) Allowlist synchronisieren (Dry-Run)
|
||||
3) Aktuelle Allowlist anzeigen
|
||||
4) Konfiguration testen
|
||||
5) Alle verwalteten Einträge entfernen (Flush)
|
||||
|
||||
── DECISIONS ─────────────────────────────────────────
|
||||
10) Alle Decisions anzeigen
|
||||
11) Decision suchen (nach IP)
|
||||
12) Decision manuell hinzufügen
|
||||
13) Decision entfernen
|
||||
|
||||
── ALERTS ────────────────────────────────────────────
|
||||
20) Alle Alerts anzeigen
|
||||
21) Alert inspizieren (Detail-Ansicht)
|
||||
22) Alerts löschen
|
||||
|
||||
── INFORMATIONEN ─────────────────────────────────────
|
||||
30) IP-Informationen (Komplett-Check)
|
||||
31) CrowdSec Metriken
|
||||
32) CrowdSec Status & Version
|
||||
33) Bouncers anzeigen
|
||||
34) Machines anzeigen
|
||||
35) Parsers anzeigen
|
||||
36) Scenarios anzeigen
|
||||
37) Collections anzeigen
|
||||
|
||||
── ERWEITERT ─────────────────────────────────────────
|
||||
40) Eigenen cscli-Befehl ausführen
|
||||
|
||||
0) Beenden
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Funktionen im Detail
|
||||
|
||||
### Allowlist Management (1-5)
|
||||
|
||||
| Nr. | Funktion | Beschreibung |
|
||||
|-----|----------|-------------|
|
||||
| 1 | Sync | Führt die komplette Allowlist-Synchronisation aus (DNS auflösen, Vergleich, Update) |
|
||||
| 2 | Dry-Run | Wie 1, aber ohne tatsächliche Änderungen an CrowdSec |
|
||||
| 3 | Anzeigen | Zeigt alle aktuellen Allowlist-Einträge |
|
||||
| 4 | Test | Prüft Config, DNS-Auflösung und CrowdSec-Verbindung |
|
||||
| 5 | Flush | Entfernt alle vom Script verwalteten Einträge (mit Bestätigung) |
|
||||
|
||||
### Decisions (10-13)
|
||||
|
||||
#### 10) Alle Decisions anzeigen
|
||||
|
||||
Zeigt alle aktiven CrowdSec Decisions an (Ban, Allow, Captcha, Throttle).
|
||||
|
||||
Entspricht: `cscli decisions list`
|
||||
|
||||
#### 11) Decision suchen
|
||||
|
||||
Sucht alle Decisions für eine bestimmte IP-Adresse.
|
||||
|
||||
Entspricht: `cscli decisions list -i <IP>`
|
||||
|
||||
#### 12) Decision manuell hinzufügen
|
||||
|
||||
Interaktiver Assistent zum Hinzufügen einer Decision:
|
||||
|
||||
1. **IP/CIDR eingeben** – Die zu behandelnde IP-Adresse oder CIDR-Range
|
||||
2. **Typ wählen:**
|
||||
- `ban` – IP sperren
|
||||
- `allow` – IP erlauben (Allowlist)
|
||||
- `captcha` – Captcha anzeigen
|
||||
- `throttle` – Traffic drosseln
|
||||
3. **Dauer** – z.B. `10m`, `1h`, `24h`, `7d` (Standard: 4h)
|
||||
4. **Grund** – Optionaler Kommentar
|
||||
5. **Bestätigung** – Zusammenfassung mit Ja/Nein-Abfrage
|
||||
|
||||
#### 13) Decision entfernen
|
||||
|
||||
Entfernt eine Decision entweder nach:
|
||||
- **IP-Adresse** – Alle Decisions für diese IP
|
||||
- **Decision-ID** – Spezifische Decision
|
||||
|
||||
---
|
||||
|
||||
### Alerts (20-22)
|
||||
|
||||
#### 20) Alle Alerts anzeigen
|
||||
|
||||
Zeigt alle aktuellen Alerts an.
|
||||
|
||||
Entspricht: `cscli alerts list`
|
||||
|
||||
#### 21) Alert inspizieren
|
||||
|
||||
Zeigt Detail-Informationen zu einem spezifischen Alert (nach Alert-ID).
|
||||
|
||||
Entspricht: `cscli alerts inspect <ID> -d`
|
||||
|
||||
#### 22) Alerts löschen
|
||||
|
||||
Löscht Alerts nach:
|
||||
- **Einzelne Alert-ID** – Spezifischen Alert löschen
|
||||
- **IP-Adresse** – Alle Alerts für eine IP
|
||||
- **Zeitraum** – Alle Alerts älter als z.B. `24h`, `7d`
|
||||
|
||||
Jede Löschung erfordert eine Bestätigung.
|
||||
|
||||
---
|
||||
|
||||
### Informationen (30-37)
|
||||
|
||||
#### 30) IP-Informationen (Komplett-Check)
|
||||
|
||||
Sammelt umfassende Informationen zu einer IP-Adresse in 4 Schritten:
|
||||
|
||||
```
|
||||
[1/4] Reverse-DNS: PTR-Record Lookup
|
||||
[2/4] Aktive Decisions: Alle Decisions für diese IP
|
||||
[3/4] Alerts: Alle Alerts für diese IP
|
||||
[4/4] Alert-Details: Detail-Inspektion der letzten 5 Alerts
|
||||
```
|
||||
|
||||
Nützlich für schnelle Untersuchung verdächtiger IPs.
|
||||
|
||||
#### 31) CrowdSec Metriken
|
||||
|
||||
Zeigt aktuelle CrowdSec-Metriken (Acquisition, Parser, Scenarios, etc.).
|
||||
|
||||
Entspricht: `cscli metrics`
|
||||
|
||||
#### 32) CrowdSec Status & Version
|
||||
|
||||
Zeigt die CrowdSec-Version und den Hub-Status.
|
||||
|
||||
#### 33-37) Hub-Komponenten
|
||||
|
||||
| Nr. | Komponente | cscli-Befehl |
|
||||
|-----|-----------|-------------|
|
||||
| 33 | Bouncers | `cscli bouncers list` |
|
||||
| 34 | Machines | `cscli machines list` |
|
||||
| 35 | Parsers | `cscli parsers list` |
|
||||
| 36 | Scenarios | `cscli scenarios list` |
|
||||
| 37 | Collections | `cscli collections list` |
|
||||
|
||||
---
|
||||
|
||||
### Erweitert (40)
|
||||
|
||||
#### 40) Eigener cscli-Befehl
|
||||
|
||||
Ermöglicht die Ausführung beliebiger `cscli`-Befehle über den konfigurierten `CSCLI_CMD`.
|
||||
|
||||
```
|
||||
Basis: docker exec crowdsec cscli
|
||||
Gib nur die Argumente nach 'cscli' ein.
|
||||
Beispiel: decisions list -o json
|
||||
|
||||
cscli> decisions list -o json
|
||||
```
|
||||
|
||||
Der eingegebene Befehl wird an den konfigurierten Basisbefehl angehängt und ausgeführt.
|
||||
|
||||
---
|
||||
|
||||
## Tipps
|
||||
|
||||
- Das Menü merkt sich den Kontext nicht zwischen Aufrufen. Jede Funktion ist eigenständig.
|
||||
- Bei allen destruktiven Aktionen (Flush, Decisions/Alerts löschen) wird eine Bestätigung abgefragt.
|
||||
- Die Navigation erfolgt rein über Nummern-Eingabe.
|
||||
- Nach jeder Funktion wird auf Enter gewartet, bevor das Menü neu angezeigt wird.
|
||||
- Mit `0`, `q` oder `exit` wird das Programm beendet.
|
||||
@@ -0,0 +1,202 @@
|
||||
# Allowlist Management
|
||||
|
||||
Dokumentation der automatischen Allowlist-Verwaltung im CrowdSec Manager v0.1.0.
|
||||
|
||||
---
|
||||
|
||||
## Funktionsweise
|
||||
|
||||
Das Script arbeitet nach dem **Desired-State-Prinzip**: Du definierst WAS allowgelistet sein soll (Domains/IPs), und das Script sorgt dafür, dass der IST-Zustand in CrowdSec dem SOLL-Zustand entspricht.
|
||||
|
||||
### Ablauf einer Synchronisation
|
||||
|
||||
```
|
||||
1. Vorbereitung
|
||||
├── Abhängigkeiten prüfen (dig, curl)
|
||||
├── Lock-File erwerben
|
||||
├── Temporäre Dateien erstellen
|
||||
└── CrowdSec Health-Check
|
||||
|
||||
2. Datenerfassung
|
||||
├── Aktuelle CrowdSec-Allowlist abrufen → current_ips.txt
|
||||
├── Backup der aktuellen Liste erstellen
|
||||
└── DNS-Auflösung aller Einträge → new_ips.txt
|
||||
|
||||
3. Synchronisation
|
||||
├── Vergleich: current_ips.txt vs. new_ips.txt
|
||||
├── Neue IPs hinzufügen (in new, nicht in current)
|
||||
├── Veraltete IPs entfernen (in current, nicht in new)
|
||||
└── Statistiken aktualisieren
|
||||
|
||||
4. Abschluss
|
||||
├── Zusammenfassung ausgeben
|
||||
├── Benachrichtigungen senden
|
||||
├── Lock-File freigeben
|
||||
└── Temporäre Dateien aufräumen
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Kommandozeilen-Optionen
|
||||
|
||||
### Startmodi (v0.1.0)
|
||||
|
||||
| Aufruf | Beschreibung |
|
||||
|--------|-------------|
|
||||
| `./script.sh` | Startet das **interaktive Menü** (Standard) |
|
||||
| `./script.sh --run` | Führt Allowlist-Sync aus (für **Cron**) |
|
||||
| `./script.sh --interactive` | Startet das interaktive Menü (explizit) |
|
||||
|
||||
> **Wichtig für Cron:** Ab v0.1.0 muss `--run` angegeben werden, da ohne Parameter das interaktive Menü startet.
|
||||
|
||||
### Alle Optionen
|
||||
|
||||
| Option | Kurz | Beschreibung |
|
||||
|--------|------|-------------|
|
||||
| `--run` | | Allowlist-Sync ausführen (nicht-interaktiv, für Cron) |
|
||||
| `--interactive` | `-i` | Interaktives Menü starten |
|
||||
| `--config FILE` | `-c` | Eigene Konfigurationsdatei laden |
|
||||
| `--dry-run` | `-d` | Simuliert alle Aktionen ohne CrowdSec zu ändern |
|
||||
| `--verbose` | `-v` | Setzt Log-Level auf DEBUG |
|
||||
| `--quiet` | `-q` | Setzt Log-Level auf ERROR |
|
||||
| `--list` | `-l` | Zeigt aktuelle CrowdSec-Allowlist an |
|
||||
| `--flush` | `-f` | Entfernt ALLE vom Script verwalteten Einträge |
|
||||
| `--test` | `-t` | Testet Config, DNS und CrowdSec-Verbindung |
|
||||
| `--help` | `-h` | Zeigt Hilfe an |
|
||||
| `--version` | `-V` | Zeigt Version an |
|
||||
|
||||
---
|
||||
|
||||
## Dry-Run Modus
|
||||
|
||||
Im Dry-Run Modus werden alle Schritte normal durchgeführt (DNS-Auflösung, Vergleich), aber die CrowdSec-Befehle werden **nicht** ausgeführt:
|
||||
|
||||
```bash
|
||||
./crowdsec-manager.sh --run --dry-run
|
||||
```
|
||||
|
||||
Ausgabe:
|
||||
```
|
||||
[INFO] [DRY-RUN] Würde hinzufügen: 203.0.113.50
|
||||
[INFO] [DRY-RUN] Würde entfernen: 198.51.100.20
|
||||
```
|
||||
|
||||
Auch im interaktiven Menü (Punkt 2) kann ein Dry-Run gestartet werden.
|
||||
|
||||
---
|
||||
|
||||
## Test-Modus
|
||||
|
||||
Prüft die gesamte Konfiguration ohne etwas zu ändern:
|
||||
|
||||
```bash
|
||||
./crowdsec-manager.sh --test
|
||||
```
|
||||
|
||||
Ausgabe:
|
||||
```
|
||||
Konfigurationstest:
|
||||
|
||||
[OK] Konfigurationsdatei geladen
|
||||
CrowdSec-Erreichbarkeit... [OK]
|
||||
DNS-Auflösung... [OK] dig gefunden
|
||||
|
||||
Konfigurierte Einträge (3):
|
||||
[Domain] example.com -> 93.184.216.34, 2606:2800:220:1:...
|
||||
[Domain] cdn.example.com -> 104.16.132.229
|
||||
[IP/CIDR] 192.168.1.0/24
|
||||
|
||||
Benachrichtigungen:
|
||||
Aktiviert: true
|
||||
Desktop: false
|
||||
Ntfy: true
|
||||
Gotify: false
|
||||
E-Mail: false
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Flush-Modus
|
||||
|
||||
Entfernt **alle** vom Script verwalteten Einträge aus CrowdSec (identifiziert über `ALLOWLIST_REASON`):
|
||||
|
||||
```bash
|
||||
./crowdsec-manager.sh --flush
|
||||
```
|
||||
|
||||
> **Achtung:** Manuell mit `cscli decisions add` erstellte Einträge werden NICHT entfernt.
|
||||
|
||||
---
|
||||
|
||||
## Cron-Integration
|
||||
|
||||
### Empfohlene Intervalle
|
||||
|
||||
| Anwendungsfall | Intervall | Cron-Ausdruck |
|
||||
|:---:|:---:|:---:|
|
||||
| Dynamische DNS (DynDNS) | 15 Minuten | `*/15 * * * *` |
|
||||
| Cloud-Dienste / CDN | 30 Minuten | `*/30 * * * *` |
|
||||
| Statische Infrastruktur | Stündlich | `0 * * * *` |
|
||||
| Feste IPs | Täglich | `0 3 * * *` |
|
||||
|
||||
### Einrichtung
|
||||
|
||||
```bash
|
||||
crontab -e
|
||||
```
|
||||
|
||||
Empfohlener Eintrag:
|
||||
```cron
|
||||
# CrowdSec Manager - alle 30 Minuten
|
||||
*/30 * * * * /opt/crowdsec-manager/crowdsec-manager.sh --run >> /var/log/crowdsec-manager-cron.log 2>&1
|
||||
```
|
||||
|
||||
### ALLOWLIST_DURATION vs. Cron-Intervall
|
||||
|
||||
Die `ALLOWLIST_DURATION` muss **immer größer** als das Cron-Intervall sein:
|
||||
|
||||
```
|
||||
Cron: */30 * * * * → ALLOWLIST_DURATION="1h" ✅
|
||||
Cron: 0 * * * * → ALLOWLIST_DURATION="2h" ✅
|
||||
Cron: 0 * * * * → ALLOWLIST_DURATION="30m" ❌ Zu kurz!
|
||||
```
|
||||
|
||||
### Cron-spezifisches Verhalten
|
||||
|
||||
Das Script erkennt automatisch ob es im Terminal oder per Cron läuft:
|
||||
- **Terminal:** Farbige Ausgabe
|
||||
- **Cron:** Plain-Text Ausgabe (keine Escape-Codes)
|
||||
|
||||
---
|
||||
|
||||
## Exit-Codes
|
||||
|
||||
| Exit-Code | Bedeutung |
|
||||
|:---:|---------|
|
||||
| `0` | Erfolgreich |
|
||||
| `1` | Kritischer Fehler (Config fehlt, CrowdSec nicht erreichbar) |
|
||||
| `2` | Teilweise erfolgreich (mit nicht-kritischen Fehlern) |
|
||||
|
||||
---
|
||||
|
||||
## Mehrere Konfigurationen
|
||||
|
||||
Du kannst mehrere Konfigurationsdateien für verschiedene Allowlists verwenden:
|
||||
|
||||
```bash
|
||||
# Webserver-Allowlist
|
||||
./crowdsec-manager.sh --run --config config/webserver.conf
|
||||
|
||||
# Monitoring-Allowlist
|
||||
./crowdsec-manager.sh --run --config config/monitoring.conf
|
||||
```
|
||||
|
||||
Jede Konfiguration sollte einen eigenen `ALLOWLIST_REASON` verwenden:
|
||||
|
||||
```bash
|
||||
# webserver.conf
|
||||
ALLOWLIST_REASON="allowlist-webserver"
|
||||
|
||||
# monitoring.conf
|
||||
ALLOWLIST_REASON="allowlist-monitoring"
|
||||
```
|
||||
@@ -0,0 +1,278 @@
|
||||
# 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](#crowdsec-basis-konfiguration)
|
||||
2. [Allowlist-Einträge](#allowlist-einträge)
|
||||
3. [DNS-Konfiguration](#dns-konfiguration)
|
||||
4. [Logging](#logging)
|
||||
5. [Backup](#backup)
|
||||
6. [Lock-File](#lock-file)
|
||||
7. [Auto-Cleanup](#auto-cleanup)
|
||||
|
||||
---
|
||||
|
||||
## CrowdSec Basis-Konfiguration
|
||||
|
||||
### `CSCLI_CMD`
|
||||
|
||||
Der Befehl zum Aufrufen von CrowdSec CLI. Ermöglicht die Unterstützung verschiedener Installationsarten:
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
```bash
|
||||
docker exec crowdsec cscli version
|
||||
```
|
||||
|
||||
### `ALLOWLIST_NAME`
|
||||
|
||||
Name der verwalteten Allowlist. Wird zur Identifizierung in CrowdSec verwendet.
|
||||
|
||||
```bash
|
||||
ALLOWLIST_NAME="crowdsec-manager"
|
||||
```
|
||||
|
||||
### `ALLOWLIST_DURATION`
|
||||
|
||||
Gültigkeitsdauer eines Allowlist-Eintrags. Sollte **etwas länger als das Cron-Intervall** sein.
|
||||
|
||||
| Cron-Intervall | Empfohlene Duration |
|
||||
|:---:|:---:|
|
||||
| Alle 15 Minuten | `30m` |
|
||||
| Alle 30 Minuten | `1h` |
|
||||
| Stündlich | `2h` |
|
||||
| Alle 6 Stunden | `12h` |
|
||||
| Täglich | `25h` |
|
||||
|
||||
```bash
|
||||
ALLOWLIST_DURATION="25h"
|
||||
```
|
||||
|
||||
### `ALLOWLIST_REASON`
|
||||
|
||||
Der `origin`-Tag für die verwalteten Decisions. Damit unterscheidet das Script seine eigenen Einträge von manuell erstellten.
|
||||
|
||||
```bash
|
||||
ALLOWLIST_REASON="allowlist-manager-auto"
|
||||
```
|
||||
|
||||
> **Wichtig:** Ändere diesen Wert NICHT nach der ersten Ausführung, da sonst bestehende Einträge nicht mehr zugeordnet werden können.
|
||||
|
||||
### `HEALTH_CHECK`
|
||||
|
||||
Ob vor dem Sync ein CrowdSec-Health-Check durchgeführt werden soll.
|
||||
|
||||
```bash
|
||||
HEALTH_CHECK=true
|
||||
```
|
||||
|
||||
### `DRY_RUN`
|
||||
|
||||
Global aktivierbarer Dry-Run Modus. Kann auch per CLI mit `--dry-run` aktiviert werden.
|
||||
|
||||
```bash
|
||||
DRY_RUN=false
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Allowlist-Einträge
|
||||
|
||||
### `ALLOWLIST_ENTRIES`
|
||||
|
||||
Bash-Array mit allen zu verwaltenden Einträgen:
|
||||
|
||||
```bash
|
||||
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`).
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
|
||||
```bash
|
||||
RESOLVE_IPV6=true # IPv4 + IPv6
|
||||
RESOLVE_IPV6=false # Nur IPv4
|
||||
```
|
||||
|
||||
### `DNS_TIMEOUT` und `DNS_RETRIES`
|
||||
|
||||
```bash
|
||||
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 |
|
||||
|
||||
```bash
|
||||
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.
|
||||
|
||||
```bash
|
||||
LOG_FILE="/var/log/crowdsec-manager.log"
|
||||
```
|
||||
|
||||
### Log-Rotation
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
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).
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
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.
|
||||
@@ -0,0 +1,182 @@
|
||||
# CrowdSec Manager – Dokumentation
|
||||
|
||||
## Version 0.1.0
|
||||
|
||||
Umfassende Dokumentation für den CrowdSec Manager.
|
||||
|
||||
---
|
||||
|
||||
## Dokumentationsübersicht
|
||||
|
||||
| Dokument | Beschreibung |
|
||||
|----------|-------------|
|
||||
| [CONFIGURATION.md](CONFIGURATION.md) | Alle Konfigurationsoptionen im Detail |
|
||||
| [ALLOWLIST.md](ALLOWLIST.md) | Allowlist-Verwaltung, CLI-Optionen, Cron-Integration |
|
||||
| [ADMIN.md](ADMIN.md) | Interaktives Menü & CrowdSec-Administration |
|
||||
| [NOTIFICATIONS.md](NOTIFICATIONS.md) | Benachrichtigungen (Ntfy, Gotify, E-Mail, Desktop) |
|
||||
| [TROUBLESHOOTING.md](TROUBLESHOOTING.md) | Fehlerbehebung & FAQ |
|
||||
|
||||
---
|
||||
|
||||
## Schnellstart
|
||||
|
||||
### 1. Installation
|
||||
|
||||
```bash
|
||||
cd /opt
|
||||
git clone https://github.com/dein-user/crowdsec-manager.git
|
||||
cd crowdsec-manager
|
||||
chmod +x crowdsec-manager.sh
|
||||
```
|
||||
|
||||
### 2. Abhängigkeiten
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
nano config/crowdsec-manager.conf
|
||||
```
|
||||
|
||||
Mindestens setzen:
|
||||
- `CSCLI_CMD` – CrowdSec CLI Befehl
|
||||
- `ALLOWLIST_ENTRIES` – Domains/IPs für die Allowlist
|
||||
|
||||
### 4. Test
|
||||
|
||||
```bash
|
||||
./crowdsec-manager.sh --test
|
||||
```
|
||||
|
||||
### 5. Verwendung
|
||||
|
||||
```bash
|
||||
# Interaktives Menü (Standard)
|
||||
./crowdsec-manager.sh
|
||||
|
||||
# Allowlist-Sync (für Cron)
|
||||
./crowdsec-manager.sh --run
|
||||
```
|
||||
|
||||
### 6. Cron einrichten
|
||||
|
||||
```bash
|
||||
crontab -e
|
||||
```
|
||||
|
||||
```cron
|
||||
*/30 * * * * /opt/crowdsec-manager/crowdsec-manager.sh --run >> /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
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```yaml
|
||||
- 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 --run >> /var/log/crowdsec-manager-cron.log 2>&1"
|
||||
```
|
||||
|
||||
### Docker Compose Sidecar
|
||||
|
||||
```yaml
|
||||
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 --run;
|
||||
sleep 1800;
|
||||
done"
|
||||
```
|
||||
@@ -0,0 +1,205 @@
|
||||
# Benachrichtigungen
|
||||
|
||||
Dokumentation des Benachrichtigungssystems im CrowdSec Manager v0.1.0.
|
||||
|
||||
---
|
||||
|
||||
## Übersicht
|
||||
|
||||
Das Benachrichtigungssystem ist modular aufgebaut. Vier Kanäle können gleichzeitig aktiv sein:
|
||||
|
||||
```
|
||||
┌── Desktop (notify-send)
|
||||
├── Ntfy (HTTP POST)
|
||||
should_notify? ─────┤
|
||||
├── Gotify (HTTP POST / JSON)
|
||||
└── E-Mail (SMTP via curl / mail)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Allgemeine Konfiguration
|
||||
|
||||
### Benachrichtigungen aktivieren
|
||||
|
||||
```bash
|
||||
NOTIFY_ENABLED=true
|
||||
```
|
||||
|
||||
### Benachrichtigungs-Bedingungen
|
||||
|
||||
```bash
|
||||
NOTIFY_ON="changes"
|
||||
```
|
||||
|
||||
| Wert | Bedingung |
|
||||
|------|-----------|
|
||||
| `always` | Nach jeder Ausführung |
|
||||
| `changes` | Wenn IPs hinzugefügt, entfernt oder Fehler aufgetreten sind |
|
||||
| `errors` | Nur bei Fehlern |
|
||||
|
||||
### Benachrichtigungs-Inhalt
|
||||
|
||||
Jede Benachrichtigung enthält:
|
||||
|
||||
```
|
||||
=== CrowdSec Manager Report ===
|
||||
Status: OK
|
||||
Zeitpunkt: 2026-03-11 14:30:00
|
||||
---
|
||||
Domains aufgelöst: 5
|
||||
IPs gesamt: 12
|
||||
Hinzugefügt: 3
|
||||
Entfernt: 1
|
||||
Unverändert: 8
|
||||
Fehler: 0
|
||||
```
|
||||
|
||||
Bei Fehlern werden zusätzliche Details angehängt:
|
||||
```
|
||||
Details:
|
||||
WARN: Keine Auflösung für broken-domain.com
|
||||
ERROR: Konnte 203.0.113.50 nicht hinzufügen: ...
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Desktop-Benachrichtigung (notify-send)
|
||||
|
||||
Verwendet `notify-send` für Desktop-Notifications auf Linux.
|
||||
|
||||
```bash
|
||||
NOTIFY_DESKTOP_ENABLED=true
|
||||
```
|
||||
|
||||
**Voraussetzungen:**
|
||||
- `notify-send` muss installiert sein (Teil von `libnotify-bin` auf Debian/Ubuntu)
|
||||
- Desktop-Session muss aktiv sein
|
||||
|
||||
**Verhalten:**
|
||||
- Bei Fehlern: Urgency wird auf `critical` gesetzt
|
||||
- Ansonsten: `normal`
|
||||
|
||||
---
|
||||
|
||||
## Ntfy
|
||||
|
||||
[Ntfy](https://ntfy.sh) ist ein Open-Source Benachrichtigungsdienst. Du kannst die öffentliche Instanz oder eine eigene nutzen.
|
||||
|
||||
### Konfiguration
|
||||
|
||||
```bash
|
||||
NOTIFY_NTFY_ENABLED=true
|
||||
NOTIFY_NTFY_URL="https://ntfy.sh" # oder eigene Instanz
|
||||
NOTIFY_NTFY_TOPIC="mein-crowdsec" # Dein Topic
|
||||
NOTIFY_NTFY_PRIORITY="default" # low, default, high, urgent
|
||||
NOTIFY_NTFY_TOKEN="tk_xxxxxxxx" # Access Token (optional)
|
||||
NOTIFY_NTFY_TAGS="shield,white_check_mark" # Emoji-Tags
|
||||
```
|
||||
|
||||
### Prioritäten
|
||||
|
||||
- Bei Fehlern wird automatisch `high` verwendet
|
||||
- Ansonsten der konfigurierte Wert
|
||||
|
||||
### Tags
|
||||
|
||||
- Bei Fehlern werden automatisch `warning,shield` verwendet
|
||||
- Ansonsten der konfigurierte Wert
|
||||
|
||||
### Voraussetzungen
|
||||
|
||||
- `curl` muss installiert sein
|
||||
- Ntfy-Server muss erreichbar sein
|
||||
|
||||
### Ntfy-App
|
||||
|
||||
Du kannst die [Ntfy-App](https://ntfy.sh) auf Android/iOS installieren und das Topic abonnieren, um Push-Benachrichtigungen zu erhalten.
|
||||
|
||||
---
|
||||
|
||||
## Gotify
|
||||
|
||||
[Gotify](https://gotify.net) ist ein Self-Hosted Push-Benachrichtigungsdienst.
|
||||
|
||||
### Konfiguration
|
||||
|
||||
```bash
|
||||
NOTIFY_GOTIFY_ENABLED=true
|
||||
NOTIFY_GOTIFY_URL="https://gotify.meinedomain.de" # Gotify-Server URL
|
||||
NOTIFY_GOTIFY_TOKEN="AbCdEf12345" # App-Token
|
||||
NOTIFY_GOTIFY_PRIORITY=5 # Priorität (0-10)
|
||||
```
|
||||
|
||||
### Einrichtung in Gotify
|
||||
|
||||
1. Melde dich in deinem Gotify-Webinterface an
|
||||
2. Erstelle eine neue **Application** (z.B. "CrowdSec Manager")
|
||||
3. Kopiere den generierten **Token**
|
||||
4. Trage URL und Token in die Config ein
|
||||
|
||||
### Prioritäten
|
||||
|
||||
| Bereich | Bedeutung |
|
||||
|---------|-----------|
|
||||
| 0 | Minimale Priorität |
|
||||
| 1-3 | Niedrig |
|
||||
| 4-7 | Normal |
|
||||
| 8-10 | Hoch |
|
||||
|
||||
- Konfigurierte Priorität wird als Standard verwendet
|
||||
- Bei Fehlern wird automatisch Priorität `8` (hoch) gesetzt
|
||||
|
||||
### Voraussetzungen
|
||||
|
||||
- `curl` muss installiert sein
|
||||
- Gotify-Server muss erreichbar sein
|
||||
- Für JSON-Escaping wird `python3` bevorzugt (Fallback: `sed`)
|
||||
|
||||
---
|
||||
|
||||
## E-Mail
|
||||
|
||||
E-Mails werden bevorzugt über SMTP mit `curl` gesendet. Fallback ist der `mail`-Befehl.
|
||||
|
||||
### Konfiguration
|
||||
|
||||
```bash
|
||||
NOTIFY_EMAIL_ENABLED=true
|
||||
NOTIFY_EMAIL_TO="admin@example.com"
|
||||
NOTIFY_EMAIL_FROM="crowdsec@meinserver.de"
|
||||
NOTIFY_EMAIL_SUBJECT="CrowdSec Manager Report"
|
||||
NOTIFY_EMAIL_SMTP_SERVER="smtp.example.com"
|
||||
NOTIFY_EMAIL_SMTP_PORT="587" # 587 für STARTTLS, 465 für SSL
|
||||
NOTIFY_EMAIL_SMTP_USER="mailuser"
|
||||
NOTIFY_EMAIL_SMTP_PASS="mailpass"
|
||||
NOTIFY_EMAIL_SMTP_TLS=true
|
||||
```
|
||||
|
||||
### SMTP-Ports
|
||||
|
||||
| Port | Protokoll | `SMTP_TLS` |
|
||||
|------|-----------|-----------|
|
||||
| 587 | STARTTLS | `true` (verwendet `smtps://`) |
|
||||
| 465 | Implicit TLS/SSL | `true` |
|
||||
| 25 | Unverschlüsselt | `false` |
|
||||
|
||||
### Fallback
|
||||
|
||||
Wenn `curl` nicht verfügbar ist, wird versucht den `mail`-Befehl zu verwenden. Dieser muss auf dem System konfiguriert sein (z.B. mit Postfix/Sendmail).
|
||||
|
||||
### Voraussetzungen
|
||||
|
||||
- `curl` (bevorzugt) oder `mail`
|
||||
- SMTP-Server muss erreichbar sein
|
||||
|
||||
---
|
||||
|
||||
## Sicherheitshinweise
|
||||
|
||||
- **Tokens und Passwörter** werden in der Konfigurationsdatei gespeichert. Stelle sicher, dass die Datei nur von berechtigten Benutzern lesbar ist:
|
||||
```bash
|
||||
chmod 600 config/crowdsec-manager.conf
|
||||
```
|
||||
- Keine sensiblen Daten (Passwörter, Tokens) werden in der Log-Ausgabe angezeigt
|
||||
- Verwende eigene/selbst gehostete Instanzen (Ntfy, Gotify) für erhöhte Sicherheit
|
||||
@@ -0,0 +1,135 @@
|
||||
# Troubleshooting & FAQ
|
||||
|
||||
Hilfe bei häufigen Problemen und Antworten auf oft gestellte Fragen.
|
||||
|
||||
---
|
||||
|
||||
## Häufige Probleme
|
||||
|
||||
### "dig: command not found"
|
||||
|
||||
```bash
|
||||
# Debian/Ubuntu
|
||||
sudo apt install dnsutils
|
||||
|
||||
# RHEL/CentOS/Fedora
|
||||
sudo dnf install bind-utils
|
||||
|
||||
# Alpine
|
||||
apk add --no-cache bind-tools
|
||||
|
||||
# Arch Linux
|
||||
sudo pacman -S bind
|
||||
```
|
||||
|
||||
### "CrowdSec ist nicht erreichbar"
|
||||
|
||||
1. Prüfe ob CrowdSec läuft:
|
||||
```bash
|
||||
docker ps | grep crowdsec
|
||||
# oder
|
||||
systemctl status crowdsec
|
||||
```
|
||||
|
||||
2. Teste den Befehl manuell:
|
||||
```bash
|
||||
docker exec crowdsec cscli version
|
||||
```
|
||||
|
||||
3. Prüfe Docker-Berechtigungen:
|
||||
```bash
|
||||
groups $(whoami) | grep docker
|
||||
```
|
||||
|
||||
### "Lock-File existiert bereits"
|
||||
|
||||
1. Prüfe ob noch ein Prozess läuft:
|
||||
```bash
|
||||
cat /tmp/crowdsec-manager.lock
|
||||
ps aux | grep crowdsec-manager
|
||||
```
|
||||
|
||||
2. Wenn kein Prozess läuft, Lock manuell entfernen:
|
||||
```bash
|
||||
rm /tmp/crowdsec-manager.lock
|
||||
```
|
||||
|
||||
### Domain wird nicht aufgelöst
|
||||
|
||||
1. Manuell testen:
|
||||
```bash
|
||||
dig +short A example.com
|
||||
dig +short @8.8.8.8 A example.com
|
||||
```
|
||||
|
||||
2. DNS-Server in der Config setzen:
|
||||
```bash
|
||||
DNS_SERVER="8.8.8.8"
|
||||
```
|
||||
|
||||
3. Timeout erhöhen:
|
||||
```bash
|
||||
DNS_TIMEOUT=10
|
||||
DNS_RETRIES=5
|
||||
```
|
||||
|
||||
### Berechtigungs-Fehler
|
||||
|
||||
```bash
|
||||
# Script ausführbar machen
|
||||
chmod +x crowdsec-manager.sh
|
||||
|
||||
# Log-Datei
|
||||
sudo touch /var/log/crowdsec-manager.log
|
||||
sudo chown $(whoami) /var/log/crowdsec-manager.log
|
||||
|
||||
# Backup-Verzeichnis
|
||||
sudo mkdir -p /var/backup/crowdsec-manager
|
||||
sudo chown $(whoami) /var/backup/crowdsec-manager
|
||||
```
|
||||
|
||||
### Interaktives Menü startet statt Cron-Sync
|
||||
|
||||
Ab v0.1.0 startet das Script standardmäßig das interaktive Menü. Für den Cron-Betrieb **muss** `--run` angegeben werden:
|
||||
|
||||
```bash
|
||||
# Falsch (startet interaktives Menü):
|
||||
*/30 * * * * /opt/.../crowdsec-manager.sh
|
||||
|
||||
# Richtig:
|
||||
*/30 * * * * /opt/.../crowdsec-manager.sh --run
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## FAQ
|
||||
|
||||
**F: Werden manuell erstellte CrowdSec-Decisions beeinflusst?**
|
||||
A: Nein. Das Script verwaltet nur Decisions mit dem konfigurierten `ALLOWLIST_REASON`. Alle manuell erstellten Einträge bleiben unberührt.
|
||||
|
||||
**F: Was passiert wenn CrowdSec nicht erreichbar ist?**
|
||||
A: Das Script bricht mit Exit-Code 1 ab. Beim nächsten Cron-Lauf wird erneut versucht. Die bestehende Allowlist bleibt unverändert.
|
||||
|
||||
**F: Was passiert wenn eine Domain nicht aufgelöst werden kann?**
|
||||
A: Die Domain wird übersprungen und eine Warnung geloggt. Alle anderen Domains werden normal verarbeitet. Bestehende Einträge bleiben bis zum Ablauf der `ALLOWLIST_DURATION` bestehen.
|
||||
|
||||
**F: Kann ich das Script auf einem anderen Server als CrowdSec laufen lassen?**
|
||||
A: Ja, über `CSCLI_CMD` z.B. via SSH:
|
||||
```bash
|
||||
CSCLI_CMD="ssh user@crowdsec-server cscli"
|
||||
```
|
||||
|
||||
**F: Unterstützt das Script Wildcard-Domains?**
|
||||
A: Nein, Wildcard-Domains (z.B. `*.example.com`) werden nicht unterstützt. Jede Subdomain muss einzeln eingetragen werden.
|
||||
|
||||
**F: Wie viele Einträge kann das Script verwalten?**
|
||||
A: Kein festes Limit. Die DNS-Auflösung wird linear pro Eintrag durchgeführt. Bei hunderten Domains kann die Laufzeit einige Minuten betragen.
|
||||
|
||||
**F: Kann ich das Script unter macOS verwenden?**
|
||||
A: Ja, solange `dig` und Bash 4+ verfügbar sind. macOS liefert standardmäßig Bash 3.2 – installiere Bash 4+ z.B. via Homebrew.
|
||||
|
||||
**F: Was ist der Unterschied zwischen dem interaktiven Menü und dem CLI?**
|
||||
A: Das interaktive Menü (Standard) bietet eine grafische Auswahl aller Funktionen. Der CLI-Modus (`--run`, `--list`, etc.) ist für automatisierten/Cron-Betrieb gedacht.
|
||||
|
||||
**F: Können im interaktiven Menü auch direkte cscli-Befehle ausgeführt werden?**
|
||||
A: Ja, Menüpunkt 40 ermöglicht die Ausführung beliebiger cscli-Befehle über den konfigurierten Basisbefehl.
|
||||
Reference in New Issue
Block a user