Блокировка пользователей из определенных стран

Примеры использования GeoIp, для блокировки пользователей из определенных стран

Использование модуля GeoIP который позволяет перенаправлять или блокировать веб-трафик в соответствии с географическим положением.

Репозиторий EPEL в RHEL и CentOS

По умолчанию для Apache/2.4.6 mod_geoip недоступен в официальном репозитории RHEL / CentOS, поэтому нам нужно установить сторонний репозиторий EPEL.

yum install epel-release

Mod_GeoIP в RHEL и CentOS

После того, как в вашей системе включен репозиторий EPEL, вы можете просто установить mod_geoip, выполнив следующую команду с его пакетами зависимостей:

yum install mod_geoip GeoIP GeoIP-devel GeoIP-data zlib-devel

Для загрузки последних Geo City и Country Database, выполните команды:

cd /usr/share/GeoIP/
mv GeoIP.dat GeoIP.dat_org
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoIP.dat.gz
gunzip GeoLiteCity.dat.gz

Включите Mod_GeoIP в Apache

После того, как модуль установлен, откройте и отредактируйте основной файл конфигурации модуля текстовым редактором и активируйте модуль:

nano /etc/httpd/conf.d/geoip.conf

Установите строку GeoIPEnable с Off в положение On. Так же убедитесь, что вы добавили абсолютный путь к файлу базы данных GeoIP.

<IfModule mod_geoip.c>
GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat 
</IfModule>

file

Перезапустите службу Apache.

systemctl restart httpd

Перенаправление пользователей на основе страны

В описанном примере код перенаправит пользователей на основе страны, который мы установили как AS (Азия).

Таким образом, вы можете перенаправить всех пользователей на основе их кода страны.

GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
# Redirect one country
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AS$
RewriteRule ^(.*)$ https://www.testing.ru$1 [R,L]

Блокировка пользователей на основе страны

Данный пример заблокирует пользователей на основе кода страны, который устанавливает GeoIP. Пример блокировки пользователей из стран AS (Азия) и USA (США).

GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
SetEnvIf GEOIP_COUNTRY_CODE AS BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE US BlockCountry
# ... place more countries here
Deny from env=BlockCountry

Разрешение доступа пользователей на основе страны

Данный пример позволит пользователям иметь доступ только из ниже перечисленных стран.

GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
SetEnvIf GEOIP_COUNTRY_CODE AS AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE US AllowCountry
# ... place more countries here
Deny from all
Allow from env=AllowCountry

Каждый запрос на сайт содержит специальный заголовок GeoIp-Country-Code, в котором содержится двухбуквенный код страны посетителя ISO 3166. Страна определяется исходя из IP адреса посетителя по данным MaxMind GeoLite.

Например:

  • AF – Africa
  • AN – Antarctica
  • AS – Asia
  • EU – Europe
  • NA – North America
  • OC – Oceania
  • SA – South America
  • UA – Ukraine
  • CN – China
  • PL – Poland
Нужна помощь?Наши инженеры бесплатно помогут с любым вопросом за считанные минутыНаписать нам