Однажды меня попросили заблокировать некоторые страны на веб сервере с 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