Maxmind (Apache modul)

Modul maxmind je užitečným nástrojem který nabízí možnost poskytovat webový obsah skrze nastavení geolokací. Tento modul naleznete na všech tarifech s 64 bitovou architekturou a tedy na službách které mají k dispozici možnost využívat PHP 8.x (SAVANA501 až SAVANA9000).

Modul je připraven ihned po nastartování účtu a lze tak přistoupit k editaci souboru .htaccess, v kořenovém adresáři domény. Pro tyto účely stačí využít jakéhokoliv FTP klienta, kde bude nastavena možnost zobrazování skrytých souborů a složek.

Soubor .htaccess pak bude obsahovat kód který:

  • Inicializuje modul maxmind
  • Databázi GeoLite s typem dat kterou plánujete využít
  • Politiku pravidel které se chystáte uplatnit.

Následující příklady obsahují praktické využití modulu maxmind:

Omezení konkrétních zemí

Následující příklad je praktickým zápisem pro omezení přístupů pro konkrétní země. Zápis se vkládá na začátek .htaccess souboru v této podobě:

<IfModule mod_maxminddb.c>
MaxMindDBEnable On
MaxMindDBFile DB /global/applications/geoip/GeoLite2-Country.mmdb
MaxMindDBEnv MM_COUNTRY_CODE DB/country/iso_code

SetEnvIf MM_COUNTRY_CODE ^(CN) BlockCountry
<RequireAll>
    Require not env BlockCountry
    Require all granted
</RequireAll>
</IfModule>

Po vložení budou úspěšně omezeny přístupy z Číny. Omezené země se nacházejí na řádku “SetEnvIf MM_COUNTRY_CODE ^(CN) BlockCountry” kdy do závorek (CN) lze vložit jakékoliv další země dle formátu ISO-3166 alpha2 které naleznete například na Geonames.org.

Pokud si přejete omezit příkladem Indii a Irák tak úprava bude vypadat v daném řádku následovně:

SetEnvIf MM_COUNTRY_CODE ^(CN|IN|IQ) BlockCountry

Zároveň se můžete setkat se stavem, kdy si přejete konkrétní země mít omezené ale určité IP adresy a rozsahy by měly mít možnost stále přistupovat na webové stránky stránky z těchto omezených zemí. Finální zápis kdy jsou omezené jmenované země a povolené konkrétní IP adresy i rozsah z Číny, bude vypadat následovně:

<IfModule mod_maxminddb.c>
MaxMindDBEnable On
MaxMindDBFile DB /global/applications/geoip/GeoLite2-Country.mmdb
MaxMindDBEnv MM_COUNTRY_CODE DB/country/iso_code

SetEnvIf MM_COUNTRY_CODE ^(CN|IN|IQ) BlockCountry
<RequireAny>
Require ip 39.163.153.51
Require ip 117.151.153.20/24
</RequireAny>
<RequireAll>
    Require not env BlockCountry
    Require all granted
</RequireAll>	
</IfModule>

Omezení všech zemí kromě specifikovaných

Logiku blokace lze také otočit a povolit pouze specifické země pro přístup. Při této variantě je nutné brát v potaz, že mohou být omezeny i externí služby jako jsou například roboti zajišťující indexaci Vašich webových stránek.

Následující zápis pak zajistí omezení všech přístupů mimo Českou republiku:

<IfModule mod_maxminddb.c>
MaxMindDBEnable On
MaxMindDBFile DB /global/applications/geoip/GeoLite2-Country.mmdb
MaxMindDBEnv MM_COUNTRY_CODE DB/country/iso_code

SetEnvIf MM_COUNTRY_CODE ^(CZ) AllowCountry
<RequireAny>
    Require env AllowCountry
    Require all denied
</RequireAny>
</IfModule>

Vše ostatní bude zablokováno.

Podobně lze přidávat výjimky dle předchozího formátu na Geonames.org.

Pro přidání Ameriky a Slovenska se provede rozšířeníní na řádku SetEnvIf:

<IfModule mod_maxminddb.c>
MaxMindDBEnable On
MaxMindDBFile DB /global/applications/geoip/GeoLite2-Country.mmdb
MaxMindDBEnv MM_COUNTRY_CODE DB/country/iso_code

SetEnvIf MM_COUNTRY_CODE ^(CZ|SK|US) AllowCountry
<RequireAny>
    Require env AllowCountry
    Require all denied
</RequireAny>
</IfModule>

Nakonec může nastat situace kdy je nutné povolit IP adresy nebo celé rozsahy ze zablokovaných zemí. Zápis pak bude vypadat následovně:

<IfModule mod_maxminddb.c>
MaxMindDBEnable On
MaxMindDBFile DB /global/applications/geoip/GeoLite2-Country.mmdb
MaxMindDBEnv MM_COUNTRY_CODE DB/country/iso_code

SetEnvIf MM_COUNTRY_CODE ^(CZ|CA|SK) AllowCountry
<RequireAny>
    Require ip 64.233.160.0
    Require ip 66.249.64.0/24
    Require env AllowCountry
    Require all denied
</RequireAny>
</IfModule>

Výše uvedené příklady tak pokrývají praktické a využitelné chování pro cílení přístupů na domény a subdomény.

Součástí adresáře /global/applications/geoip jsou následující Geolite databáze:

GeoLite2-ASN.mmdb GeoLite2-City.mmdb GeoLite2-Country.mmdb

V případě, že si přejete mít větší kontrolu nad správou i aktualizacemi těchto dat, tak je možné si stáhnout databáze z oficiálních stránek Maxmind.

Následně stačí upravit cestu v zápisu .htaccess:

MaxMindDBFile DB /Váš adresář kam byla umístěna .mmdb databáze Geolite

Maxmind apache modul lze také využít ihned několika různými způsoby než pouze pro účely omezení a podrobnější informace lze nalézt od vývojářů modulů na adrese Github.com.

English Česky Dutch