
GeoIP-Blocking in Proxmox VE
GeoIP-Blocking in Proxmox VE (Nur deutsche IP-Adressen zulassen)
Diese Dokumentation beschreibt, wie Sie mithilfe eines automatisierten Skripts die Firewall von Proxmox VE (PVE) so konfigurieren, dass ausschließlich Anfragen aus Deutschland (DE) erlaubt werden.
1. IP-Set im Proxmox Web-Interface vorbereiten
Bevor das Skript ausgeführt wird, muss ein leeres IP-Set auf Cluster-Ebene existieren.
- Navigieren Sie im Web-Interface zu Datacenter (Rechenzentrum) -> Firewall -> IP Sets.
- Klicken Sie auf Create (Erstellen).
- Vergeben Sie den exakten Namen:
de_ips(Beschreibung optional: Deutsche IP-Adressen).
2. Automatisches Update-Skript einrichten
Erstellen Sie auf der Proxmox-Shell ein Skript, welches wöchentlich die aktuellen IP-Bereiche Deutschlands herunterlädt und in das IP-Set injiziert.
Datei erstellen
nano /usr/local/bin/update-geoip.shSkript-Inhalt
Fügen Sie den folgenden Bash-Code ein:
#!/bin/bash
# Verzeichnis für die temporäre Datei und PVE-Konfiguration
TMP_FILE="/tmp/de_zone.txt"
PVE_FW_CLUSTER="/etc/pve/firewall/cluster.fw"
# Aktuelle IP-Zonen-Datei für Deutschland (IPv4) herunterladen
echo "Lade deutsche IP-Bereiche herunter..."
curl -s -o $TMP_FILE "http://www.ipdeny.com/ipblocks/data/aggregated/de-zone.zone"
if [ -s $TMP_FILE ]; then
echo "Aktualisiere Proxmox IP-Set [de_ips]..."
# Entferne die alten Einträge des IP-Sets aus der Konfiguration
sed -i '/\[ipset de_ips\]/,/^$/d' $PVE_FW_CLUSTER
# Schreibe den Header für das IP-Set neu
echo -e "\n[ipset de_ips]" >> $PVE_FW_CLUSTER
# Füge alle heruntergeladenen IP-Subnetze ein
cat $TMP_FILE >> $PVE_FW_CLUSTER
# Leere Zeile am Ende anfügen
echo "" >> $PVE_FW_CLUSTER
echo "Erfolgreich aktualisiert!"
else
echo "Fehler: Download fehlgeschlagen oder Datei leer."
fi
# Temporäre Datei löschen
rm -f $TMP_FILEBerechtigungen setzen & Erstausführung
Machen Sie das Skript ausführbar und führen Sie es einmalig aus:
chmod +x /usr/local/bin/update-geoip.sh
/usr/local/bin/update-geoip.sh3. Firewall-Regel definieren
Aktivieren Sie den Schutz nun für Ihr System (z. B. auf Cluster-Ebene unter Datacenter oder für dedizierte VMs/LXCs).
- Wählen Sie den gewünschten Bereich im Menü aus und klicken Sie auf Firewall -> Add.
- Richten Sie die Regel wie folgt ein:
- Direction:
in - Action:
ACCEPT - Macro / Protocol: Leer lassen für den gesamten Server oder gezielt Dienste wie HTTPS (8006) bzw. SSH (22) wählen.
- Source: Wählen Sie im Dropdown-Menü
+de_ips(Das Pluszeichen kennzeichnet das IP-Set).
- Stellen Sie sicher, dass in den Firewall-Options (Optionen) die Firewall generell auf Yes gesetzt ist.
4. Automatische Updates per Cronjob
Um sicherzustellen, dass die IP-Bereiche aktuell bleiben, wird ein wöchentlicher Cronjob eingerichtet.
crontab -eFügen Sie am Ende der Datei folgende Zeile ein, damit das Skript jeden Sonntag um 03:00 Uhr ausgeführt wird:
0 3 * * 0 /usr/local/bin/update-geoip.sh >/dev/null 2>&1⚠️ Sicherheitshinweis: Stellen Sie sicher, dass Sie sich während der Einrichtung nicht selbst aussperren. Sollte Ihre aktuelle IP nicht als deutsche IP erkannt werden, fügen Sie vor der Aktivierung ein separates IP-Set für Ihr lokales Subnetz (z. B.
192.168.1.0/24) mit einerACCEPT-Regel hinzu.