Установка GeoIP в Apache2

Однажды меня попросили заблокировать некоторые страны на веб сервере с Apache2 и Ubuntu Server 20.04.

Так как на сервере работал Apache2, по этому я установил для него модуль GeoIP, который немного устарел но быстро устанавливается:

apt-get install libapache2-mod-geoip

После установки, появился файл:

nano /etc/apache2/mods-enabled/geoip.conf

В котором я указал какие страны меня просили заблокировать:

<IfModule mod_geoip.c>
  GeoIPEnable On
  GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
  GeoIPDBFile /usr/share/GeoIP/GeoIPv6.dat
  SetEnvIf GEOIP_COUNTRY_CODE RU BlockCountry
  SetEnvIf GEOIP_COUNTRY_CODE IN BlockCountry
  SetEnvIf GEOIP_COUNTRY_CODE VN BlockCountry
  SetEnvIf GEOIP_COUNTRY_CODE BD BlockCountry
  SetEnvIf GEOIP_COUNTRY_CODE PK BlockCountry
  SetEnvIf GEOIP_COUNTRY_CODE ID BlockCountry
  Deny from env=BlockCountry
</IfModule>

Код страны можно посмотреть например тут ru.wikipedia.org/wiki/ISO_3166-1
После изменений проверим корректность конфигурации apache2:

apachectl -t

И любой из команд ниже применим изменения:

service apache2 reload
service apache2 restart

Теперь осталось указать к каким сайтам применить BlockCountry, можно указать прямо в файле конфигурации сайта:

<Files ixnfo.com.txt>
order deny,allow
deny from env=BlockCountry
</Files>

<Directory /var/www/ixnfo.com/>
order deny,allow
deny from env=BlockCountry
</Directory>

Можно также зарегистрировать аккаунт на сайте maxmind.com, чтобы получить бесплатный лицензионный ключ и можно было обновлять бесплатную базу данных, но как я понял она уже в другом формате и файл называется не GeoIP.dat.
Установка скрипта авто обновления:

apt-get install geoipupdate

После установки добавилось задание /etc/cron.d/geoipupdate и /usr/share/doc/geoipupdate.
Чтобы обновление работало необходимо указать регистрационные данные:

nano /etc/GeoIP.conf
AccountID
LicenseKey
EditionIDs

Для ручного обновления запустим (в аккаунте на сайте maxmind.com будет видно какие базы данных были запрошены):

geoipupdate

Также можно вручную проверить к какой стране принадлежит IP адрес:

geoiplookup X.X.X.X

Смотрите также мои статьи:
Использование .htaccess
Еще про Apache2

Оставьте комментарий

Добавить комментарий