# ============================================================ # Integrity Scanner — Konfigurationsvorlage # ============================================================ # Verwendung: # 1. Dieses Verzeichnis kopieren: # cp -r meine-seite.de neue-domain.de # 2. In neue-domain.de/config.yaml alle Stellen mit # "meine-seite.de" durch die echte Domain ersetzen. # 3. Verzeichnis in .gitignore eintragen (data/reports/logs). # 4. Erste Einrichtung: # python -m scanner --config neue-domain.de/config.yaml init # ============================================================ # --- Ziel-Website --- target: "https://meine-seite.de" # User-Agent, mit dem der Scanner sich bei der Website meldet. # Bitte nicht auf einen Browser-Agent ändern — der Scanner soll erkennbar sein. user_agent: "integrity-scanner/1.0 (+security-monitoring)" # Timeout in Sekunden pro HTTP-Anfrage request_timeout: 20 # --- Verzeichnisse (müssen absolut angegeben werden) --- # Pfad zum Projektverzeichnis anpassen! data_dir: "/home/dschlueter/Python_Programs/integrity_scanner_fuer_statische_Webseiten/meine-seite.de/data" reports_dir: "/home/dschlueter/Python_Programs/integrity_scanner_fuer_statische_Webseiten/meine-seite.de/reports" logs_dir: "/home/dschlueter/Python_Programs/integrity_scanner_fuer_statische_Webseiten/meine-seite.de/logs" config_dir: "/home/dschlueter/Python_Programs/integrity_scanner_fuer_statische_Webseiten/meine-seite.de/config" # --- Crawl-Einstellungen --- crawl: # Maximale Anzahl Seiten pro Crawl (Schutz vor endlosen Websites) max_pages: 200 # Wartezeit zwischen zwei Seitenanfragen in Sekunden (Server schonen) delay_seconds: 1.0 respect_robots_txt: false # Pfade, die vom Scan ausgeschlossen werden sollen. # Nützlich für Bereiche mit gewollt häufig wechselnden Inhalten, # z. B. RSS-Feeds, News-Archive, Nutzerprofile. # Beispiel: ["/rss/", "/feed/", "/news/archiv/", "/user/"] exclude_paths: [] # Dateiendungen, die nicht gecrawlt werden (Binärdateien) skip_extensions: - ".jpg" - ".jpeg" - ".png" - ".gif" - ".webp" - ".svg" - ".ico" - ".pdf" - ".zip" - ".woff" - ".woff2" - ".ttf" - ".otf" - ".eot" - ".mp4" - ".mp3" - ".webm" - ".avi" - ".mov" # --- Bewertungsgewichte --- # Jedes Ereignis erhöht den Score. Ab 20 = gelb, ab 60 = rot. # Die Werte können hier für diese Website angepasst werden. scoring: new_external_domain: 50 # Neuer Verweis auf fremde Domain new_internal_url: 30 # Neue interne Seite aufgetaucht missing_internal_url: 20 # Bekannte Seite verschwunden hidden_content: 40 # Unsichtbarer Text/Link (display:none) unexpected_canonical: 35 # Canonical-Tag geändert meta_refresh: 40 # Automatische Weiterleitung eingebaut unexpected_jsonld: 35 # Unbekannter JSON-LD-Typ large_text_addition: 20 # Großer neuer Textblock (>200 Zeichen) new_inline_script_suspicious: 30 # Verdächtiges inline JavaScript comment_links: 25 # Link in HTML-Kommentar versteckt new_broken_link: 20 # Neuer kaputt interner Link suspicious_filename: 60 # Webshell-typischer Dateiname verlinkt cloaking_extra_link: 60 # Nur für Google-Bot sichtbarer Link cloaking_extra_text: 40 # Nur für Google-Bot sichtbarer Text cloaking_vary_ua: 25 # Server sendet verschiedene Inhalte je UA changed_script: 40 # JavaScript-Datei verändert changed_stylesheet: 30 # CSS-Datei verändert changed_asset: 20 # Bild/PDF/sonstige Datei verändert thresholds: yellow: 20 # Ab diesem Score: Warnung (gelb) — Bitte prüfen red: 60 # Ab diesem Score: Alarm (rot) — Sofort prüfen large_text_block_chars: 200 # --- Wöchentliche Zusatzprüfungen --- # Laufen automatisch beim täglichen `scan` mit — kein separater Aufruf nötig. periodic_checks: enabled: true interval_days: 7 cloak_check: true # Prüft ob Google andere Inhalte sieht als Besucher ext_links: true # Prüft ob externe Links noch erreichbar sind assets: true # Prüft ob CSS/JS/Bilder sich verändert haben # --- E-Mail-Benachrichtigung --- # Passwort NIEMALS hier eintragen — nur als Umgebungsvariable: # export SCANNER_SMTP_PASSWORD="geheimesPasswort" alerting: min_level: "yellow" # "yellow" = bei Gelb und Rot mailen; "red" = nur bei Rot email: enabled: false # Auf true setzen wenn SMTP konfiguriert smtp_host: "mail.meine-seite.de" smtp_port: 587 smtp_tls: true smtp_user: "scanner@meine-seite.de" smtp_password_env: "SCANNER_SMTP_PASSWORD" from: "scanner@meine-seite.de" to: - "admin@meine-seite.de" webhook: enabled: false url: "" # z.B. Slack-Webhook oder Telegram-Bot-URL # --- Normalisierung --- # Elemente, die vor dem Vergleich aus dem HTML entfernt werden # (z. B. dynamische Datums-/Zeitanzeigen die sich täglich ändern). normalization: strip_html_comments: true collapse_whitespace: true ignore_selectors: # - "#last-modified" # Element mit dieser ID ignorieren # - ".timestamp" # Alle Elemente mit dieser CSS-Klasse ignorieren ignore_patterns: # - '\d{1,2}\.\d{1,2}\.\d{4}' # Datumsangaben im Text ignorieren # - 'Stand:\s+\S+' # --- Erlaubte JSON-LD-Typen --- # Alles, was hier nicht steht und auf der Website auftaucht, löst Alarm aus. allowed_jsonld_types: - "Organization" - "WebSite" - "WebPage" - "Article" - "BreadcrumbList" - "ItemList" - "LocalBusiness" - "Place" - "Person" - "Event" - "FAQPage" - "Question" - "Answer" - "ImageObject" - "SiteLinksSearchBox" - "ContactPage" - "AboutPage" # --- Erwartete Security-Header --- # Fehlen diese Header, erscheint ein Hinweis im Report (kein Score-Einfluss). security_headers: - "Content-Security-Policy" - "Strict-Transport-Security" - "X-Content-Type-Options" - "Referrer-Policy"