Как запретить доступ к wp-login.php по IP в WordPress

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

Почему стоит ограничить доступ к wp-login.php по IP

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

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

Давайте рассмотрим, как реализовать такую защиту на уровне сервера и средствами WordPress.

Ограничение доступа через .htaccess (для Apache)

Самый распространенный и простой способ — использовать файл .htaccess в корне WordPress для ограничения доступа к wp-login.php по IP. Для этого добавьте в .htaccess следующий блок:

# Ограничение доступа к wp-login.php
<Files wp-login.php>
    Order Deny,Allow
    Deny from all
    Allow from 123.45.67.89
    Allow from 98.76.54.32
</Files>

Замените 123.45.67.89 и 98.76.54.32 на те IP-адреса, которым вы хотите разрешить доступ. Все остальные будут получать ошибку 403 Forbidden.

Если ваш сервер использует Apache версии 2.4 и выше, директивы изменятся на:

# Ограничение доступа к wp-login.php для Apache 2.4+
<Files "wp-login.php">
    Require ip 123.45.67.89
    Require ip 98.76.54.32
</Files>

Этот способ не требует установки плагинов и работает на уровне веб-сервера, что делает его быстрым и надежным.

Ограничение доступа через Nginx

Если ваш сайт работает на Nginx, настройка производится в конфигурационном файле сайта. Добавьте следующий блок в секцию server или location, чтобы ограничить доступ к wp-login.php:

location = /wp-login.php {
    allow 123.45.67.89;
    allow 98.76.54.32;
    deny all;
    include fastcgi_params;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}

Не забудьте заменить IP на свои доверенные адреса и перезагрузить Nginx командой sudo systemctl reload nginx.

Ограничение доступа с помощью плагина WPLoginAccessControl

Если у вас нет доступа к конфигурации сервера или вы предпочитаете управлять разрешениями из панели WordPress, можно использовать плагин WPLoginAccessControl. Он позволяет легко ограничивать доступ к странице входа по IP, а также настраивать белые и черные списки.

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

Собственное решение на PHP для ограничения доступа к wp-login.php

Для более тонкой настройки можно добавить проверку IP прямо в файл wp-login.php или, что безопаснее, в файл functions.php вашей темы (лучше дочерней) или создать небольшой плагин. Рассмотрим пример функции, которая блокирует доступ по IP:

function wplogin_deny_wp_login_by_ip() {
    $allowed_ips = array('123.45.67.89', '98.76.54.32');
    $user_ip = $_SERVER['REMOTE_ADDR'];
    if (strpos($_SERVER['REQUEST_URI'], 'wp-login.php') !== false && !in_array($user_ip, $allowed_ips)) {
        wp_die('Доступ к странице входа запрещен с вашего IP.');
        exit;
    }
}
add_action('init', 'wplogin_deny_wp_login_by_ip');

Этот код проверяет IP пользователя при каждом запросе wp-login.php и выводит сообщение об ошибке, если IP не входит в список разрешенных. Такой метод полезен, если вы хотите контролировать доступ на уровне приложения, а не сервера.

Преимущества и недостатки собственного кода

  • Преимущество — гибкость и возможность интеграции с другими функциями сайта.
  • Недостаток — возможно, чуть более высокая нагрузка, чем у серверных решений.

Комбинация методов для максимальной безопасности

Оптимальным решением будет использовать несколько уровней защиты:

  • Ограничение доступа на уровне сервера (.htaccess или Nginx).
  • Дополнительная проверка IP через PHP-код или плагин.
  • Использование плагинов для защиты входа (например, многофакторная аутентификация или блокировка по количеству попыток).

Такой подход существенно снизит риск взлома и сохранит доступ к админке только для вас и ваших доверенных пользователей.

Советы по работе с динамическими IP

Если у вас динамический IP, стоит рассмотреть следующие варианты:

  1. Используйте VPN с фиксированным IP и разрешите доступ только с его адреса.
  2. Настройте плагин, который позволяет добавлять временные IP в белый список.
  3. Используйте плагин вроде Clearfy Pro, который имеет функции оптимизации безопасности и может помочь с управлением доступом.

Заключение

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

Как добавить защиту reCAPTCHA на страницу входа в WordPress
23.01.2026
Как исправить ошибку 429 Too Many Requests при входе в WordPress
15.06.2026
Как отключить кеширование страницы входа в WordPress
15.02.2026
Как добавить логику отключения входа на wp-login.php по времени в WordPress
11.02.2026
Как использовать WP-Cron для автоматизации задач в WordPress
08.12.2025

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