- Image based on crazymax/fail2ban:1.1.1 with inotify-tools - Filters npm-scanner and npm-wplogin, tested with fail2ban-regex in the build - jail.local generated from .env, optional npm-wplogin and recidive - Watcher reloads the jails when NPM creates a new proxy host log - check command, docs, testbed for LXC Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
108 lines
3.4 KiB
Markdown
108 lines
3.4 KiB
Markdown
# Betrieb
|
||
|
||
Alle Befehle im Projektordner (zum Beispiel `/home/docker-projekte/npm-scanner`) als root.
|
||
|
||
## Status und Logs
|
||
|
||
```bash
|
||
docker compose ps
|
||
docker logs --tail 50 npm-scanner
|
||
docker logs -f npm-scanner
|
||
docker exec npm-scanner fail2ban-client status
|
||
docker exec npm-scanner fail2ban-client status npm-scanner
|
||
```
|
||
|
||
Überwachte Dateien:
|
||
|
||
```bash
|
||
docker exec npm-scanner fail2ban-client get npm-scanner logpath
|
||
```
|
||
|
||
Meldungen des Watchers (neue Proxy-Hosts):
|
||
|
||
```bash
|
||
docker logs npm-scanner 2>&1 | grep npm-newlog
|
||
```
|
||
|
||
## Sperren
|
||
|
||
```bash
|
||
docker exec npm-scanner fail2ban-client get npm-scanner banip --with-time
|
||
docker exec npm-scanner fail2ban-client set npm-scanner unbanip 198.51.100.7
|
||
docker exec npm-scanner fail2ban-client set npm-scanner banip 198.51.100.7
|
||
docker exec npm-scanner fail2ban-client unban 198.51.100.7 # aus allen Jails
|
||
```
|
||
|
||
Regeln auf dem Host:
|
||
|
||
```bash
|
||
iptables -S DOCKER-USER
|
||
iptables -S f2b-npm-scan
|
||
```
|
||
|
||
## Filter gegen echte Logs testen
|
||
|
||
Ändert nichts, zeigt nur die Treffer:
|
||
|
||
```bash
|
||
docker exec npm-scanner sh -c 'fail2ban-regex "$(ls -S /logs/npm1/proxy-host-*_access.log | head -1)" /etc/fail2ban/filter.d/npm-scanner.conf' | grep -E '^Lines:'
|
||
docker exec npm-scanner sh -c 'fail2ban-regex --print-all-matched "$(ls -S /logs/npm1/proxy-host-*_access.log | head -1)" /etc/fail2ban/filter.d/npm-scanner.conf' | grep -E '^\| \[' | head -20
|
||
```
|
||
|
||
## Update
|
||
|
||
```bash
|
||
docker compose pull
|
||
docker compose up -d
|
||
docker logs --tail 30 npm-scanner
|
||
```
|
||
|
||
Die Sperren bleiben erhalten (fail2ban-DB in `./data/db`).
|
||
|
||
## Backup
|
||
|
||
```bash
|
||
mkdir -p /backups/config_backups/$(hostname)
|
||
docker compose stop npm-scanner
|
||
tar -cpzf /backups/config_backups/$(hostname)/$(date +%F)_npm-scanner.tar.gz -C .. "$(basename "$PWD")"
|
||
docker compose start npm-scanner
|
||
```
|
||
|
||
## Fehlerbehebung
|
||
|
||
| Meldung | Ursache | Lösung |
|
||
|---|---|---|
|
||
| `NPM_LOG_DIR missing in .env` | Variable fehlt | `.env` prüfen |
|
||
| `/logs/npm1 is missing` | Pfad in `NPM_LOG_DIR` existiert nicht | `ls <pfad>` auf dem Host |
|
||
| `no proxy-host-*_access.log found yet` | Falscher Ordner oder NPM hat noch keine Hosts | Schritt 1 der Installation wiederholen |
|
||
| `Have not found any log file for npm-scanner jail` | Keine einzige Logdatei gefunden | wie oben |
|
||
| `iptables chain DOCKER-USER does not exist` | Docker auf dem Host läuft nicht oder ohne iptables | `systemctl status docker`, `iptables -S DOCKER-USER` |
|
||
| `iptables-nft is not supported by the host, falling back to iptables-legacy` | Host nutzt iptables-legacy | nur Hinweis; prüfen, dass die Regeln mit `iptables -S` auf dem Host sichtbar sind |
|
||
| Regeln im Container, nicht auf dem Host | `network_mode: host` fehlt | `docker-compose.yaml` prüfen |
|
||
| Jede Zeile zählt doppelt | Derselbe Ordner zweimal über verschiedene Pfade eingebunden | `NPM_LOG_DIR2` leer lassen |
|
||
| Eigene IP gesperrt | Fehlt in `WHITELIST` | entsperren (siehe oben), `WHITELIST` ergänzen, `docker compose up -d` |
|
||
| Container startet nicht | Fehler in der Konfiguration | `docker compose run --rm npm-scanner check` |
|
||
|
||
Notfall – alle Sperren sofort aufheben:
|
||
|
||
```bash
|
||
docker compose stop npm-scanner
|
||
```
|
||
|
||
fail2ban entfernt beim Stoppen seine Regeln. Bleiben sie trotzdem hängen:
|
||
|
||
```bash
|
||
iptables -D DOCKER-USER -j f2b-npm-scan
|
||
iptables -F f2b-npm-scan
|
||
iptables -X f2b-npm-scan
|
||
```
|
||
|
||
## Rückbau
|
||
|
||
```bash
|
||
docker compose down
|
||
iptables -S | grep f2b- || echo "keine f2b-Regeln mehr"
|
||
```
|
||
|
||
Danach den Projektordner löschen, wenn die Sperr-Historie nicht mehr gebraucht wird.
|