103 lines
4.3 KiB
Plaintext
103 lines
4.3 KiB
Plaintext
###############################################################################
|
|
# 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
|
|
|
|
# --- 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
|