GeoIP blokace přihlášení do WordPressu

Pomocí GeoIP lze omezit přístup k souborům wp-login.php a xmlrpc.php pouze na návštěvníky z České republiky a Slovenska. Požadavky z ostatních zemí server odmítne chybou 403 Forbidden.

Než začnete

Upozornění: Před úpravou si vytvořte zálohu souboru .htaccess. Mějte také připravený přístup přes FTP, SFTP nebo správce souborů, abyste mohli změnu vrátit v případě chyby.

GeoIP databáze a příslušná proměnná s kódem země musí být na serveru předem nakonfigurované. Samotné vložení následujícího kódu GeoIP databázi neaktivuje.

Varianta pro Apache a mod_maxminddb

Tato varianta je určená pro server Apache s aktivním modulem mod_maxminddb. Předpokládá, že je dvoupísmenný kód země dostupný v proměnné MM_COUNTRY_CODE.

<IfModule mod_maxminddb.c>
    RewriteEngine On

    # Pravidlo se nepoužije, pokud server kód země nezjistí
    RewriteCond %{ENV:MM_COUNTRY_CODE} !^$

    # Povoleny jsou pouze Česká republika a Slovensko
    RewriteCond %{ENV:MM_COUNTRY_CODE} !^(CZ|SK)$ [NC]

    # Blokace přihlášení a XML-RPC rozhraní WordPressu
    RewriteRule ^(?:wp-login\.php|xmlrpc\.php)$ - [F,L]
</IfModule>

Varianta pro LiteSpeed a OpenLiteSpeed

Na serverech LiteSpeed se pro kód země běžně používá proměnná GEOIP_COUNTRY_CODE. GeoIP databáze musí být předem připojena v konfiguraci serveru nebo virtuálního hostu.

<IfModule LiteSpeed>
    RewriteEngine On

    # Pravidlo se nepoužije, pokud server kód země nezjistí
    RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^$

    # Povoleny jsou pouze Česká republika a Slovensko
    RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^(CZ|SK)$ [NC]

    # Blokace přihlášení a XML-RPC rozhraní WordPressu
    RewriteRule ^(?:wp-login\.php|xmlrpc\.php)$ - [F,L]
</IfModule>

Kam kód vložit

  1. Otevřete kořenový adresář WordPressu, ve kterém se nachází soubory wp-config.php a wp-login.php.
  2. Vytvořte zálohu stávajícího souboru .htaccess.
  3. Vyberte pouze variantu odpovídající vašemu webovému serveru.
  4. Vložte ji před automaticky generovanou sekci # BEGIN WordPress.
  5. Soubor uložte a ihned otestujte web i přihlašovací stránku.
# Vlastní GeoIP pravidla vložte sem

# BEGIN WordPress
# Obsah spravovaný WordPressem
# END WordPress

Kód nevkládejte dovnitř sekce mezi značkami # BEGIN WordPress a # END WordPress. WordPress může obsah této sekce automaticky přepsat.

Jak blokaci otestovat

  1. Z české nebo slovenské IP adresy otevřete /wp-login.php. Přihlašovací stránka se musí zobrazit.
  2. Připojte se přes důvěryhodnou VPN s výstupní IP adresou v jiné zemi.
  3. Znovu otevřete /wp-login.php a /xmlrpc.php. Server by měl vrátit 403 Forbidden.
  4. Ověřte, že běžné veřejné stránky webu zůstávají dostupné.

Nejčastější problémy

Blokace nefunguje

  • GeoIP databáze není na serveru aktivní nebo dostupná.
  • Název proměnné neodpovídá konfiguraci serveru.
  • Server nenačítá rewrite pravidla ze souboru .htaccess.
  • Web používá CDN nebo reverzní proxy a server nevidí skutečnou IP návštěvníka.
  • Po změně konfigurace nebyl proveden potřebný reload serveru.

Po vložení kódu se zobrazí chyba 500

Obnovte zálohu souboru .htaccess. Chyba obvykle znamená, že server danou direktivu nepodporuje, není aktivní potřebný modul nebo je v konfiguraci syntaktická chyba.

Co znamená podmínka pro prázdnou proměnnou

RewriteCond %{ENV:MM_COUNTRY_CODE} !^$

Tato pojistka zajistí, že se blokace nepoužije, pokud server kód země vůbec nezjistí. U LiteSpeed varianty se stejným způsobem kontroluje proměnná GEOIP_COUNTRY_CODE.

Pokud tuto pojistku odstraníte, neznámá nebo prázdná hodnota bude také zablokována. To je přísnější, ale při výpadku GeoIP může zablokovat přístup i správci webu.

Důležité upozornění pro proxy

Pokud váš web běží za reverzní proxy např. Cloudflare,, Apache může vidět IP adresu této proxy místo skutečné IP adresy návštěvníka. Modul by pak vyhodnocoval zemi pro IP adresu serveru Cloudflare.

Bezpečnostní doporučení

GeoIP blokace je pouze doplňková bezpečnostní vrstva. Nenahrazuje silná hesla, vícefaktorové ověřování, omezení pokusů o přihlášení, pravidelné aktualizace WordPressu a spolehlivé zálohování.