Namen 'ARIA' aus Dateinamen und Texten entfernen (nur noch 'geoblock')
This commit is contained in:
@@ -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://<host>: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://<host>: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
|
||||
|
||||
Reference in New Issue
Block a user