# 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 ` 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.