README.md aktualisiert

This commit is contained in:
2025-12-04 17:08:42 +01:00
parent 5f498edbae
commit 18d9b22ea6

View File

@@ -1,12 +1,13 @@
# GeoIP Shop Blocker Manager
# GeoIP Shop Blocker Manager - DACH Version
**Hybrid-System für temporäres GeoIP-Blocking auf Plesk-Servern mit mehreren Shops**
Dieses Tool ermöglicht es, einzelne Shops auf einem Plesk-Server temporär für alle Zugriffe außerhalb Deutschlands zu sperren. Es kombiniert PHP-Level-Blocking mit CrowdSec Firewall-Integration für maximalen Schutz.
Dieses Tool ermöglicht es, einzelne Shops auf einem Plesk-Server temporär für alle Zugriffe außerhalb der DACH-Region (Deutschland, Österreich, Schweiz) zu sperren. Es kombiniert PHP-Level-Blocking mit CrowdSec Firewall-Integration für maximalen Schutz.
## 🎯 Features
-**Präzises Blocking**: PHP prüft gegen vollständige deutsche IP-Ranges (keine Fehlblockierungen)
-**DACH-Region erlaubt**: Deutschland (DE), Österreich (AT), Schweiz (CH)
-**Präzises Blocking**: PHP prüft gegen vollständige DACH IP-Ranges (keine Fehlblockierungen)
-**Doppelter Schutz**: PHP-Level + Firewall-Level (CrowdSec)
-**Automatische Synchronisation**: Blockierte IPs werden automatisch an CrowdSec weitergegeben
-**Multi-Shop-Management**: Verwaltung mehrerer Shops auf einem Server
@@ -19,9 +20,9 @@ Dieses Tool ermöglicht es, einzelne Shops auf einem Plesk-Server temporär für
### Komponente 1: PHP-Script
- Wird in die `index.php` des Shops integriert
- Lädt deutsche IP-Ranges von ipdeny.com
- Lädt DACH IP-Ranges von ipdeny.com (DE, AT, CH)
- Prüft jede Anfrage gegen diese Ranges
- Blockt Nicht-DE-IPs sofort mit HTTP 403
- Blockt Nicht-DACH-IPs sofort mit HTTP 403
- Schreibt blockierte IPs in Queue-Datei für CrowdSec
### Komponente 2: Python Watcher (systemd service)
@@ -102,6 +103,7 @@ Das war's! Das Script ist vollständig selbstverwaltend.
- `geoip_blocking.php` wird erstellt und eingebunden
- Shop wird für Tracking registriert
- Blocking ist sofort aktiv
- Erlaubt werden nur IPs aus: 🇩🇪 Deutschland, 🇦🇹 Österreich, 🇨🇭 Schweiz
### Blocking deaktivieren
@@ -195,7 +197,7 @@ cscli decisions delete --ip DEINE_IP
- `index.php.geoip_backup` - Backup der Original index.php
- `geoip_blocking.php` - PHP-Blocking-Script
- `de_ip_ranges.cache` - Gecachte deutsche IP-Ranges (erneuert alle 24h)
- `dach_ip_ranges.cache` - Gecachte DACH IP-Ranges (erneuert alle 24h)
- `geoip_blocked.log` - Log der PHP-Level Blocks
- `geoip_crowdsec_queue.log` - Queue für CrowdSec-Synchronisation
@@ -242,17 +244,27 @@ Standard: 24 Stunden. Im PHP-Script:
$cache_duration = 86400; // In Sekunden
```
### Weitere Länder hinzufügen
Um weitere Länder zur Whitelist hinzuzufügen, editiere im Python-Script das PHP-Template. Suche nach:
```php
$countries = ['de', 'at', 'ch']; // Germany, Austria, Switzerland
```
Füge weitere Ländercodes hinzu (z.B. `'nl'` für Niederlande, `'be'` für Belgien). Die verfügbaren Ländercodes findest du unter: https://www.ipdeny.com/ipblocks/data/aggregated/
## 🛡️ Sicherheit
### Was wird geblockt?
- ✅ Alle IPs außerhalb deutscher IP-Ranges
- ✅ Alle IPs außerhalb der DACH IP-Ranges (DE, AT, CH)
- ✅ Auf allen Ebenen: HTTP, HTTPS, SSH, FTP, SMTP, etc. (durch CrowdSec)
- ✅ Auch wenn sie den PHP-Check umgehen (Firewall blockt)
### Was wird NICHT geblockt?
- ✅ Alle deutschen IPs (basierend auf RIPE/ipdeny.com Daten)
- ✅ Alle IPs aus Deutschland, Österreich und der Schweiz (basierend auf RIPE/ipdeny.com Daten)
- ✅ Private IPs (192.168.x.x, 10.x.x.x, etc.)
- ✅ Localhost (127.0.0.1)
@@ -261,13 +273,13 @@ $cache_duration = 86400; // In Sekunden
Das System nutzt die **offiziellen IP-Zuweisungen** von ipdeny.com:
- Basiert auf RIPE-Daten
- Täglich aktualisiert
- Umfasst alle deutschen Provider (Telekom, Vodafone, O2, 1&1, etc.)
- Umfasst alle DACH-Provider (Telekom, Vodafone, A1, Swisscom, etc.)
- Präzise CIDR-Prüfung
**Risiko für Fehlblockierungen: Minimal**
Deutsche IPs können nur geblockt werden, wenn:
1. Der Provider die IP-Range außerhalb Deutschlands registriert hat (extrem selten)
DACH-IPs können nur geblockt werden, wenn:
1. Der Provider die IP-Range außerhalb der DACH-Region registriert hat (extrem selten)
2. Die IP über einen ausländischen VPN/Proxy kommt
3. Die ipdeny.com Daten veraltet sind (wird täglich aktualisiert)
@@ -333,21 +345,21 @@ iptables -L -n -v | grep crowdsec
ipset list crowdsec-blacklists-5 | head -20
```
### Deutsche IPs werden geblockt
### DACH-IPs werden geblockt
**Sehr unwahrscheinlich!** Aber falls doch:
```bash
# Prüfe welche IP-Ranges als deutsch erkannt werden
cat /var/www/vhosts/SHOP/httpdocs/de_ip_ranges.cache
# Prüfe welche IP-Ranges als DACH erkannt werden
cat /var/www/vhosts/SHOP/httpdocs/dach_ip_ranges.cache
# Lösche Cache (wird neu geladen)
rm /var/www/vhosts/SHOP/httpdocs/de_ip_ranges.cache
rm /var/www/vhosts/SHOP/httpdocs/dach_ip_ranges.cache
# Prüfe ob IP in deutschen Ranges ist
# Prüfe ob IP in DACH-Ranges ist
php -r '
$ip = "91.107.229.191";
$ranges = unserialize(file_get_contents("/var/www/vhosts/SHOP/httpdocs/de_ip_ranges.cache"));
$ranges = unserialize(file_get_contents("/var/www/vhosts/SHOP/httpdocs/dach_ip_ranges.cache"));
foreach($ranges as $range) {
list($subnet, $mask) = explode("/", $range);
$ip_long = ip2long($ip);
@@ -372,14 +384,29 @@ done
cscli decisions list | grep "GeoIP"
```
### Migration von der alten DE-Only Version
Falls du von der alten Version (nur Deutschland) auf die DACH-Version wechselst:
```bash
# 1. Alle aktiven Shops deaktivieren (alte Version)
python3 geoip_shop_manager_old.py # Option 2 für jeden Shop
# 2. Alte Cache-Dateien löschen
rm /var/www/vhosts/*/httpdocs/de_ip_ranges.cache
# 3. Neue Version verwenden
python3 geoip_shop_manager.py # Shops wieder aktivieren
```
## 📊 Performance
### PHP-Level Blocking
- **Overhead pro Request**: ~1-5ms (bei gecachten IP-Ranges)
- **Erster Request**: ~200-500ms (beim Download der IP-Ranges)
- **Overhead pro Request**: ~2-8ms (bei gecachten IP-Ranges, etwas mehr als DE-only wegen mehr Ranges)
- **Erster Request**: ~400-800ms (beim Download der IP-Ranges für 3 Länder)
- **Cache-Dauer**: 24 Stunden
- **RAM-Verbrauch**: ~2-5 MB pro Shop
- **RAM-Verbrauch**: ~5-10 MB pro Shop (mehr Ranges als DE-only)
### CrowdSec Firewall Blocking
@@ -417,7 +444,7 @@ systemctl stop geoip-crowdsec-watcher.service
```bash
# Cache löschen (wird automatisch neu geladen)
rm /var/www/vhosts/*/httpdocs/de_ip_ranges.cache
rm /var/www/vhosts/*/httpdocs/dach_ip_ranges.cache
```
Die Ranges werden automatisch alle 24h aktualisiert.
@@ -466,7 +493,7 @@ cat /var/www/vhosts/SHOP/httpdocs/geoip_blocked.log | \
### Vor Aktivierung
1. ✅ Backup erstellen (macht das Script automatisch)
2. ✅ Sicherstellen, dass Admin-Zugriff aus Deutschland kommt
2. ✅ Sicherstellen, dass Admin-Zugriff aus DACH-Region kommt
3. ✅ Test mit kurzer Dauer (kann im Script angepasst werden)
4. ✅ Monitoring einrichten
@@ -540,9 +567,11 @@ Bei Problemen:
- [CrowdSec Dokumentation](https://docs.crowdsec.net/)
- [Plesk Dokumentation](https://docs.plesk.com/)
- [iptables Tutorial](https://www.netfilter.org/documentation/)
- [ipdeny.com Ländercodes](https://www.ipdeny.com/ipblocks/data/aggregated/)
---
**Version**: 1.0.0
**Letztes Update**: November 2025
**Status**: Production Ready ✅
**Version**: 2.0.0 (DACH)
**Letztes Update**: Dezember 2025
**Status**: Production Ready ✅
**Erlaubte Länder**: 🇩🇪 Deutschland | 🇦🇹 Österreich | 🇨🇭 Schweiz