Files
schiwagoaandClaude Opus 5.5 d7dcd9d6b1 Initial version: npm-scanner image, filters, entrypoint, watcher, testbed
- 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>
2026-10-25 20:41:08 +01:00

108 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.