From 8d5908ac78049c21ff755fde145bcfebd3344192 Mon Sep 17 00:00:00 2001 From: ARIA Date: Tue, 21 Jul 2026 11:47:02 +0000 Subject: [PATCH] Namen 'ARIA' aus Dateinamen und Texten entfernen (nur noch 'geoblock') --- LAENDERCODES.md | 4 +- README.md | 100 ++++++------- ...ver.service => geoblock-testserver.service | 8 +- aria_geoblock.py => geoblock.py | 22 +-- aria-geoblock.service => geoblock.service | 6 +- aria-geoblock.timer => geoblock.timer | 6 +- aria_geoblock_checkmk => geoblock_checkmk | 26 ++-- ...ck_testserver.py => geoblock_testserver.py | 34 ++--- install_aria_geoblock.sh | 137 ------------------ install_geoblock.sh | 137 ++++++++++++++++++ ..._aria_geoblock.sh => uninstall_geoblock.sh | 48 +++--- 11 files changed, 264 insertions(+), 264 deletions(-) rename aria-geoblock-testserver.service => geoblock-testserver.service (63%) rename aria_geoblock.py => geoblock.py (96%) rename aria-geoblock.service => geoblock.service (51%) rename aria-geoblock.timer => geoblock.timer (65%) rename aria_geoblock_checkmk => geoblock_checkmk (82%) rename aria_geoblock_testserver.py => geoblock_testserver.py (87%) delete mode 100755 install_aria_geoblock.sh create mode 100755 install_geoblock.sh rename uninstall_aria_geoblock.sh => uninstall_geoblock.sh (63%) diff --git a/LAENDERCODES.md b/LAENDERCODES.md index 5926489..ba7f324 100644 --- a/LAENDERCODES.md +++ b/LAENDERCODES.md @@ -1,6 +1,6 @@ # Länderkürzel (ISO 3166-1 alpha-2) -Referenzliste für die `countries`-Option in `aria_geoblock.ini`. Dort werden +Referenzliste für die `countries`-Option in `geoblock.ini`. Dort werden kommagetrennte, kleingeschriebene Zwei-Buchstaben-Codes eingetragen, z. B.: ```ini @@ -9,7 +9,7 @@ countries = de,at,ch ``` Die Codes stammen aus den MaxMind-GeoLite2-Country-Datenbanken (Standard -ISO-3166-1-alpha-2), die `aria_geoblock.py` zur Auflösung von IP → Land nutzt. +ISO-3166-1-alpha-2), die `geoblock.py` zur Auflösung von IP → Land nutzt. ## Europa diff --git a/README.md b/README.md index 54f03a9..ef8cc6c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ARIA Geoblocking +# Geoblocking Blockt Verbindungen aus bestimmten Laendern auf Kernel-Ebene (iptables + ipset). Die IP-Bereiche je Land kommen kostenlos (kein API-Key) von @@ -13,15 +13,15 @@ und droppt Pakete bereits auf Netzwerk-Ebene. | Datei | Zweck | |---|---| -| `aria_geoblock.py` | Hauptscript: laedt Laender-IPs, setzt/entfernt ipset+iptables-Regeln | -| `aria_geoblock.ini` | Konfiguration (Laenderliste, Chain, Logging, ...) | -| `aria-geoblock.service` | systemd-Unit, fuehrt `--apply` aus | -| `aria-geoblock.timer` | systemd-Timer: beim Booten + einmal taeglich | -| `install_aria_geoblock.sh` | Installer: kopiert alles nach `/opt/aria-geoblock`, richtet Timer ein (Testserver optional, siehe unten) | -| `aria_geoblock_checkmk` | checkmk local-check Plugin (manuell kopieren) | -| `aria_geoblock_testserver.py` | Kleiner Test-Webserver, um die Regeln von aussen zu pruefen | -| `aria-geoblock-testserver.service` | systemd-Unit, startet den Test-Webserver dauerhaft | -| `uninstall_aria_geoblock.sh` | Deinstaller: raeumt Timer/Service/Testserver/Regeln wieder ab (siehe unten) | +| `geoblock.py` | Hauptscript: laedt Laender-IPs, setzt/entfernt ipset+iptables-Regeln | +| `geoblock.ini` | Konfiguration (Laenderliste, Chain, Logging, ...) | +| `geoblock.service` | systemd-Unit, fuehrt `--apply` aus | +| `geoblock.timer` | systemd-Timer: beim Booten + einmal taeglich | +| `install_geoblock.sh` | Installer: kopiert alles nach `/opt/geoblock`, richtet Timer ein (Testserver optional, siehe unten) | +| `geoblock_checkmk` | checkmk local-check Plugin (manuell kopieren) | +| `geoblock_testserver.py` | Kleiner Test-Webserver, um die Regeln von aussen zu pruefen | +| `geoblock-testserver.service` | systemd-Unit, startet den Test-Webserver dauerhaft | +| `uninstall_geoblock.sh` | Deinstaller: raeumt Timer/Service/Testserver/Regeln wieder ab (siehe unten) | ## Installation @@ -30,36 +30,36 @@ Auf dem zu schuetzenden Host (root, `iptables`+`ipset`+`python3` installiert): ```bash git clone https://git.hacker-net.de/Aria-Software/geoblocking-python-script.git cd geoblocking-python-script -sudo ./install_aria_geoblock.sh +sudo ./install_geoblock.sh ``` Das: -- installiert `aria_geoblock.py` + `aria_geoblock.ini` nach `/opt/aria-geoblock/` +- installiert `geoblock.py` + `geoblock.ini` nach `/opt/geoblock/` (bestehende `.ini` wird NICHT ueberschrieben, neue landet als `.example`) -- legt `/var/log/aria_geoblock/` an -- installiert + aktiviert `aria-geoblock.timer` (`systemctl enable --now`) +- legt `/var/log/geoblock/` an +- installiert + aktiviert `geoblock.timer` (`systemctl enable --now`) **Der Test-Webserver wird standardmaessig NICHT installiert.** Wer ihn braucht (siehe Abschnitt "Verbindungstest" unten), haengt die Option `--with-testserver` an: ```bash -sudo ./install_aria_geoblock.sh --with-testserver +sudo ./install_geoblock.sh --with-testserver # optional mit eigenem Zielverzeichnis: -sudo ./install_aria_geoblock.sh --with-testserver /opt/aria-geoblock +sudo ./install_geoblock.sh --with-testserver /opt/geoblock ``` -Nur dann wird `aria_geoblock_testserver.py` kopiert und -`aria-geoblock-testserver.service` installiert + gestartet (offener Port +Nur dann wird `geoblock_testserver.py` kopiert und +`geoblock-testserver.service` installiert + gestartet (offener Port 8899 standardmaessig). Ohne die Option bleibt der Port zu — nachtraeglich installieren geht jederzeit per erneutem Aufruf mit `--with-testserver`. -Danach `/opt/aria-geoblock/aria_geoblock.ini` anpassen (Laenderliste!) und +Danach `/opt/geoblock/geoblock.ini` anpassen (Laenderliste!) und einmal manuell testen: ```bash -sudo systemctl start aria-geoblock.service -journalctl -u aria-geoblock.service -f +sudo systemctl start geoblock.service +journalctl -u geoblock.service -f ``` Der Timer laeuft danach automatisch: **~2 Minuten nach jedem Systemstart** @@ -69,28 +69,28 @@ werden dank `Persistent=true` beim naechsten Boot nachgeholt. ## Deinstallation -`uninstall_aria_geoblock.sh` macht die Installation wieder rueckgaengig. +`uninstall_geoblock.sh` macht die Installation wieder rueckgaengig. Zwei Modi: ```bash # Alles runter: Timer/Service, Testserver (falls installiert), # iptables/ipset-Regeln, Installationsverzeichnis -sudo ./uninstall_aria_geoblock.sh +sudo ./uninstall_geoblock.sh # Nur den Test-Webserver entfernen, Geoblocking selbst bleibt aktiv -sudo ./uninstall_aria_geoblock.sh --testserver-only +sudo ./uninstall_geoblock.sh --testserver-only ``` Weitere Optionen: ```bash -sudo ./uninstall_aria_geoblock.sh --purge-logs # zusaetzlich /var/log/aria_geoblock loeschen -sudo ./uninstall_aria_geoblock.sh /opt/aria-geoblock # abweichendes Zielverzeichnis (Default: /opt/aria-geoblock) +sudo ./uninstall_geoblock.sh --purge-logs # zusaetzlich /var/log/geoblock loeschen +sudo ./uninstall_geoblock.sh /opt/geoblock # abweichendes Zielverzeichnis (Default: /opt/geoblock) ``` Ohne `--purge-logs` bleiben die bisherigen Logs unter -`/var/log/aria_geoblock` erhalten. Bei der Komplett-Deinstallation wird -VOR dem Loeschen automatisch `aria_geoblock.py --remove` ausgefuehrt, damit +`/var/log/geoblock` erhalten. Bei der Komplett-Deinstallation wird +VOR dem Loeschen automatisch `geoblock.py --remove` ausgefuehrt, damit die iptables-Regel und das `ipset` sauber aus dem Kernel entfernt werden (kein verwaistes DROP, keine offene Verbindung bleibt blockiert). Fehlen Script/Config bereits, wird gewarnt und man sollte manuell pruefen: @@ -103,10 +103,10 @@ ipset list -n | grep -i geoblock ## Manuelle Nutzung (ohne systemd) ```bash -sudo python3 aria_geoblock.py --config aria_geoblock.ini --apply # aktivieren/aktualisieren -sudo python3 aria_geoblock.py --config aria_geoblock.ini --apply --dry-run # nur simulieren -sudo python3 aria_geoblock.py --config aria_geoblock.ini --status # Zustand pruefen -sudo python3 aria_geoblock.py --config aria_geoblock.ini --remove # rueckgaengig +sudo python3 geoblock.py --config geoblock.ini --apply # aktivieren/aktualisieren +sudo python3 geoblock.py --config geoblock.ini --apply --dry-run # nur simulieren +sudo python3 geoblock.py --config geoblock.ini --status # Zustand pruefen +sudo python3 geoblock.py --config geoblock.ini --remove # rueckgaengig ``` `--apply` ist idempotent (kein doppeltes Anlegen von Regeln) und tauscht @@ -120,18 +120,18 @@ frischen `--apply`-Lauf, das reicht in der Praxis meist aus. ## Verbindungstest (Test-Webserver) -`aria_geoblock_testserver.py` ist ein winziger HTTP-Server ohne +`geoblock_testserver.py` ist ein winziger HTTP-Server ohne Abhaengigkeiten (nur Python-Stdlib). Er beantwortet jeden Request mit einer kleinen Info-Seite (Client-IP, Zeitstempel, User-Agent) und loggt jeden Request. Er weiss selbst NICHTS von Laendern/Blocklisten — der eigentliche Test ist der Netzwerkeffekt: **geblockte** IPs erreichen ihn gar nicht erst (iptables droppt vor dem TCP-Handshake), **erlaubte** IPs bekommen die Seite. -Wird nur installiert, wenn `install_aria_geoblock.sh` mit der Option +Wird nur installiert, wenn `install_geoblock.sh` mit der Option `--with-testserver` aufgerufen wurde (Default: nicht installiert, siehe Abschnitt "Installation" oben). Ist er installiert, laeuft er als -`aria-geoblock-testserver.service` auf Port `8899` (einstellbar unter -`[testserver]` in `aria_geoblock.ini`, siehe unten). +`geoblock-testserver.service` auf Port `8899` (einstellbar unter +`[testserver]` in `geoblock.ini`, siehe unten). **Testablauf:** @@ -139,9 +139,9 @@ Abschnitt "Installation" oben). Ist er installiert, laeuft er als # 1) Von einem ERLAUBTEN Netz/Land aus aufrufen -> sollte laden curl http://:8899/ -# 2) Testweise den eigenen Laendercode (z.B. DE) in aria_geoblock.ini +# 2) Testweise den eigenen Laendercode (z.B. DE) in geoblock.ini # eintragen und aktivieren: -sudo python3 aria_geoblock.py --config aria_geoblock.ini --apply +sudo python3 geoblock.py --config geoblock.ini --apply # 3) Jetzt von einem Client MIT einer IP aus diesem Land connecten # (z.B. Handy im Mobilfunknetz) -> sollte jetzt TIMEOUT geben @@ -153,10 +153,10 @@ curl --max-time 5 http://:8899/ Manuell ohne systemd starten: ```bash -python3 aria_geoblock_testserver.py --config aria_geoblock.ini +python3 geoblock_testserver.py --config geoblock.ini # oder komplett ohne .ini: -python3 aria_geoblock_testserver.py --port 8899 --bind 0.0.0.0 \ - --log-file /var/log/aria_geoblock/testserver.log +python3 geoblock_testserver.py --port 8899 --bind 0.0.0.0 \ + --log-file /var/log/geoblock/testserver.log ``` Requests landen (Zeit, Client-IP, Methode/Pfad, User-Agent) in der unter @@ -202,33 +202,33 @@ Variante stehen. ## Logging -In `aria_geoblock.ini` unter `log_file` einen Pfad eintragen (Default: -`/var/log/aria_geoblock/aria_geoblock.log`, wird vom Installer angelegt). +In `geoblock.ini` unter `log_file` einen Pfad eintragen (Default: +`/var/log/geoblock/geoblock.log`, wird vom Installer angelegt). Bei jedem Lauf wird eine Zeile angehaengt, u.a. eine maschinenlesbare `RESULT status=OK/ERROR ...`-Zeile — genau die wertet das checkmk-Plugin aus. Leer lassen = keine Datei-Logs (nur stderr/systemd-Journal). ## checkmk-Monitoring -`aria_geoblock_checkmk` ist ein klassisches checkmk **local check**-Plugin +`geoblock_checkmk` ist ein klassisches checkmk **local check**-Plugin (kein extra Agent-Plugin-Verzeichnis noetig). Manuell einrichten: 1. Im Script-Kopf `LOG_FILE` auf den Pfad aus der `.ini` (`log_file`) anpassen. 2. Ausfuehrbar machen und kopieren: ```bash - chmod 755 aria_geoblock_checkmk - cp aria_geoblock_checkmk /usr/lib/check_mk_agent/local/ + chmod 755 geoblock_checkmk + cp geoblock_checkmk /usr/lib/check_mk_agent/local/ ``` (Pfad haengt vom Setup ab — bei OMD-Sites z.B. `~/local/lib/check_mk_agent/local/`.) -3. Naechster Agent-Abruf zeigt den Service **ARIA_Geoblock**. +3. Naechster Agent-Abruf zeigt den Service **Geoblock**. Status-Logik: `ERROR` im letzten Lauf → CRIT. Letzter erfolgreicher Lauf > 36h alt → WARN, > 72h alt → CRIT (Timer laeuft taeglich, das faengt einen einzelnen verpassten Lauf ab, ohne sofort zu alarmieren). Sonst OK, inkl. Perfdata (Alter in Sekunden, Anzahl geblockter IP-Bereiche). -## Konfiguration (`aria_geoblock.ini`) +## Konfiguration (`geoblock.ini`) Siehe Kommentare in der Datei selbst — kurz: @@ -246,7 +246,7 @@ Siehe Kommentare in der Datei selbst — kurz: - `protocol`: nur relevant wenn `ports` gesetzt ist — `tcp` (Default), `udp` oder `tcp,udp` -Abschnitt `[testserver]` (fuer `aria_geoblock_testserver.py`): +Abschnitt `[testserver]` (fuer `geoblock_testserver.py`): - `port`: TCP-Port des Test-Webservers (Default `8899`) - `bind`: Bind-Adresse (`0.0.0.0` = alle IPv4-Interfaces) @@ -282,7 +282,7 @@ zum jeweiligen Host aufbaut — unabhaengig davon, was in HTTP-Headern steht. **Praktische Konsequenz fuer den Verbindungstest:** -Um den Testserver (`aria_geoblock_testserver.py`, siehe oben) sinnvoll von +Um den Testserver (`geoblock_testserver.py`, siehe oben) sinnvoll von aussen zu testen, muss er entweder: 1. selbst direkt mit einer oeffentlichen IP/Port erreichbar sein (kein Proxy diff --git a/aria-geoblock-testserver.service b/geoblock-testserver.service similarity index 63% rename from aria-geoblock-testserver.service rename to geoblock-testserver.service index a6e5937..10e8746 100644 --- a/aria-geoblock-testserver.service +++ b/geoblock-testserver.service @@ -1,17 +1,17 @@ [Unit] -Description=ARIA Geoblocking - Test-Webserver fuer Verbindungstests von aussen +Description=Geoblocking - Test-Webserver fuer Verbindungstests von aussen Documentation=https://git.hacker-net.de/Aria-Software/geoblocking-python-script After=network-online.target Wants=network-online.target -ConditionPathExists=__INSTALL_DIR__/aria_geoblock.ini +ConditionPathExists=__INSTALL_DIR__/geoblock.ini [Service] Type=simple User=root -ExecStart=/usr/bin/python3 __INSTALL_DIR__/aria_geoblock_testserver.py --config __INSTALL_DIR__/aria_geoblock.ini +ExecStart=/usr/bin/python3 __INSTALL_DIR__/geoblock_testserver.py --config __INSTALL_DIR__/geoblock.ini Restart=on-failure RestartSec=5 -# Laeuft dauerhaft (kein oneshot wie aria-geoblock.service) - beantwortet +# Laeuft dauerhaft (kein oneshot wie geoblock.service) - beantwortet # Requests solange der Host laeuft. Port/Bind/Log kommen aus [testserver] # in der .ini. User=root nur wegen evtl. niedriger Portnummer/Log-Verzeichnis- # Rechten - wer will kann hier einen unprivilegierten User eintragen, sofern diff --git a/aria_geoblock.py b/geoblock.py similarity index 96% rename from aria_geoblock.py rename to geoblock.py index 13b8638..515509f 100755 --- a/aria_geoblock.py +++ b/geoblock.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 """ -aria_geoblock.py — Geoblocking via ipset + iptables +geoblock.py — Geoblocking via ipset + iptables Liest eine .ini-Datei mit einer Laenderliste, laedt die zugehoerigen IP-Bereiche (CIDR) kostenlos von ipdeny.com (kein API-Key noetig) und @@ -15,26 +15,26 @@ WARUM ipset+iptables statt "Verbindung live pruefen": schon auf Netzwerk-Ebene, bevor sie den Server ueberhaupt erreichen. - Das ist der Standard-Ansatz den auch fail2ban/CSF-Firewalls nutzen. -VORAUSSETZUNGEN (auf dem Ziel-Host, NICHT im ARIA-Container): +VORAUSSETZUNGEN (auf dem Ziel-Host, NICHT im Container): - root-Rechte (iptables/ipset aendern den Kernel-Netfilter) - Pakete installiert: iptables, ipset Debian/Ubuntu: apt install iptables ipset - Internetzugang zum Laden der Zonefiles von ipdeny.com BENUTZUNG: - sudo python3 aria_geoblock.py --config geoblock.ini --apply + sudo python3 geoblock.py --config geoblock.ini --apply -> laedt IP-Ranges, befuellt das ipset, setzt die iptables-Regel - sudo python3 aria_geoblock.py --config geoblock.ini --apply --dry-run + sudo python3 geoblock.py --config geoblock.ini --apply --dry-run -> zeigt nur an was gemacht wuerde, aendert nichts - sudo python3 aria_geoblock.py --config geoblock.ini --remove + sudo python3 geoblock.py --config geoblock.ini --remove -> entfernt die iptables-Regel und loescht das ipset wieder - sudo python3 aria_geoblock.py --config geoblock.ini --status + sudo python3 geoblock.py --config geoblock.ini --status -> zeigt aktuellen Stand (Set vorhanden? wie viele Eintraege? Regel aktiv?) -.ini-Format siehe mitgelieferte aria_geoblock.ini (Beispiel). +.ini-Format siehe mitgelieferte geoblock.ini (Beispiel). LOGGING: Jeder Lauf schreibt nach stderr (systemd-Journal). Zusaetzlich kann in @@ -44,8 +44,8 @@ LOGGING: diese Zeile wertet das mitgelieferte checkmk-Plugin aus. AUTOMATISCH AKTUELL HALTEN (Systemstart + taeglich): - Siehe systemd/aria-geoblock.service + aria-geoblock.timer sowie - install_aria_geoblock.sh im gleichen Repo — das richtet Timer fuer + Siehe systemd/geoblock.service + geoblock.timer sowie + install_geoblock.sh im gleichen Repo — das richtet Timer fuer "beim Booten" + "einmal taeglich" automatisch ein. --apply ist idempotent: es flusht das bestehende Set und befuellt es neu, legt aber KEINE doppelte iptables-Regel an (wird vorher geprueft). @@ -56,7 +56,7 @@ PORT-EINSCHRAENKUNG (optional): auf bestimmte Anwendungen/Ports eingrenzen — z.B. nur den Testserver (8899) blocken, waehrend SSH (22) fuer die Laender offen bleibt. Praktisch zum gefahrlosen Testen, damit man sich nicht selbst aussperrt. Siehe - Kommentare in aria_geoblock.ini. + Kommentare in geoblock.ini. """ import argparse @@ -99,7 +99,7 @@ def log(msg): def log_result(status, action, countries=None, entries=None, msg=""): """Schreibt eine strukturierte, maschinenlesbare Ergebniszeile. - Wird vom checkmk-Plugin (aria_geoblock_checkmk) ausgewertet, um den + Wird vom checkmk-Plugin (geoblock_checkmk) ausgewertet, um den Zustand des letzten Laufs zu beurteilen (OK/WARN/CRIT/UNKNOWN). """ parts = [f"RESULT ts={_timestamp()}", f"status={status}", f"action={action}"] diff --git a/aria-geoblock.service b/geoblock.service similarity index 51% rename from aria-geoblock.service rename to geoblock.service index 47042ac..c678811 100644 --- a/aria-geoblock.service +++ b/geoblock.service @@ -1,12 +1,12 @@ [Unit] -Description=ARIA Geoblocking - Laender-IP-Sperrliste aktualisieren (ipset+iptables) +Description=Geoblocking - Laender-IP-Sperrliste aktualisieren (ipset+iptables) Documentation=https://git.hacker-net.de/Aria-Software/geoblocking-python-script After=network-online.target Wants=network-online.target -ConditionPathExists=__INSTALL_DIR__/aria_geoblock.ini +ConditionPathExists=__INSTALL_DIR__/geoblock.ini [Service] Type=oneshot User=root -ExecStart=/usr/bin/python3 __INSTALL_DIR__/aria_geoblock.py --config __INSTALL_DIR__/aria_geoblock.ini --apply +ExecStart=/usr/bin/python3 __INSTALL_DIR__/geoblock.py --config __INSTALL_DIR__/geoblock.ini --apply # iptables/ipset aendern den Kernel-Netfilter, braucht root (siehe User=root oben) diff --git a/aria-geoblock.timer b/geoblock.timer similarity index 65% rename from aria-geoblock.timer rename to geoblock.timer index 9c79fd8..2ad8e5c 100644 --- a/aria-geoblock.timer +++ b/geoblock.timer @@ -1,8 +1,8 @@ [Unit] -Description=ARIA Geoblocking - beim Systemstart + einmal taeglich aktualisieren +Description=Geoblocking - beim Systemstart + einmal taeglich aktualisieren [Timer] -# Einmal kurz nach dem Booten (Netzwerk muss stehen -> aria-geoblock.service +# Einmal kurz nach dem Booten (Netzwerk muss stehen -> geoblock.service # wartet selbst per After=network-online.target) OnBootSec=2min # Und danach einmal taeglich @@ -11,7 +11,7 @@ OnCalendar=daily RandomizedDelaySec=15min # Verpasste Laeufe (Host war aus) beim naechsten Boot nachholen Persistent=true -Unit=aria-geoblock.service +Unit=geoblock.service [Install] WantedBy=timers.target diff --git a/aria_geoblock_checkmk b/geoblock_checkmk similarity index 82% rename from aria_geoblock_checkmk rename to geoblock_checkmk index 28b7888..46031c2 100755 --- a/aria_geoblock_checkmk +++ b/geoblock_checkmk @@ -1,23 +1,23 @@ #!/usr/bin/env python3 """ -checkmk local check: ARIA Geoblocking +checkmk local check: Geoblocking -Wertet die Log-Datei von aria_geoblock.py aus und meldet an checkmk, ob +Wertet die Log-Datei von geoblock.py aus und meldet an checkmk, ob der letzte Lauf (systemd-Timer: beim Boot + taeglich) erfolgreich und aktuell war. INSTALLATION: - 1. LOG_FILE unten auf den Pfad anpassen, der in der aria_geoblock.ini + 1. LOG_FILE unten auf den Pfad anpassen, der in der geoblock.ini unter [geoblock] log_file konfiguriert ist (Default passt zum - mitgelieferten install_aria_geoblock.sh). + mitgelieferten install_geoblock.sh). 2. Datei ausfuehrbar machen und ins checkmk-Agent local-Verzeichnis legen: - cp aria_geoblock_checkmk /usr/lib/check_mk_agent/local/ - chmod 755 /usr/lib/check_mk_agent/local/aria_geoblock_checkmk + cp geoblock_checkmk /usr/lib/check_mk_agent/local/ + chmod 755 /usr/lib/check_mk_agent/local/geoblock_checkmk (Pfad haengt von Distro/Checkmk-Setup ab - ueblich sind /usr/lib/check_mk_agent/local/ oder bei OMD-Sites ~/local/lib/check_mk_agent/local/. Bei Bedarf: 'check_mk_agent' Pfad des jeweiligen Hosts pruefen.) - 3. Naechster Agent-Abruf zeigt den Service "ARIA_Geoblock" in checkmk. + 3. Naechster Agent-Abruf zeigt den Service "Geoblock" in checkmk. AUSGABE-LOGIK: - Keine Log-Datei / keine RESULT-Zeile gefunden -> UNKNOWN (3) @@ -32,17 +32,17 @@ import os import re import time -# --- Anpassen: muss zum log_file-Pfad aus der aria_geoblock.ini passen --- -LOG_FILE = "/var/log/aria_geoblock/aria_geoblock.log" +# --- Anpassen: muss zum log_file-Pfad aus der geoblock.ini passen --- +LOG_FILE = "/var/log/geoblock/geoblock.log" # Timer laeuft taeglich -> grosszuegig bemessen, damit ein einzelner # verpasster Lauf (Host kurz aus) nicht sofort CRIT ausloest. WARN_AGE_SEC = 36 * 3600 # 36h CRIT_AGE_SEC = 72 * 3600 # 72h -SERVICE_NAME = "ARIA_Geoblock" +SERVICE_NAME = "Geoblock" -# Beispiel-Zeile in der Log-Datei (von aria_geoblock.py log_result() geschrieben): +# Beispiel-Zeile in der Log-Datei (von geoblock.py log_result() geschrieben): # 2026-07-21T10:00:00+02:00 [geoblock] RESULT ts=2026-07-21T10:00:00+02:00 # status=OK action=apply countries=4 entries=123456 msg="Geoblock aktualisiert (..)" RESULT_RE = re.compile( @@ -59,7 +59,7 @@ def emit(status, perfdata, text): def main(): if not os.path.isfile(LOG_FILE): - emit(3, "-", f"Log-Datei nicht gefunden ({LOG_FILE}) - lief aria_geoblock.py schon einmal mit --apply?") + emit(3, "-", f"Log-Datei nicht gefunden ({LOG_FILE}) - lief geoblock.py schon einmal mit --apply?") return last_match = None @@ -74,7 +74,7 @@ def main(): return if not last_match: - emit(3, "-", f"Keine RESULT-Zeile in {LOG_FILE} gefunden - lief aria_geoblock.py schon mit --apply?") + emit(3, "-", f"Keine RESULT-Zeile in {LOG_FILE} gefunden - lief geoblock.py schon mit --apply?") return ts_raw = last_match.group("ts") diff --git a/aria_geoblock_testserver.py b/geoblock_testserver.py similarity index 87% rename from aria_geoblock_testserver.py rename to geoblock_testserver.py index 5b77479..712072b 100755 --- a/aria_geoblock_testserver.py +++ b/geoblock_testserver.py @@ -1,12 +1,12 @@ #!/usr/bin/env python3 """ -aria_geoblock_testserver.py — kleiner Test-Webserver fuer aria-geoblock +geoblock_testserver.py — kleiner Test-Webserver fuer geoblock ZWECK: Ein minimaler HTTP-Server (nur Python-Stdlib, keine Abhaengigkeiten), gegen den man von AUSSEN (Handy im Mobilfunknetz, VPN mit anderem Land, Freund im Ausland, ...) connecten kann, um zu pruefen ob die Geoblocking- - Regeln (ipset/iptables aus aria_geoblock.py) wirklich greifen. + Regeln (ipset/iptables aus geoblock.py) wirklich greifen. Die Logik ist bewusst simpel: der Server selbst weiss NICHTS von Laendern oder Blocklisten. Er beantwortet einfach jeden Request, der ihn erreicht, @@ -20,24 +20,24 @@ ZWECK: Land/Netz laedt die Seite ganz normal. Testablauf (siehe auch README.md): - 1. Testserver starten (systemd-Service aria-geoblock-testserver, oder + 1. Testserver starten (systemd-Service geoblock-testserver, oder manuell: siehe unten). 2. Von einem Client aus einem ERLAUBTEN Land/Netz aufrufen: curl http://:/ -> sollte die Test-Seite liefern. - 3. Ziel-Land testweise in aria_geoblock.ini eintragen (z.B. den eigenen - Ländercode DE), aria_geoblock.py --apply ausfuehren, dann von einem + 3. Ziel-Land testweise in geoblock.ini eintragen (z.B. den eigenen + Ländercode DE), geoblock.py --apply ausfuehren, dann von einem Client MIT dieser Landes-IP erneut connecten -> sollte jetzt in ein Timeout laufen (kein TCP-Connect möglich). 4. Land wieder aus der .ini entfernen, --apply, Zugriff geht wieder. BENUTZUNG: - python3 aria_geoblock_testserver.py --config aria_geoblock.ini + python3 geoblock_testserver.py --config geoblock.ini -> Port/Bind-Adresse/Log-Pfad kommen aus dem Abschnitt [testserver] - der .ini (siehe aria_geoblock.ini im gleichen Repo) + der .ini (siehe geoblock.ini im gleichen Repo) - python3 aria_geoblock_testserver.py --port 8899 --bind 0.0.0.0 \ - --log-file /var/log/aria_geoblock/testserver.log + python3 geoblock_testserver.py --port 8899 --bind 0.0.0.0 \ + --log-file /var/log/geoblock/testserver.log -> alternativ komplett ohne .ini, per CLI-Argumenten CLI-Argumente ueberschreiben, falls angegeben, die Werte aus der .ini. @@ -49,8 +49,8 @@ LOGGING: geloggt. AUTOSTART: - Siehe aria-geoblock-testserver.service im gleichen Repo sowie - install_aria_geoblock.sh, das den Service optional mit einrichtet. + Siehe geoblock-testserver.service im gleichen Repo sowie + install_geoblock.sh, das den Service optional mit einrichtet. """ import argparse @@ -91,9 +91,9 @@ def log(msg): def load_config(path): - """Liest [testserver] aus der aria_geoblock.ini. Fehlt der Abschnitt + """Liest [testserver] aus der geoblock.ini. Fehlt der Abschnitt komplett, werden die Defaults benutzt (die .ini ist fuer den Testserver - also optional, im Gegensatz zu aria_geoblock.py).""" + also optional, im Gegensatz zu geoblock.py).""" cfg = configparser.ConfigParser() read_ok = cfg.read(path) if not read_ok: @@ -131,7 +131,7 @@ PAGE_TMPL = """ -ARIA Geoblock — Verbindungstest +Geoblock — Verbindungstest