BotBan

Защита WordPress от перебора паролей

Перебор паролей в WordPress идёт круглосуточно у всех. Меры по порядку — от тех, что решают проблему, до косметических.

3 мин чтения

Перебор паролей в WordPress — фоновый шум интернета. Он идёт у всех, не прекращается никогда и не требует, чтобы ваш сайт был чем-то интересен: достаточно, что он существует.

Меры ниже — по убыванию пользы.

Отключить xmlrpc.php

Самое полезное действие. xmlrpc.php позволяет проверять пароли пачками: один запрос — сотня комбинаций. Это на порядки эффективнее для атакующего, чем обычная форма входа.

Если вы не пользуетесь приложением WordPress на телефоне и не публикуете через сторонние редакторы, файл не нужен:

location = /xmlrpc.php {
    deny all;
}

Ограничить попытки входа

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

Ограничение способа: он видит только свою CMS и только страницу входа. Тот же адрес, который перебирает пароли, обычно до этого сканировал пути и обходил каталог — плагин про это не знает.

Ограничить доступ к админке по IP

Если вы заходите в админку из одного-двух мест, это лучшая мера:

location = /wp-login.php {
    allow 203.0.113.7;
    deny all;
}

Не подойдёт, если у вас динамический адрес или несколько редакторов в разъездах.

Двухфакторный вход

Не останавливает перебор, но делает его бессмысленным: даже угаданный пароль не пускает. Стоит включить всем администраторам.

Сменить адрес входа

Плагины, переносящие вход с /wp-login.php на /moy-vhod. Массовые переборщики действительно отсекаются: они ходят по стандартным адресам.

Но это защита через незаметность. Целевой сканер найдёт новый адрес по редиректам и по кодам ответа. Мера полезная, но не основная.

Чего не делать

Не рассчитывайте на сложный пароль как на единственную меру. Он защищает от угадывания, но не снимает нагрузку: сервер всё равно проверяет каждую попытку, а проверка пароля — операция тяжёлая по замыслу. Тысяча попыток в минуту кладёт сайт и без успешного входа.

Не блокируйте по одному факту обращения к странице входа. Владелец сайта тоже туда ходит. Штрафовать за визит — верный способ однажды закрыть себе доступ в собственную админку. Считать нужно частоту.

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

Что даёт антибот сверх этого

Он видит весь трафик сайта, а не только страницу входа. К моменту первой попытки входа адрес, который до этого сканировал /.env и обходил каталог, уже под подозрением. Плюс решение принимается до загрузки WordPress — тяжёлая часть работы вообще не выполняется, и нагрузка от перебора не доходит до PHP и базы.

Читайте также