############################################################################### # AdGuard Shield - Konfigurationsdatei # Ausführliche Dokumentation: docs/konfiguration.md ############################################################################### # --- AdGuard Home API --- ADGUARD_URL="https://dns1.domain.com" ADGUARD_USER="admin" ADGUARD_PASS='changeme' # --- Rate-Limit --- RATE_LIMIT_MAX_REQUESTS=30 # Max. Anfragen pro Domain/Client im Zeitfenster RATE_LIMIT_WINDOW=60 # Zeitfenster in Sekunden CHECK_INTERVAL=10 # Prüfintervall in Sekunden # --- Subdomain-Flood-Erkennung --- SUBDOMAIN_FLOOD_ENABLED=true SUBDOMAIN_FLOOD_MAX_UNIQUE=50 # Max. eindeutige Subdomains pro Basisdomain/Client SUBDOMAIN_FLOOD_WINDOW=60 # Zeitfenster in Sekunden # --- DNS-Flood-Watchlist --- DNS_FLOOD_WATCHLIST_ENABLED=false DNS_FLOOD_WATCHLIST="" # Kommagetrennt, z.B. "example.com,evil.org" # --- Sperr-Einstellungen --- BAN_DURATION=3600 # Basis-Sperrdauer in Sekunden IPTABLES_CHAIN="ADGUARD_SHIELD" BLOCKED_PORTS="53 443 853" # DNS(53), DoH(443), DoT/DoQ(853) # --- Whitelist --- # IPs die niemals gesperrt werden (kommagetrennt) WHITELIST="127.0.0.1,::1" # --- Logging --- LOG_FILE="/var/log/adguard-shield.log" LOG_LEVEL="INFO" # DEBUG, INFO, WARN, ERROR LOG_MAX_SIZE_MB=50 # Max. Größe in MB (danach Rotation) BAN_HISTORY_FILE="/var/log/adguard-shield-bans.log" BAN_HISTORY_RETENTION_DAYS=0 # 0 = unbegrenzt # --- Benachrichtigungen --- NOTIFY_ENABLED=false NOTIFY_TYPE="ntfy" # ntfy, discord, slack, gotify, generic NOTIFY_WEBHOOK_URL="" # Webhook-URL (nicht für ntfy) # Ntfy-Einstellungen (nur bei NOTIFY_TYPE="ntfy") NTFY_SERVER_URL="https://ntfy.sh" NTFY_TOPIC="" NTFY_TOKEN="" NTFY_PRIORITY="4" # 1=min, 3=default, 5=max # --- E-Mail Report --- REPORT_ENABLED=false REPORT_INTERVAL="weekly" # daily, weekly, biweekly, monthly REPORT_TIME="08:00" REPORT_EMAIL_TO="admin@example.com" REPORT_EMAIL_FROM="adguard-shield@example.com" REPORT_FORMAT="html" # html, txt REPORT_MAIL_CMD="msmtp" REPORT_BUSIEST_DAY_RANGE=30 # Tage für "Aktivster Tag" (0 = nur Berichtszeitraum) # --- Externe Whitelist --- # Externe Whitelist-Dateien mit Domains/IPs; Domains werden per DNS aufgelöst EXTERNAL_WHITELIST_ENABLED=false EXTERNAL_WHITELIST_URLS="" # URL(s) kommagetrennt EXTERNAL_WHITELIST_INTERVAL=300 # Prüfintervall in Sekunden EXTERNAL_WHITELIST_CACHE_DIR="/var/lib/adguard-shield/external-whitelist" # --- Externe Blocklist --- EXTERNAL_BLOCKLIST_ENABLED=false EXTERNAL_BLOCKLIST_URLS="" # URL(s) kommagetrennt EXTERNAL_BLOCKLIST_INTERVAL=300 # Prüfintervall in Sekunden EXTERNAL_BLOCKLIST_BAN_DURATION=0 # 0 = permanent bis IP aus Liste entfernt EXTERNAL_BLOCKLIST_AUTO_UNBAN=true EXTERNAL_BLOCKLIST_NOTIFY=false # Bei großen Listen auf false lassen EXTERNAL_BLOCKLIST_CACHE_DIR="/var/lib/adguard-shield/external-blocklist" # --- Progressive Sperren (Recidive) --- # Wiederholungstäter werden stufenweise länger gesperrt PROGRESSIVE_BAN_ENABLED=true PROGRESSIVE_BAN_MULTIPLIER=2 # Multiplikator pro Stufe (2 = Verdopplung) PROGRESSIVE_BAN_MAX_LEVEL=5 # Ab dieser Stufe permanent sperren (0 = nie) PROGRESSIVE_BAN_RESET_AFTER=86400 # Zähler-Reset nach X Sekunden ohne Vergehen # --- AbuseIPDB Reporting --- # Meldet nur permanent gesperrte IPs an AbuseIPDB ABUSEIPDB_ENABLED=false ABUSEIPDB_API_KEY="" ABUSEIPDB_CATEGORIES="4" # 4 = DDoS Attack (siehe abuseipdb.com/categories) # --- GeoIP-basierte Länderfilter --- # Sperrt/erlaubt DNS-Anfragen nach Herkunftsland (lokale DB, keine Online-API) GEOIP_ENABLED=false GEOIP_MODE="blocklist" # blocklist oder allowlist GEOIP_COUNTRIES="" # ISO 3166-1 Alpha-2 Codes, z.B. "CN,RU,KP,IR" GEOIP_CHECK_INTERVAL=0 # 0 = nutzt CHECK_INTERVAL GEOIP_NOTIFY=true GEOIP_SKIP_PRIVATE=true # Private IPs ausnehmen GEOIP_LICENSE_KEY="" # MaxMind GeoLite2 Key (optional, für Auto-Download) GEOIP_MMDB_PATH="" # Manueller DB-Pfad (optional, hat Vorrang) # --- Erweiterte Einstellungen --- STATE_DIR="/var/lib/adguard-shield" PID_FILE="/var/run/adguard-shield.pid" API_QUERY_LIMIT=500 # API-Einträge pro Abfrage (max 5000) DRY_RUN=false # true = nur loggen, nicht sperren