WordPress не делает сайт уязвимым сам по себе. Ядро системы проверяют тысячи разработчиков, и серьёзные уязвимости в нём редки. Проблемы приходят из другого места: из плагина, который не обновлялся полгода, пароля admin123 и файлов, открытых на запись всем подряд.
Коротко
Что сделаем за час
- Включим автообновления и уберём лишние плагины
- Закроем вход двухфакторной аутентификацией
- Выставим права на файлы и запретим PHP в uploads
- Настроим файрвол, SSH по ключу и fail2ban
Главные риски
- Плагины: в них 91% найденных уязвимостей
- Логин admin и слабые пароли
- Файлы, открытые на запись всем
- Массовые атаки на свежие уязвимости начинаются в течение часов
Содержание
Откуда приходят взломы
Данные отчёта Patchstack о безопасности WordPress за 2025 год:
Распределение по экосистеме показательно:
| Где найдены уязвимости | Доля |
|---|---|
| Плагины | 91% |
| Темы | 9% |
| Ядро WordPress | 6 уязвимостей за год, все низкого приоритета |
Время до атаки ещё важнее, чем число уязвимостей. Боты сканируют сайты автоматически и не выбирают цели: им неважно, известный это магазин или блог на двадцать посетителей.
Безопасность WordPress держится в первую очередь на дисциплине обновлений и минимуме лишних плагинов.
Хорошая новость в том, что базовая защита закрывает большинство реальных атак и занимает около часа.
1Обновления10 мин
- Включите автообновления ядра для второстепенных и защитных версий. В современных версиях WordPress они включены по умолчанию: проверьте, что их не отключил плагин или хостинг.
- Включите автообновления плагинов и тем в разделе плагинов. Для небольших сайтов риск сломать что-то обновлением ниже, чем риск пропустить исправление уязвимости.
- Удалите неиспользуемые плагины и темы. Отключённый плагин по-прежнему лежит на сервере, и его уязвимый файл может быть доступен напрямую. Оставьте одну резервную тему по умолчанию.
Не ставьте плагины и темы из неофициальных источников. «Бесплатные» версии платных плагинов входят в число самых частых способов получить вредоносный код на сайт.
Перед массовым обновлением на важном сайте сделайте резервную копию. Как настроить копии, которые запускаются автоматически, мы разобрали в статье про резервные копии.
2Учётные записи и вход15 мин
Уникальный логин администратора
Не admin и не название сайта: это первое, что подставляют боты.
Длинные уникальные пароли
Из менеджера паролей, для всех администраторов и редакторов.
Двухфакторная аутентификация
Руководство WordPress рекомендует двухэтапную проверку: пароль плюс код из приложения на телефоне. Ставится плагином за пять минут и закрывает атаки с украденным паролем.
Минимальные права
Автору статей не нужна роль администратора. Проверьте список пользователей и понизьте лишние права.
Ограничение попыток входа
Плагин ограничения попыток или правило на уровне сервера блокирует подбор паролей.
3Настройки WordPress10 мин
Откройте wp-config.php и добавьте две строки выше комментария «Это всё, дальше не редактируем»:
define( 'DISALLOW_FILE_EDIT', true );
define( 'WP_DEBUG', false );
DISALLOW_FILE_EDIT
Отключает встроенный редактор файлов тем и плагинов в админке. Даже получив доступ к учётной записи администратора, злоумышленник не сможет через браузер вписать вредоносный код в файлы сайта.
WP_DEBUG false
Гарантирует, что на рабочем сайте не выводятся сообщения об ошибках, которые раскрывают пути и детали кода.
После сохранения wp-config.php встроенного редактора файлов тем и плагинов в админке больше нет.
Если не публикуете записи из мобильного приложения, XML-RPC не нужен. Через него подбирают пароли пачками, по многу попыток за один запрос.
4Права на файлы10 мин
Руководство WordPress рекомендует выдавать права на запись как можно уже и расширять их только там, где это нужно. Типовая схема для своего сервера (вместо example.com подставьте каталог вашего сайта):
cd /var/www/example.com
chown -R www-data:www-data .
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chmod 640 wp-config.php
Каталоги получают 755, файлы 644, а wp-config.php с паролем базы данных закрывается от чтения другими пользователями сервера.
С такими правами файл может переписать любой процесс на сервере.
Отдельно запретите выполнение PHP в каталоге загрузок, где должны лежать только картинки и документы. Для Nginx:
location ~* /wp-content/uploads/.*\.php$ {
deny all;
}
Это правило обезвреживает один из самых частых сценариев взлома: загрузку PHP-файла под видом картинки через уязвимую форму.
deny all для PHP в uploads не даёт такому файлу выполниться.5Сервер15 мин
WordPress настолько безопасен, насколько безопасен сервер под ним.
| Мера | Что даёт |
|---|---|
| Файрвол | открыты только SSH, 80 и 443 |
| Вход по SSH по ключу | вход по паролю отключён |
| fail2ban | блокирует IP после серии неудачных попыток входа по SSH |
unattended-upgrades | автоматические обновления безопасности системы |
| Отдельный пользователь базы данных на каждый сайт | если взломают один сайт, остальные базы на сервере останутся недоступны |
| Скрытый IP сервера за прокси Cloudflare | сокращает прямые атаки на сервер |
Как подключить домен к Cloudflare, мы разобрали в инструкции по Cloudflare. А как подготовить сервер с файрволом, отдельной базой и сертификатом с нуля, описано в статье как развернуть WordPress на своём сервере.
Признаки того, что сайт уже взломан
Чужие страницы в поиске
По запросу site:example.com находятся страницы на чужие темы или на другом языке.
Редирект только с мобильных
Посетители с мобильных попадают на сторонние сайты, а вы с компьютера нет.
Неизвестные администраторы
Они появились в списке пользователей.
Незнакомые PHP-файлы
Они лежат в каталоге uploads или в корне сайта.
Скачок нагрузки
Резко выросла нагрузка на сервер или исходящий трафик.
Предупреждение
Его прислали хостинг-провайдер или Search Console.
- Восстановите сайт из копии, сделанной до взлома.
- Смените все пароли и ключи в
wp-config.php. - Обновите всё.
- Закройте уязвимость, через которую произошёл взлом.
Чеклист на час
Отмечайте пункты, отметки сохранятся в этом браузере.
Что из чеклиста Kesyio делает сам
При развёртывании сайта на WordPress Kesyio:
- создаёт для него отдельную базу данных с отдельным пользователем;
- выставляет владельца файлов
www-dataи права755для каталогов и644для файлов; - при подготовке сервера открывает в файрволе порты 80 и 443.
Остальные шаги остаются на вашей стороне: двухфакторная аутентификация, обновления, запрет PHP в каталоге загрузок и настройка SSH. Сервер ваш, и доступ к нему контролируете вы.
Вопросы и ответы
Нужен ли плагин безопасности?
Не обязателен. Большую часть защиты дают обновления, двухфакторная аутентификация, права на файлы и настройки сервера из этой статьи. Плагин безопасности полезен как дополнительный слой: сканирование файлов, журнал входов, уведомления. Но он не заменяет обновления.
Помогает ли смена адреса входа в админку?
Сокращает шум от ботов в журналах, но не защищает от целенаправленной атаки. Двухфакторная аутентификация и ограничение попыток входа дают гораздо больше.
Как часто нужно обновлять плагины?
Как можно быстрее после выхода исправлений безопасности: массовые атаки на свежие уязвимости начинаются в течение часов. Поэтому для большинства сайтов автообновления надёжнее ручных.
Безопаснее ли статичный сайт?
Да, у статичного сайта нет PHP, базы данных и плагинов, а значит, нет и большей части поверхности атаки. Если сайту не нужны функции CMS, это весомый аргумент в пользу статики. Сравнение: HTML или WordPress.
Итог
- Большинство взломов WordPress проходит через устаревшие плагины, слабые пароли и слишком широкие права.
- Час на обновления, двухфакторную аутентификацию, настройку прав и сервера закрывает основную часть рисков.
- Сделайте это сразу после запуска сайта и добавьте регулярные резервные копии, чтобы любую ошибку можно было откатить.


