Безопасность WordPress: роли пользователей, двухфакторная аутентификация и защита входа
Сначала посчитайте аккаунты: на большинстве сайтов слишком много администраторов
Первый шаг любого взлома WordPress — страница входа. Но взломать её можно только тогда, когда у атакующего есть рабочий логин и пароль. Поэтому безопасность начинается не с установки плагина, а с подсчёта: сколько человек вообще может войти в админку.
У многих сайтов за два года накопилось семь-восемь администраторских аккаунтов: подрядчики, бывшие сотрудники, тестовые учётки, а у некоторых пароль до сих пор 123456. Утечка любого из них — это открытая настежь админка.
Пример из практики: на сайте висели чёрные ссылки, и по логам выяснилось, что вход был с аккаунта подрядчика, уволившегося полгода назад. Человек ушёл, аккаунт остался, а пароль — та самая строка из старой переписки. Атакующему не понадобилась ни одна уязвимость.
Как планировать аккаунты при выборе технологий, читайте в разделе Технологический стек для сайта на WordPress; порядок действий после взлома — в разделе После взлома сайта.
| Роль | Область прав | Кому подходит |
|---|---|---|
| Администратор | Весь сайт: установка плагинов, правка кода, удаление пользователей | Тот, кто реально управляет сайтом, ≤2 человека |
| Редактор | Управляет всем контентом и комментариями | Ответственный за контент |
| Автор | Пишет и управляет только своими записями | Автор-фрилансер |
| Участник | Пишет черновики, но не публикует | Внешний автор по заказу |
| Подписчик | Может только комментировать | Обычный посетитель |
Минимальные права: не давайте тому, кто пишет статьи, устанавливать плагины
Принцип прав простой: аккаунт должен уметь ровно столько, сколько нужно для его работы, и не больше. Контент-менеджеру, который пишет статьи, не нужны установка плагинов и правка темы — хватит Editor или Author. Administrator положен только тому, кто действительно обслуживает сайт.
Увольнение — это два шага: сначала понизить права и отключить аккаунт, неделю-две понаблюдать, не завязаны ли на нём какие-то автоматические задачи, и только потом удалять. Если удалить сразу, можно потерять авторство его записей.
Ещё нужно удалить стандартное имя пользователя admin. Многие инструменты для брутфорса первым делом пробуют именно логин admin, и если он у вас есть, вы отдаёте половину пароля.
Сам пароль тоже должен быть достаточно длинным. Восемь цифр подбором сегодня взламываются мгновенно — считайте, что пароля нет. Для администратора берите не короче двенадцати символов, с заглавными, строчными и знаками, и не повторяйте один и тот же пароль на разных аккаунтах. Именно повторное использование паролей — главная причина успешного подбора учётных данных.
| Роль | Роль | Что нельзя разрешать |
|---|---|---|
| Владелец сайта / технический руководитель | Администратор | — |
| Контент-редактор | Редактор | Устанавливать плагины, править код |
| Автор | Автор | Править чужие записи, менять тему |
| Внешний автор | Участник | Публиковать сразу |
| Стажёр / временный сотрудник | Участник | Любые права на публикацию |
Три. Двухфакторная аутентификация: ещё один замок вдобавок к паролю
Смысл двухфакторной аутентификации (2FA) в том, что даже при утечке пароля злоумышленник не войдёт без одноразового кода с вашего телефона. Это самый действенный барьер против подбора учётных данных, ведь он как раз и строится на том, что «пароль утёк где-то ещё».
Выбирайте TOTP-приложение (Google Authenticator, Authy и подобные), а не SMS. Код из SMS можно перехватить через подмену SIM-карты, а TOTP генерируется на устройстве и от оператора не зависит.
Обязательное правило вводится в два шага: для роли Administrator включайте сразу — без 2FA вход запрещён; остальным ролям дайте две недели, после чего аккаунт блокируется автоматически. Как настроить — см. раздел о защите сайта Усиление безопасности собственного сайта.
Пример из практики третий: в команде пять человек, и сначала 2FA включил только технический руководитель. Однажды из письма утёк пароль маркетолога, злоумышленник подобрал его и вошёл в админку — второй замок не сработал, потому что у маркетолога 2FA не было. Через две недели 2FA включили для всех, и только тогда эта угроза закрылась по-настоящему.
| Способ 2FA | Безопасность | Рекомендация |
|---|---|---|
| TOTP-приложение | Высокая: код создаётся на устройстве, без сети | Рекомендуем для всех |
| Код из SMS | Средняя: возможна подмена SIM-карты | Не рекомендуем как основной способ |
| Код из письма | Низкая: почту часто взламывают вместе с паролем | Только как запасной |
| Аппаратный ключ | Максимальная | Администратор может подключить по желанию |
Четыре. Защита входа: ограничение попыток и блокировка работают лучше смены адреса
Здесь стоит развеять популярное заблуждение. Во многих инструкциях советуют переименовать /wp-admin во что-нибудь необычное — якобы так злоумышленник не найдёт админку. На деле целенаправленный атакующий просканирует сайт и найдёт страницу входа; смена адреса лишь немного усложняет ему жизнь, но от подбора не спасает.
Работают две вещи: блокировка IP на время после пяти неудачных попыток входа (например, на 15 минут) — так автоматический подбор захлёбывается; и отключение публикации через XML-RPC — через него идут многие скрипты массового подбора.
Пример из практики второй: в логах видно, что некий IP за час перебрал 800 паролей, а имена пользователей — сплошь распространённые. После включения блокировки этот IP отсеялся на шестой попытке, а все следующие отклонялись мгновенно.
Ещё деталь: пусть страница входа при каждой неудаче отвечает с небольшой задержкой — тогда массовый перебор паролей обходится скрипту дороже. А когда сайт вырастет, поставьте перед страницей входа облачный WAF: распределённый подбор учётных данных будет отсекаться ещё до того, как дойдёт до WordPress.
| Действие защиты | Что даёт | Ограничения |
|---|---|---|
| Блокировка IP после 5 неудач | Останавливает автоматический подбор | Распределённые атаки требуют облачного WAF |
| Отключите XML-RPC | Закройте вход для скриптов | Оставьте, если публикуете через приложение |
| Скройте версию WP | Не показывайте уязвимости старых версий | Это лишь сокращает утечку информации |
| Смените адрес админки | Немного усложняет сканирование | Не остановит целевые атаки |
| Запретите редактирование файлов из админки | Защита от смены темы после взлома | Правки кода — только через SFTP |
Пять: что ещё нужно — резервные копии, мониторинг и минимальная поверхность атаки
Как бы хорошо вы ни защищались, всегда исходите из того, что однажды вас взломают, поэтому резервная копия — последняя страховка. Базу данных и файлы копируйте раздельно, храните в другом месте и раз в квартал проводите тренировку по восстановлению: копия, которую нельзя восстановить, — не копия. Как это делать, читайте в статье 独立站备份策略.
Поверхность атаки нужно постоянно сокращать: удаляйте неиспользуемые плагины и темы — каждый заброшенный плагин это потенциальная уязвимость. Мониторинг админки должен оповещать о подозрительных входах, например, вход администратора из нетипичного региона или в нерабочее время. Пороги мониторинга описаны в статье 独立站监控体系.
Есть ещё одно жёсткое правило: если пароль от какого-то сервиса утёк, смените пароли всех аккаунтов на сайте. Атака перебором подставит эту строку к вашей админке, и вся защита рухнет, как только пароль окажется верным.
| Действие | Частота | Критерий нормы |
|---|---|---|
| Проверьте учётные записи администраторов | Ежемесячно | administrator ≤2个 |
| Проверьте заброшенные плагины и темы | Ежеквартально | Отключили — удалите |
| Учения по восстановлению из бэкапа | Раз в квартал | Восстановление за 2 часа |
| Оповещение о подозрительном входе | В реальном времени | Мгновенное уведомление о входе из другого региона |
| Смена паролей | Сразу после утечки | Смена паролей всеми и включение 2FA |
FAQ: частые вопросы
Достаточно ли установить один плагин безопасности для WordPress?
Поможет ли смена пути /wp-admin защититься от хакеров?
Можно ли использовать SMS-коды для двухфакторной аутентификации?
Что делать с учётной записью WordPress уволенного сотрудника?
Сколько аккаунтов Administrator стоит оставлять?
Как выглядит брутфорс в логах?
В заключение
Безопасность WordPress — вещь контринтуитивная: кажется, что нужны сложные плагины и хитрые правила, а на самом деле судьбу сайта решает то, удалили ли вы лишних администраторов и поставили ли на каждый аккаунт второй замок. Эти две вещи ничего не стоят, но останавливают большинство вторжений.
Три шага на практике: сегодня просмотрите список пользователей и сократите число administrator до двух; включите всем администраторам обязательный TOTP-двухфактор; настройте блокировку после 5 неудачных входов и отключите XML-RPC. Дальше — раз в месяц проверяйте аккаунты, раз в квартал проводите учения по восстановлению.
Запомните одну фразу: безопасность — это не навесить на дверь хитрые замки, а сначала забрать ключи у тех, кому они не положены.
