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.