docs: update README + Bedienungsanleitung; fix config.py SMTP defaults

- test-alert subcommand documented in both files
- Cron examples extended with www.bergbauspuren-bredelar.de (03:30)
- "Neue Website hinzufügen" updated to URL-first syntax
- Bedienungsanleitung: sitemap option, CF7 ignore_pattern example, generic header
- config.py: SMTP defaults corrected (smtp_host, smtp_user, from, to)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-06-12 22:17:34 +02:00
commit beb7f274a3
3 changed files with 48 additions and 16 deletions

View file

@ -1,7 +1,7 @@
# Bedienungsanleitung — Website Integrity Scanner
Überwachungswerkzeug für die statische Website **bredelar.info** gegen SEO-Spam und
unbefugte Manipulationen. Der Scanner läuft lokal im Verantwortungsbereich des Betreibers.
Überwachungswerkzeug für statische Websites gegen SEO-Spam und unbefugte Manipulationen.
Der Scanner läuft lokal im Verantwortungsbereich des Betreibers.
---
@ -178,6 +178,9 @@ Je eine Zeile pro überwachter Website einfügen (mit leichtem Zeitversatz):
# jamulix.de — täglich 03:15 Uhr
15 3 * * * cd /home/dschlueter/Python_Programs/integrity_scanner_fuer_statische_Webseiten && python -m scanner --config jamulix.de/config.yaml scan >> jamulix.de/logs/cron.log 2>&1
# www.bergbauspuren-bredelar.de — täglich 03:30 Uhr
30 3 * * * cd /home/dschlueter/Python_Programs/integrity_scanner_fuer_statische_Webseiten && python -m scanner --config www.bergbauspuren-bredelar.de/config.yaml scan >> www.bergbauspuren-bredelar.de/logs/cron.log 2>&1
```
Danach prüfen: `crontab -l`
@ -208,6 +211,7 @@ Globale Optionen: `--config path/to/config.yaml`, `--verbose` (`-v`).
| `check-ext-links` | Externe Links auf Erreichbarkeit prüfen (4xx/5xx) |
| `check-assets` | Binärdateien (JS/CSS/Bilder) auf Inhaltsänderung prüfen |
| `approve-assets` | Aktuelle Asset-Hashes als neue Baseline setzen |
| `test-alert` | Test-E-Mail senden ohne echten Scan — prüft SMTP-Konfiguration |
### Beispiele
@ -368,6 +372,9 @@ oder die überwachten Server unnötig belasten.
# jamulix.de — täglich 03:15 Uhr
15 3 * * * cd /home/dschlueter/Python_Programs/integrity_scanner_fuer_statische_Webseiten && python -m scanner --config jamulix.de/config.yaml scan >> jamulix.de/logs/cron.log 2>&1
# www.bergbauspuren-bredelar.de — täglich 03:30 Uhr
30 3 * * * cd /home/dschlueter/Python_Programs/integrity_scanner_fuer_statische_Webseiten && python -m scanner --config www.bergbauspuren-bredelar.de/config.yaml scan >> www.bergbauspuren-bredelar.de/logs/cron.log 2>&1
```
Danach prüfen ob die Einträge gespeichert wurden:
@ -376,11 +383,14 @@ crontab -l
```
**Neue Website hinzufügen:**
1. Template kopieren: `cp -r meine-seite.de neue-seite.de`
2. In `neue-seite.de/config.yaml` `target` und alle 4 Pfade (`data_dir`, `reports_dir`, `logs_dir`, `config_dir`) anpassen
3. Erste Prüfung: `python -m scanner --config neue-seite.de/config.yaml init`
4. Weiteren Cron-Eintrag ergänzen — mit 15 Minuten Abstand zum vorherigen (z.B. 03:30 Uhr)
5. `neue-seite.de/data/`, `/reports/`, `/logs/` in `.gitignore` eintragen
1. Ersten Scan starten — Verzeichnis und config.yaml werden automatisch angelegt:
```bash
python -m scanner https://neue-seite.de init
```
2. Externe Domains prüfen und in `neue-seite.de/config/allowed_external.yaml` eintragen
3. Baseline freigeben: `python -m scanner https://neue-seite.de approve --all --note "Erststand geprüft"`
4. Weiteren Cron-Eintrag ergänzen — mit 15 Minuten Abstand zum vorherigen (z.B. 03:45 Uhr)
5. `neue-seite.de/` in `.gitignore` eintragen
### Log prüfen
@ -406,6 +416,17 @@ Datei `/etc/logrotate.d/integrity-scanner`:
## 11. E-Mail-Benachrichtigung einrichten
### Konfiguration testen ohne echten Scan
```bash
python -m scanner https://ihre-website.de test-alert
```
Sendet eine Test-Nachricht und prüft dabei SMTP-Host, Zugangsdaten und Empfängeradresse.
Sinnvoll nach jeder Änderung an der SMTP-Konfiguration.
Optional: `test-alert --level red` sendet eine Nachricht mit rotem Alarm-Level.
### config.yaml anpassen
```yaml
@ -462,6 +483,7 @@ Alle Einstellungen in `config.yaml`. Fehlende Werte werden aus den Defaults übe
| `max_pages` | `200` | Maximale Anzahl gecrawlter Seiten |
| `delay_seconds` | `1.0` | Pause zwischen Requests (Server-Schonung) |
| `skip_extensions` | `.jpg`, `.pdf` etc. | Dateitypen, die nicht gecrawlt werden |
| `sitemap` | `true` | Sitemap.xml auslesen um Seiten ohne eingehende Links zu finden |
### Score-Gewichte (`scoring:`)
@ -561,8 +583,13 @@ normalization:
- '\b\d{1,2}\.\s*(?:Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember)\s+\d{4}\b'
- '\b\d{1,2}\.\d{1,2}\.\d{4}\b'
- 'Stand:\s+\S+'
# WordPress Contact Form 7: Platzhalter-Text rotiert bei jedem Seitenaufruf
- 'Kommentar oder Nachricht \* \w+'
```
Das Muster wird auf beiden Seiten des Vergleichs (Baseline und aktueller Snapshot)
angewendet — falsch-positive Alarme durch dynamische CMS-Inhalte werden so unterdrückt.
---
## 15. Was der Scanner erkennt

