Files
adguard-shield/adguard-shield.conf

151 lines
5.1 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
###############################################################################
# AdGuard Shield - Konfigurationsdatei
# Schutz vor übermäßigen DNS-Anfragen einzelner Clients
###############################################################################
# --- AdGuard Home API Einstellungen ---
# URL der AdGuard Home Web-Oberfläche (ohne trailing slash)
ADGUARD_URL="https://dns1.domain.com"
# AdGuard Home Zugangsdaten (Web-UI Login)
ADGUARD_USER="admin"
ADGUARD_PASS='changeme'
# --- Rate-Limit Einstellungen ---
# Maximale Anfragen pro Domain pro Client innerhalb des Zeitfensters
RATE_LIMIT_MAX_REQUESTS=30
# Zeitfenster in Sekunden (60 = 1 Minute)
RATE_LIMIT_WINDOW=60
# Wie oft das Script die Logs prüft (in Sekunden)
CHECK_INTERVAL=10
# --- Subdomain-Flood-Erkennung (Random Subdomain Attack) ---
# Erkennt Bots/Clients die massenhaft zufällige Subdomains einer Domain abfragen
# Beispiel: abc123.microsoft.com, xyz456.microsoft.com, ...
# Dabei wird pro Client gezählt, wie viele EINDEUTIGE Subdomains einer
# Basisdomain (z.B. microsoft.com) im Zeitfenster aufgerufen werden.
# Subdomain-Flood-Erkennung aktivieren
SUBDOMAIN_FLOOD_ENABLED=true
# Maximale Anzahl eindeutiger Subdomains pro Basisdomain pro Client im Zeitfenster
# Beispiel: 50 = ein Client darf max. 50 verschiedene Subdomains von microsoft.com abfragen
SUBDOMAIN_FLOOD_MAX_UNIQUE=50
# Zeitfenster in Sekunden für die Subdomain-Flood-Erkennung (60 = 1 Minute)
SUBDOMAIN_FLOOD_WINDOW=60
# --- Sperr-Einstellungen ---
# Wie lange ein Client gesperrt wird (in Sekunden, 3600 = 1 Stunde)
BAN_DURATION=3600
# iptables Chain-Name für die Sperren
IPTABLES_CHAIN="ADGUARD_SHIELD"
# Welche Ports gesperrt werden sollen (IPv4 + IPv6)
# Port 53 = DNS (UDP + TCP)
# Port 443 = DNS-over-HTTPS (DoH)
# Port 853 = DNS-over-TLS (tls://...:853) / DNS-over-QUIC (quic://...:853)
# Hinweis: Das verwendete Protokoll (DNS/DoH/DoT/DoQ) wird automatisch
# aus der AdGuard Home API erkannt und in Logs/History angezeigt.
BLOCKED_PORTS="53 443 853"
# --- Whitelist ---
# IP-Adressen die NIEMALS gesperrt werden (kommagetrennt)
# Lokale Netze und wichtige Server hier eintragen
WHITELIST="127.0.0.1,::1"
# --- Logging ---
# Log-Datei Pfad
LOG_FILE="/var/log/adguard-shield.log"
# Log-Level: DEBUG, INFO, WARN, ERROR
LOG_LEVEL="INFO"
# Maximale Größe der Log-Datei in MB (danach wird rotiert)
LOG_MAX_SIZE_MB=50
# Ban-History Datei (protokolliert alle Sperren & Entsperrungen dauerhaft)
BAN_HISTORY_FILE="/var/log/adguard-shield-bans.log"
# --- Benachrichtigungen (optional) ---
# Aktiviert Benachrichtigungen bei Sperren/Entsperrungen
NOTIFY_ENABLED=false
# Benachrichtigungs-Typ: "ntfy", "discord", "slack", "gotify", "generic"
NOTIFY_TYPE="ntfy"
# Webhook-URL (nur für discord, slack, gotify, generic bei ntfy nicht nötig)
# Discord: https://discord.com/api/webhooks/xxx/yyy
# Gotify: https://gotify.example.com/message?token=xxx
NOTIFY_WEBHOOK_URL=""
# --- Ntfy Einstellungen (nur bei NOTIFY_TYPE="ntfy") ---
# Server-URL der Ntfy-Instanz (ohne trailing slash)
NTFY_SERVER_URL="https://ntfy.sh"
# Topic-Name für die Benachrichtigungen
NTFY_TOPIC=""
# Optionaler Access-Token (leer lassen wenn nicht benötigt)
NTFY_TOKEN=""
# Priorität der Ntfy-Nachrichten (1=min, 3=default, 5=max)
NTFY_PRIORITY="4"
# --- Externe Blocklist (optional) ---
# Aktiviert den externen Blocklist-Worker
EXTERNAL_BLOCKLIST_ENABLED=false
# URL(s) zu externen Textdateien mit IP-Adressen (eine IP pro Zeile)
# Mehrere URLs kommagetrennt angeben
# Beispiel: "https://example.com/blocklist.txt,https://other.com/bad-ips.txt"
EXTERNAL_BLOCKLIST_URLS=""
# Wie oft die externe Blocklist geprüft wird (in Sekunden, 300 = 5 Minuten)
EXTERNAL_BLOCKLIST_INTERVAL=300
# Sperrdauer für externe Blocklist-IPs in Sekunden (0 = permanent bis IP aus Liste entfernt)
EXTERNAL_BLOCKLIST_BAN_DURATION=0
# Automatisch IPs entsperren die aus der externen Liste entfernt wurden?
EXTERNAL_BLOCKLIST_AUTO_UNBAN=true
# Lokaler Cache-Pfad für die heruntergeladene Blocklist
EXTERNAL_BLOCKLIST_CACHE_DIR="/var/lib/adguard-shield/external-blocklist"
# --- Progressive Sperren (Recidive) ---
# Wiederholungstäter werden stufenweise länger gesperrt (wie bei fail2ban)
# Aktiviert das progressive Sperrsystem
PROGRESSIVE_BAN_ENABLED=true
# Multiplikator pro Wiederholung (2 = Verdopplung der Sperrdauer)
# Stufe 1: BAN_DURATION × 1 (Standard-Sperrdauer)
# Stufe 2: BAN_DURATION × 2
# Stufe 3: BAN_DURATION × 4
# Stufe 4: BAN_DURATION × 8 ... usw.
PROGRESSIVE_BAN_MULTIPLIER=2
# Ab dieser Stufe wird die IP permanent gesperrt (0 = nie permanent sperren)
# Beispiel: 5 = nach dem 5. Vergehen wird die IP dauerhaft gesperrt
PROGRESSIVE_BAN_MAX_LEVEL=5
# Nach wie vielen Sekunden ohne erneutes Vergehen wird der Zähler zurückgesetzt
# (86400 = 24 Stunden, 604800 = 7 Tage)
PROGRESSIVE_BAN_RESET_AFTER=86400
# --- Erweiterte Einstellungen ---
# Pfad zur State-Datei (speichert aktive Sperren)
STATE_DIR="/var/lib/adguard-shield"
# Pfad zum PID-File
PID_FILE="/var/run/adguard-shield.pid"
# Anzahl der API-Einträge die pro Abfrage geholt werden (max 5000)
API_QUERY_LIMIT=500
# Dry-Run Modus: true = nur loggen, nicht sperren (zum Testen)
DRY_RUN=false