Sicherheit und SSL

Zugriff nach Ländern sperren oder erlauben

Geprüft am 7 Min. Lesezeit Firewall Ländersperre

Sie können Besuche aus bestimmten Ländern auf zwei Arten einschränken: im Kundenbereich, ohne eine Datei anzufassen, oder mit Regeln in der .htaccess, wenn Sie etwas Gezielteres brauchen, etwa nur den Administrationszugang schützen oder je nach Land umleiten.

Das Land wird aus der IP des Besuchers ermittelt. Das ist in den meisten Fällen zuverlässig, aber wer ein VPN oder einen Proxy nutzt, erscheint mit dem Land dieses Dienstes.

Im Kundenbereich

  1. Melden Sie sich im Kundenbereich an und öffnen Sie Ihren Hosting-Dienst.
  2. Gehen Sie zu Firewall und Virenschutz > Geoblocking.
  3. Wählen Sie die Domain, die Sie schützen möchten.
  4. Wählen Sie den Modus:
    • Blacklist: sperrt die ausgewählten Länder und erlaubt alle anderen.
    • Whitelist: erlaubt nur die ausgewählten Länder und sperrt alle anderen.
  5. Wählen Sie die Länder (oder ganze Kontinente) aus und speichern Sie.

Die Sperre gilt für die gesamte Domain. Wenn Sie eine Whitelist verwenden, prüfen Sie, dass Sie keine Dienste aussperren, die sich aus anderen Ländern mit Ihrer Website verbinden, etwa Zahlungsanbieter, Webhooks oder Verfügbarkeitsmonitore. Um sie aufzuheben, gehen Sie in denselben Bereich zurück und entfernen Sie die Konfiguration.

Mit Regeln in der .htaccess

Der Server ermittelt bei jedem Besuch den Standort und legt das Ergebnis in den Variablen GEOIP_COUNTRY_CODE (Land) und GEOIP_CONTINENT_CODE (Kontinent) ab, die Sie in der .htaccess der Domain verwenden können. Fügen Sie die Regeln am Anfang der Datei ein. Wenn Sie auch die Sperre im Kundenbereich verwenden, bearbeiten Sie den Block zwischen # BEGIN HostsuarGeoBlock und # END HostsuarGeoBlock nicht: Das Panel schreibt ihn beim Speichern neu.

Länder geben Sie mit ihrem zweibuchstabigen Code nach ISO 3166-1 alpha-2 an: ES Spanien, RU Russland, CN China, US Vereinigte Staaten … Kontinente mit EU Europa, AS Asien, AF Afrika, NA Nordamerika, SA Südamerika und OC Ozeanien.

Mehrere Länder sperren

Dieses Beispiel sperrt Russland, China und Nordkorea und erlaubt alle anderen:

GeoIPEnable On
SetEnvIf GEOIP_COUNTRY_CODE RU DenyCountry
SetEnvIf GEOIP_COUNTRY_CODE CN DenyCountry
SetEnvIf GEOIP_COUNTRY_CODE KP DenyCountry
Allow from all
Deny from env=DenyCountry

Fügen Sie für jedes Land, das Sie sperren möchten, eine SetEnvIf-Zeile hinzu.

Nur einige Länder erlauben

Umgekehrt: Erlaubt Spanien und Portugal und sperrt alle anderen:

GeoIPEnable On
SetEnvIf GEOIP_COUNTRY_CODE ES AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE PT AllowCountry
Deny from all
Allow from env=AllowCountry

Um einen ganzen Kontinent zu erlauben, verwenden Sie GEOIP_CONTINENT_CODE; zum Beispiel nur Europa:

GeoIPEnable On
SetEnvIf GEOIP_CONTINENT_CODE EU AllowCountry
Deny from all
Allow from env=AllowCountry

Den Zugang zu wp-admin auf Ihr Land beschränken

Oft möchten Sie nicht die Website sperren, sondern nur den Administrationszugang. Dieses Beispiel erlaubt den Zugriff auf wp-login.php, wp-admin und xmlrpc.php von WordPress nur aus Spanien; der Rest der Website bleibt für alle offen:

GeoIPEnable On
RewriteEngine On
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^(ES)$
RewriteCond %{REQUEST_URI} ^/(wp-login\.php|wp-admin/|xmlrpc\.php) [NC]
RewriteCond %{REQUEST_URI} !^/wp-admin/admin-ajax\.php [NC]
RewriteRule ^ - [F,L]

Die Ausnahme für admin-ajax.php ist nötig, weil viele Plugins und Themes es auch im öffentlichen Bereich verwenden. Um mehr als ein Land zu erlauben, trennen Sie sie mit |: !^(ES|PT)$. Denken Sie daran, dass Sie auf Reisen ebenfalls ausgesperrt sind, bis Sie die Regel entfernen oder erweitern.

Je nach Land umleiten

Sie können Besucher aus bestimmten Ländern auch auf eine andere Version der Website schicken. Dieses Beispiel leitet Besucher aus den Vereinigten Staaten oder Kanada um:

GeoIPEnable On
RewriteEngine On
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(US|CA)$
RewriteRule ^(.*)$ https://www.otraweb.com/$1 [R=302,L]

Verwenden Sie 302 (temporär) und nicht 301: Browser speichern dauerhafte Umleitungen, und ein Besucher, der das Land wechselt, würde weiterhin umgeleitet. Beachten Sie, dass Google überwiegend aus den Vereinigten Staaten crawlt; eine Umleitung nach Land kann also verhindern, dass Google Ihre ursprüngliche Website sieht.

Das Land des Besuchers in PHP auslesen

Mit GeoIPEnable On am Anfang der .htaccess erhält Ihr PHP-Code die Standortdaten in $_SERVER:

<?php

echo $_SERVER['GEOIP_ADDR'];           // IP, von der aus zugegriffen wird
echo $_SERVER['GEOIP_COUNTRY_CODE'];   // Ländercode, zum Beispiel ES
echo $_SERVER['GEOIP_CONTINENT_CODE']; // Kontinentcode, zum Beispiel EU

So können Sie zum Beispiel Sprache oder Währung vorauswählen, ohne einen externen Dienst aufzurufen. Wenn sich die IP nicht zuordnen lässt, existiert die Variable nicht: Verwenden Sie $_SERVER['GEOIP_COUNTRY_CODE'] ?? '', um Warnungen zu vermeiden.

Wenn ein legitimer Besucher nicht mehr hineinkommt

  • Prüfen Sie mit einem beliebigen Geolokalisierungsdienst, welches Land seiner IP zugeordnet wird, und vergleichen Sie es mit Ihrer Liste.
  • In einer Whitelist erlaubt das Hinzufügen eines Landes den Zugriff; in einer Blacklist sperrt es ihn. Prüfen Sie den Modus, bevor Sie Länder hinzufügen.
  • Wenn Ihre Website hinter einem CDN wie Cloudflare liegt, sieht der Server möglicherweise die IP des CDN statt der des Besuchers. Verwenden Sie in diesem Fall die Ländersperre des CDN selbst.
  • Wenn Sie sich selbst ausgesperrt haben, entfernen Sie die Regeln aus der .htaccess im Dateimanager von cPanel oder heben Sie die Sperre im Kundenbereich auf.

Die Ländersperre verringert automatisierten bösartigen Traffic stark, ersetzt aber nicht, die Website aktuell zu halten und sichere Passwörter zu verwenden.

Das könnte Ihnen auch helfen

Stimmt etwas nicht oder hat sich etwas geändert? Erzählen Sie es uns, und wir prüfen es.