; Beispiel-Konfiguration fuer geoblock.py ; ; countries: Komma-getrennte ISO-3166-1-alpha-2-Laendercodes (klein- oder ; grossgeschrieben, egal), die geblockt werden sollen. ; Liste der Codes: https://www.ipdeny.com/ipblocks/ ; ; chain: iptables-Chain(s), in die die DROP-Regel eingehaengt wird. Eine ; oder komma-getrennt mehrere. ; INPUT = Verbindungen ZU diesem Host (Standard-Anwendungsfall). ; FORWARD = durch diesen Host GEROUTETER Traffic -- noetig, wenn der ; zu schuetzende Dienst hinter einer Firewall/einem Router ; liegt (z.B. Portweiterleitung/DNAT auf einen internen ; Host). Beides zugleich: "chain = INPUT, FORWARD". ; ; interface: optional, z.B. eth0 -- nur Traffic auf diesem Interface pruefen. ; Leer lassen = alle Interfaces. ; ; log: true/false -- wenn true, wird vor dem DROP ein iptables LOG- ; Eintrag geschrieben (dmesg / /var/log/kern.log), praefixed ; mit log_prefix. Das ist NICHT dasselbe wie log_file (siehe unten)! ; ; ipset_name: Name des ipset-Sets, das alle IP-Bereiche der Laender enthaelt. ; ; log_file: optional Pfad zu einer eigenen Log-Datei des Scripts selbst ; (zusaetzlich zu stderr/systemd-Journal). Bei jedem Lauf wird ; eine Zeile angehaengt, u.a. eine maschinenlesbare ; "RESULT status=OK/ERROR ..."-Zeile. Genau diese wertet das ; mitgelieferte checkmk-Plugin (geoblock_checkmk) aus. ; Leer lassen = keine Datei-Logs. ; Verzeichnis muss existieren und fuer root beschreibbar sein ; (das Installer-Script legt es automatisch an). ; ; ports: optional, Komma-getrennte Liste von Ports/Portbereichen, die ; geblockt werden sollen, z.B. "80,443" oder "8000:9000" (Bereich) ; oder gemischt "22,80,443,8000:8010". ; LEER LASSEN (Standard) = alle Ports/Protokolle werden fuer die ; gelisteten Laender geblockt (klassisches Geoblocking). ; GESETZT = nur diese Ports werden geblockt, der Rest bleibt fuer ; alle Laender offen. Praktisch, um NICHT gleich den ganzen Host ; (inkl. z.B. SSH-Port 22) fuer ein Land zu sperren, sondern nur ; eine einzelne Anwendung/einen Testport (z.B. den mitgelieferten ; Testserver auf 8899) -- schuetzt beim Testen davor, sich selbst ; auszusperren. ; ; protocol: nur relevant wenn "ports" gesetzt ist. tcp (Standard), udp, ; oder "tcp,udp" fuer beides. Fuer die meisten Web-/App-Ports ; reicht "tcp". ; ; match_original_dport: ; optional, true/false (Default false). Nur relevant wenn "ports" ; gesetzt ist. Fuer Dienste hinter einer Portweiterleitung/DNAT ; (z.B. Endian: public 1194/udp -> intern 6666): iptables sieht im ; Filter sonst den UMGESCHRIEBENEN Port, nicht den, den der Client ; gewaehlt hat -- die Regel greift dann nicht. Mit true wird per ; conntrack der ORIGINAL-Zielport (vor DNAT) gematcht. Dann in "ports" ; die OEFFENTLICHEN Ports eintragen (z.B. 1194, 443), nicht die ; internen -- immun gegen den Remap. Meist zusammen mit chain=FORWARD. ; ; proxy: optional, HTTP(S)-Proxy-URL, ueber den das Script ipdeny.com ; erreicht -- fuer Hosts, die zwar aus dem Internet erreichbar ; sind (z.B. hinter Reverse-Proxy/Firewall), selbst aber KEINE ; direkte ausgehende Internetverbindung haben. ; Format: http://host:port oder mit Auth http://user:pass@host:port ; Wird fuer http UND https genutzt (ipdeny liefert per https aus). ; Leer lassen (Standard) = direkte Verbindung, kein Proxy. ; Beispiel: proxy = http://10.0.0.5:3128 [geoblock] countries = RU, CN, KP, IR chain = INPUT interface = log = true log_prefix = GEOBLOCK-DROP: ipset_name = geoblock log_file = /var/log/geoblock/geoblock.log ; Beispiel: leer = klassisches Geoblocking (alle Ports). Zum sicheren Testen ; z.B. "8899" setzen (nur der Testserver wird geblockt, SSH bleibt offen). ports = protocol = tcp ; Leer lassen, ausser der Host hat keine direkte Internetverbindung. proxy = ; --- Test-Webserver (geoblock_testserver.py) -------------------------- ; Kleiner HTTP-Server ohne Abhaengigkeiten, um Geoblocking-Regeln von aussen ; zu testen (z.B. vom Handy im Mobilfunknetz oder per VPN aus einem anderen ; Land). Siehe README.md Abschnitt "Verbindungstest". ; ; port: TCP-Port, auf dem der Testserver lauscht. ; bind: Bind-Adresse, 0.0.0.0 = alle IPv4-Interfaces (:: fuer IPv6). ; log_file: Pfad zur Request-Log-Datei (Zeit, Client-IP, Pfad, User-Agent ; pro Zeile). Leer lassen = keine Datei-Logs (nur stderr/Journal). [testserver] port = 8899 bind = 0.0.0.0 log_file = /var/log/geoblock/testserver.log