Как заблокировать вход в WordPress по стране

Защита страницы входа в WordPress — важный аспект безопасности сайта, особенно если вы хотите ограничить доступ для нежелательных посетителей из определённых стран. В этой статье мы подробно разберём, как заблокировать попытки входа в WordPress по стране, используя как плагины, так и самостоятельные решения на PHP с геолокацией IP.

Почему блокировка входов по стране важна для безопасности WordPress

Большинство атак на WordPress, включая попытки взлома через wp-login.php, исходят из определённых регионов. Ограничив доступ по геолокации, вы существенно снизите риски брутфорс-атак и других вредоносных действий.

Кроме того, блокировка по стране помогает снизить нагрузку на сервер, уменьшить количество спам-логинов и повысить стабильность сайта.

Но важно не переборщить, чтобы не заблокировать легитимных пользователей и не создать проблемы для SEO.

Как определить страну посетителя по IP

Для реализации блокировки сначала нужно определить страну посетителя по его IP-адресу. Существует несколько способов:

  • Использование базы данных MaxMind GeoIP2 или бесплатной GeoLite2.
  • Использование сторонних API, например, ipstack, ipinfo, или ip-api.
  • Использование серверных модулей, например, mod_geoip для Apache.

Для WordPress мы рассмотрим вариант с MaxMind, так как он даёт высокоточную и быструю локальную работу без задержек на запросы к внешним сервисам.

Установка и настройка базы GeoIP2

1. Скачайте бесплатную базу GeoLite2-Country с сайта MaxMind: https://dev.maxmind.com/geoip/geoip2/geolite2/

2. Распакуйте архив и поместите файл GeoLite2-Country.mmdb в папку вашего плагина или темы, например, wp-content/uploads/geoip/.

3. Установите PHP-библиотеку для чтения базы через Composer в корне сайта (если есть доступ):

composer require geoip2/geoip2

Если Composer недоступен, можно скачать библиотеку вручную и подключить автозагрузчик.

Пример кода для блокировки входа по стране

Далее создадим функцию, которая на этапе login_init проверит страну и при необходимости остановит вход с сообщением.

function wplogin_block_login_by_country() {
    if ( ! class_exists('GeoIp2\Database\Reader') ) {
        // Библиотека не подключена
        return;
    }
    $allowed_countries = ['RU', 'BY', 'KZ']; // Разрешённые страны, например Россия, Беларусь, Казахстан

    $ip = $_SERVER['REMOTE_ADDR'];
    try {
        $reader = new GeoIp2\Database\Reader(WP_CONTENT_DIR . '/uploads/geoip/GeoLite2-Country.mmdb');
        $record = $reader->country($ip);
        $country_code = $record->country->isoCode;

        if ( ! in_array($country_code, $allowed_countries) ) {
            wp_die('Доступ к странице входа из вашей страны заблокирован.');
            exit;
        }
    } catch (Exception $e) {
        // Ошибка определения страны, пропускаем
    }
}
add_action('login_init', 'wplogin_block_login_by_country');

Этот код проверяет IP пользователя при загрузке страницы входа и блокирует доступ, если страна не входит в список разрешённых.

Использование плагинов для блокировки по стране

Если вы не хотите возиться с кодом, можно использовать плагины. Вот несколько вариантов:

  • iQ Block Country — популярный бесплатный плагин, который умеет блокировать доступ к страницам и разделам сайта по стране. Поддерживает и страницу входа.
  • IP2Location Country Blocker — плагин с поддержкой GeoIP баз и гибкой настройкой блокировок.
  • Clearfy Pro — многофункциональный плагин для оптимизации и безопасности, поддерживает блокировки по IP и странам, а также ускоряет работу сайта.

Плагины просты в использовании: достаточно активировать и в настройках указать страны, которым запретить вход или весь доступ.

Как избежать ошибок и блокировки легитимных пользователей

1. Обязательно проверяйте, что база GeoIP обновлена — устаревшие данные могут заблокировать нужных посетителей.

2. Добавьте возможность для администратора обходить блокировку по IP или через параметр в URL.

3. Тестируйте работу блокировки с разных VPN и прокси.

4. Если есть пользователи из запрещённых стран, предупредите их заранее на сайте и предложите альтернативные способы входа.

Оптимизация и кеширование при использовании геоблокировки

Проверка страны — дополнительная нагрузка на сервер. Чтобы не замедлять сайт, используйте кеширование:

  • Кешируйте результат геолокации в сессии или куках.
  • Если используете Nginx, можно настроить ngx_http_geoip_module для блокировки на уровне сервера.
  • Используйте CDN с поддержкой геоблоков, например Cloudflare, для снижения нагрузки.

Заключение

Блокировка входа в WordPress по стране — эффективный способ защитить сайт от нежелательных попыток взлома и снизить нагрузку. Вы можете реализовать её как с помощью PHP-кода и базы GeoIP2, так и воспользоваться готовыми плагинами, например, Clearfy Pro. Главное — тщательно тестировать настройки и не блокировать легитимных пользователей.

Как запретить удаление пользователей в WordPress для повышения безопасности
23.04.2026
Как удалить или изменить wp-login.php без редиректа в WordPress
15.12.2025
Как добавить логику отключения входа на wp-login.php по времени в WordPress
27.03.2026
Как исправить проблему: не работает вход в WordPress при использовании WooCommerce
19.06.2026
Как отключить вход для неактивных пользователей в WordPress
06.03.2026

wp-login.php - это страница входа в системе управления вордпресс. Если Вы хотите изменить внешний вид страницы входа - читайте здесь. Если вам нужно защитить админку - подробный мануал. Вы можете установить плагин Clearfy, в котором есть функция защиты админки и страницы входа.