У зв’язку з закінченням підтримки dat формату з боку MaxMind, та потребою блокувати усіляке лайно яке пре на сайти роблю цю нотатку.
Зпочатку встановлюємо залежности:
1 |
apt install libmaxminddb-dev libmaxminddb0 apache2-dev gcc geoipupdate |
далі скачуємо архів з сорсами для встановлення модуля maxminddb:
1 2 3 4 5 |
cd /usr/src/ wget https://github.com/maxmind/mod_maxminddb/releases/download/1.1.0/mod_maxminddb-1.1.0.tar.gz tar xvf mod_maxminddb-1.1.0.tar.gz && cd mod_maxminddb-1.1.0 ./cofnigure make install |
Якщо видає якісь помилки при збиранні – перевірити залежності.
Налаштовуємо автоматичне скачування да оновлення maxminddb:
1 2 3 |
/usr/bin/geoipupdate -d /usr/share/GeoIP/ crontab -e 00 03 * * * /usr/bin/geoipupdate -d /usr/share/GeoIP/ |
Далі іду у .htaccess потрібного сайту та додаю налаштування для блокування всіх – окрім потрібних держав.:
1 2 3 4 5 6 7 8 9 |
<IfModule mod_maxminddb.c> MaxMindDBEnable On MaxMindDBFile DB /usr/share/GeoIP/GeoLite2-Country.mmdb MaxMindDBEnv MM_COUNTRY_CODE DB/country/iso_code SetEnvIf MM_COUNTRY_CODE ^(US|CA|AS|UA|AU) AllowCountry Deny from all Allow from env=AllowCountry </IfModule> |
Для перевірки достатньо видалити код своєї крахїни з переліку та перевірити чи буде працювати у вас сайт. Якщо отримаєте 403 код – все ОК, модуль працює.
Якщо потрібно заблокувати якусь країну, необхідно додати:
1 2 3 4 5 6 7 8 |
<IfModule mod_maxminddb.c> MaxMindDBEnable On MaxMindDBFile DB /usr/share/GeoIP/GeoLite2-Country.mmdb MaxMindDBEnv MM_COUNTRY_CODE DB/country/iso_code SetEnvIf MM_COUNTRY_CODE ^(RU|DE|FR) BlockCountry Deny from env=BlockCountry </IfModule> |