- Neues Recidive-System: Sperrdauer steigt exponentiell bei wiederholten Verstößen (wie fail2ban) - Konfigurierbar: Multiplikator, Max-Stufe mit permanenter Sperre, Zähler-Reset-Zeit - Offense-Tracking via *.offenses State-Dateien - Permanente Sperren werden nicht automatisch aufgehoben - Neuer Befehl: reset-offenses [IP] zum Zurücksetzen der Offense-Zähler - Status-Anzeige zeigt Stufe, Dauer und Wiederholungstäter-Übersicht - Benachrichtigungen enthalten Stufe und progressive Sperrdauer - unban-expired.sh berücksichtigt permanente Sperren - Dokumentation vollständig aktualisiert (Konfig, Befehle, Architektur, Troubleshooting, README)
146 lines
4.6 KiB
Markdown
146 lines
4.6 KiB
Markdown
# Tipps & Troubleshooting
|
|
|
|
## Best Practices
|
|
|
|
- **Erst immer im Dry-Run testen**, bevor der scharfe Modus aktiviert wird
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield.sh dry-run
|
|
```
|
|
- **Whitelist großzügig pflegen**: Eigene IPs, Router, wichtige Server nicht vergessen
|
|
- **Sperrdauer anpassen**: Für DDoS-artige Muster ggf. länger sperren
|
|
- **Logs regelmäßig prüfen**: Falsche Positive erkennen und Whitelist anpassen
|
|
- **Ban-History nutzen**: `history`-Befehl zeigt alle vergangenen Sperren — hilfreich um Muster zu erkennen
|
|
- **Log-Level auf DEBUG** setzen wenn etwas nicht funktioniert
|
|
|
|
## Häufige Probleme
|
|
|
|
### API-Verbindung schlägt fehl
|
|
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield.sh test
|
|
```
|
|
|
|
**Mögliche Ursachen:**
|
|
- Falsche URL in `ADGUARD_URL` (Port prüfen!)
|
|
- Falsche Zugangsdaten (`ADGUARD_USER` / `ADGUARD_PASS`)
|
|
- AdGuard Home läuft nicht
|
|
- Firewall blockiert lokale Verbindung
|
|
|
|
**Lösung:** URL manuell testen:
|
|
```bash
|
|
curl -s -u admin:passwort http://127.0.0.1:3000/control/querylog?limit=1
|
|
```
|
|
|
|
### iptables-Fehler: "Permission denied"
|
|
|
|
Das Script muss als **root** laufen, da iptables Root-Rechte benötigt.
|
|
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield.sh start
|
|
```
|
|
|
|
### Client wird fälschlich gesperrt
|
|
|
|
1. Client sofort entsperren:
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield.sh unban 192.168.1.100
|
|
```
|
|
2. In der Ban-History prüfen, warum gesperrt wurde:
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield.sh history | grep 192.168.1.100
|
|
```
|
|
3. Offense-Zähler für die IP zurücksetzen (damit die progressive Sperre wieder bei Stufe 1 beginnt):
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield.sh reset-offenses 192.168.1.100
|
|
```
|
|
4. IP zur Whitelist hinzufügen in `adguard-shield.conf`
|
|
5. Service neustarten:
|
|
```bash
|
|
sudo systemctl restart adguard-shield
|
|
```
|
|
|
|
### Client wurde permanent gesperrt (Progressive Sperren)
|
|
|
|
Wenn eine IP die maximale Stufe der progressiven Sperren erreicht hat, wird sie permanent gesperrt und nicht automatisch aufgehoben.
|
|
|
|
1. IP entsperren:
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield.sh unban 192.168.1.100
|
|
```
|
|
2. Offense-Zähler zurücksetzen:
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield.sh reset-offenses 192.168.1.100
|
|
```
|
|
3. Prüfen ob die IP auf die Whitelist gehört, oder die Progressive-Ban-Einstellungen anpassen (`PROGRESSIVE_BAN_MAX_LEVEL` erhöhen oder auf `0` setzen für keine permanenten Sperren)
|
|
|
|
### Sperren überleben Reboot nicht
|
|
|
|
Das ist normal — iptables-Regeln sind flüchtig. Der **Service** erstellt die Chain beim Start automatisch neu. Aktive Sperren aus dem State-Verzeichnis werden aber nicht automatisch wiederhergestellt.
|
|
|
|
**Optionen:**
|
|
- `iptables-persistent` installieren (`apt install iptables-persistent`)
|
|
- Oder den State beim Boot wiederherstellen lassen (Feature-Idee)
|
|
|
|
### Zu viele false positives
|
|
|
|
- `RATE_LIMIT_MAX_REQUESTS` erhöhen (z.B. 50 oder 100)
|
|
- `RATE_LIMIT_WINDOW` vergrößern (z.B. 120 Sekunden)
|
|
- Windows-Clients fragen manche Domains von Natur aus sehr oft an — Whitelist nutzen
|
|
|
|
### Monitor startet nicht (PID-File)
|
|
|
|
```bash
|
|
# Altes PID-File entfernen
|
|
sudo rm -f /var/run/adguard-shield.pid
|
|
sudo systemctl start adguard-shield
|
|
```
|
|
|
|
## Update durchführen
|
|
|
|
```bash
|
|
# Repository aktualisieren
|
|
cd /tmp/adguard-shield
|
|
git pull
|
|
|
|
# Update ausführen (Konfig wird automatisch migriert, Service neu gestartet)
|
|
sudo bash install.sh update
|
|
```
|
|
|
|
**Was passiert beim Update:**
|
|
- Alle Scripts werden aktualisiert
|
|
- Konfiguration wird als `adguard-shield.conf.old` gesichert
|
|
- Neue Konfigurationsparameter werden automatisch zur bestehenden Konfig ergänzt
|
|
- Bestehende Einstellungen bleiben erhalten
|
|
- Service wird per `daemon-reload` neu geladen und automatisch neu gestartet
|
|
|
|
## Deinstallation
|
|
|
|
```bash
|
|
# Über den Installer (interaktiv mit Menü)
|
|
sudo bash install.sh uninstall
|
|
```
|
|
|
|
Oder manuell:
|
|
```bash
|
|
sudo systemctl stop adguard-shield
|
|
sudo systemctl disable adguard-shield
|
|
sudo /opt/adguard-shield/iptables-helper.sh remove
|
|
sudo rm -rf /opt/adguard-shield
|
|
sudo rm -f /etc/systemd/system/adguard-shield.service
|
|
sudo systemctl daemon-reload
|
|
```
|
|
|
|
## Voraussetzungen
|
|
|
|
Folgende Pakete werden für den Betrieb benötigt und bei der Installation automatisch installiert:
|
|
|
|
| Paket | Zweck |
|
|
|-------|-------|
|
|
| `curl` | API-Kommunikation mit AdGuard Home |
|
|
| `jq` | JSON-Verarbeitung der API-Antworten |
|
|
| `iptables` | Firewall-Regeln (IPv4 + IPv6) |
|
|
| `gawk` | Textverarbeitung in Scripts |
|
|
| `systemd` | Service-Management und Autostart |
|
|
|
|
Diese werden bei `sudo bash install.sh install` automatisch geprüft und bei Bedarf über den Paketmanager (`apt`, `dnf`, `yum`, `pacman`) nachinstalliert.
|