View file

@ -55,6 +55,7 @@ dafür **nichts** extra einzurichten — ein täglicher Aufruf genügt für alle
| `approve --rebuild` | Gesamte Baseline ersetzen (nach großer Änderung) |
| `report` | Letzten Report anzeigen |
| `status` | Baseline-Datum, letzter Scan, Risiko-Level |
| `test-alert` | Test-E-Mail senden, ohne echten Scan (SMTP-Check) |
Alle Befehle akzeptieren `--config path/to/config.yaml` und `--verbose`.
@ -135,6 +136,9 @@ laufen mehrere Scans gleichzeitig, konkurrieren sie um Netzwerk und CPU und kön
# Täglich 03:15 — jamulix.de
15 3 * * * cd /home/dschlueter/Python_Programs/integrity_scanner_fuer_statische_Webseiten && python -m scanner --config jamulix.de/config.yaml scan >> jamulix.de/logs/cron.log 2>&1
# Täglich 03:30 — www.bergbauspuren-bredelar.de
30 3 * * * cd /home/dschlueter/Python_Programs/integrity_scanner_fuer_statische_Webseiten && python -m scanner --config www.bergbauspuren-bredelar.de/config.yaml scan >> www.bergbauspuren-bredelar.de/logs/cron.log 2>&1
```
**Wichtig:** Der `cd`-Befehl ist nötig, damit `python -m scanner` das Paket findet.
@ -145,11 +149,12 @@ Nach dem Einrichten prüfen: `crontab -l`
### Neue Website hinzufügen
```bash
cp -r meine-seite.de neue-domain.de
# In neue-domain.de/config.yaml: target + alle 4 Pfade anpassen
python -m scanner --config neue-domain.de/config.yaml init
# Dann einen weiteren Cron-Eintrag ergänzen
# neue-domain.de/data|reports|logs in .gitignore eintragen
# Zielverzeichnis + config.yaml werden automatisch aus dem Template angelegt:
python -m scanner https://neue-domain.de init
# Externe Domains prüfen und in neue-domain.de/config/allowed_external.yaml eintragen
python -m scanner https://neue-domain.de approve --all --note "Erststand geprüft"
# Weiteren Cron-Eintrag ergänzen — mit 15 Minuten Abstand zum vorherigen
# neue-domain.de/ in .gitignore eintragen (data/, reports/, logs/)
```
Log-Rotation (`/etc/logrotate.d/scanner`):

View file

@ -58,13 +58,13 @@ DEFAULT_CONFIG: dict = {
"min_level": "yellow",
"email": {
"enabled": False,
"smtp_host": "localhost",
"smtp_host": "linix.de",
"smtp_port": 587,
"smtp_tls": True,
"smtp_user": "",
"smtp_user": "eliza",
"smtp_password_env": "SCANNER_SMTP_PASSWORD",
"from": "scanner@example.com",
"to": [],
"from": "eliza@linix.de",
"to": ["dieter.schlueter@linix.de"],
},
"webhook": {
"enabled": False,