Port-/Protokoll-Einschraenkung fuers Geoblocking hinzufuegen (Selbstaussperr-Schutz beim Testen)

This commit is contained in:
ARIA
2026-07-21 13:31:47 +02:00
parent a608af9a27
commit 7d8aeabbd2
2 changed files with 167 additions and 36 deletions
+40
View File
@@ -118,6 +118,39 @@ Port lokal — ob er von aussen erreichbar ist, haengt von eurer sonstigen
Firewall/Portweiterleitung ab (das ist bewusst getrennt von den
Geoblock-DROP-Regeln, die ja genau diesen Port betreffen sollen).
## Gezieltes Blocken einzelner Ports (Selbstaussperr-Schutz)
Per Default blockt `--apply` **alle** Ports/Protokolle fuer die gelisteten
Laender — das ist klassisches Geoblocking auf Host-Ebene. Das ist beim
Testen riskant: testet man testweise den eigenen Laendercode (siehe oben),
sperrt man sich damit auch von SSH & Co. aus, falls der Test-Client zufaellig
aus demselben Land connectet.
Ueber `ports` (und optional `protocol`) in der `.ini` laesst sich das
Blocking auf einzelne Anwendungen eingrenzen. Beispiel: nur den
Testserver-Port blocken, SSH bleibt fuer alle Laender offen:
```ini
[geoblock]
countries = de
...
ports = 8899
protocol = tcp
```
`--apply` legt dann statt einer allgemeinen DROP-Regel eine mit
`-p tcp -m multiport --dports 8899` an — matched nur Pakete zu Port 8899,
alles andere (inkl. Port 22) bleibt unberuehrt. Mehrere Ports/Bereiche
gehen kommaseparat (`80,443,8000:9000`), mehrere Protokolle ebenso
(`protocol = tcp,udp`, legt dann eine Regel pro Protokoll an).
`--status` zeigt an, ob gerade eine Port-Einschraenkung aktiv ist und
welche. `--remove` entfernt automatisch die zur aktuellen `.ini` passenden
Regel-Varianten — falls `ports`/`protocol` zwischen zwei Laeufen geaendert
wurden, lohnt sich vor dem naechsten `--apply` ein Blick mit
`iptables -L INPUT -n --line-numbers`, ob noch Altregeln mit der vorherigen
Variante stehen.
## Logging
In `aria_geoblock.ini` unter `log_file` einen Pfad eintragen (Default:
@@ -156,6 +189,13 @@ Siehe Kommentare in der Datei selbst — kurz:
- `log`: iptables-LOG-Eintrag vor dem DROP (dmesg/kern.log) an/aus
- `ipset_name`: Name des ipset-Sets
- `log_file`: Pfad zur script-eigenen Log-Datei (fuer checkmk)
- `ports`: optional, Komma-Liste von Ports/Bereichen (z.B. `80,443,8000:9000`).
Leer = alle Ports/Protokolle werden geblockt (klassisches Geoblocking).
Gesetzt = nur diese Ports werden fuer die gelisteten Laender geblockt, der
Rest des Hosts bleibt erreichbar. Siehe Abschnitt "Gezieltes Blocken
einzelner Ports" unten.
- `protocol`: nur relevant wenn `ports` gesetzt ist — `tcp` (Default), `udp`
oder `tcp,udp`
Abschnitt `[testserver]` (fuer `aria_geoblock_testserver.py`):