Уязвимый плагин или тема
частота: высокая- Как выглядит
- Внезапные редиректы на чужие сайты, посторонние файлы в uploads, новые записи в базе.
- Чем закрывается
- Регулярные обновления, отказ от заброшенных плагинов, удаление неиспользуемых.
Массовый взлом WordPress — это не хакер, который выбрал ваш сайт. Это бот, который перебирает адреса и проверяет их на список известных уязвимостей. Ему безразлично, лежит за адресом магазин с оборотом или блог о рыбалке: заражённый сайт нужен как площадка для рассылки спама, редиректов на партнёрки или майнинга. Отсюда следует практический вывод — «мой сайт никому не интересен» не работает как стратегия защиты.
Ядро WordPress — самая проверенная часть системы: у него открытый код, отдельная команда безопасности и автообновления минорных версий, включённые по умолчанию. Проблемы приходят с трёх других сторон.
Плагины и темы. Основной канал. Плагин ставили под разовую задачу, автор забросил проект, уязвимость нашли через год — и сайт попадает в очередную волну массовых заражений. Отдельная категория — плагины из «сборников» и nulled-версии премиум-тем с уже встроенным бэкдором.
Учётные данные. Перебор паролей к wp-login.php и xmlrpc.php идёт круглосуточно на любом сайте с момента появления в индексе. Плюс утечки: один и тот же пароль на хостинге и на форуме, который слили в прошлом году.
Окружение. Устаревший PHP без обновлений безопасности, соседний взломанный сайт на том же аккаунте, права 777 на папках, забытая копия сайта в подпапке /old/ с версией WordPress трёхлетней давности.
Обновления. Автообновления минорных версий ядра включены по умолчанию, и отключать их не нужно. Плагины и темы обновляйте вручную, но регулярно: раз в неделю зайти в Консоль → Обновления — это пять минут. Для магазина и сайта с кастомной темой обновления сначала накатывают на копию: обновление, сломавшее корзину, обходится дороже, чем отложенное на день.
Двухфакторная аутентификация. Единственная мера, которая полностью закрывает класс атак на пароли. Ставится плагином (Two Factor, WP 2FA), работает через приложение-аутентификатор. Обязательна для всех, у кого роль администратора.
Ограничение попыток входа. Плагин Limit Login Attempts Reloaded или аналог: после пяти неудачных попыток IP блокируется на 20 минут. Побочная польза — падает нагрузка от ботов, которые круглосуточно долбятся в форму входа.
Ревизия пользователей. Пользователи → Все пользователи, фильтр по роли «Администратор». Разработчик, который делал сайт два года назад, подрядчик по рекламе, тестовая учётка «test» — всё это лишние ключи от дома. Правило: администратор нужен только тем, кто действительно администрирует; редактору достаточно роли «Редактор».
Пароли. Менеджер паролей и случайные строки, разные для хостинга, FTP, базы и админки. Пароль, который вы можете вспомнить, скорее всего есть в словаре перебора.
Правила, которые снимают большую часть проблем:
Отслеживать свежие уязвимости можно через бесплатные фиды — Patchstack и WPScan публикуют базы уязвимостей плагинов; Wordfence присылает уведомления по установленному набору.
Права. Каталоги 755, файлы 644, wp-config.php — 600 или 640. Права 777 не нужны никогда: они означают, что записывать в папку может любой процесс на сервере, включая процесс соседнего заражённого сайта.
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chmod 600 wp-config.php
Запрет редактора кода. Получив доступ к админке, взломщик первым делом идёт во встроенный редактор тем и дописывает код в functions.php. Закрывается одной строкой в wp-config.php:
define( 'DISALLOW_FILE_EDIT', true );
Запрет выполнения PHP в загрузках. В wp-content/uploads не должно быть исполняемого кода — там место картинкам и документам. Правило для Apache в файле wp-content/uploads/.htaccess:
<FilesMatch "\.(php|phtml|php3|php5|phps)$">
Require all denied
</FilesMatch>
Это ломает популярный сценарий, когда через дыру в плагине загружают «картинку» с PHP-кодом и потом открывают её напрямую.
Соли. Восемь констант в wp-config.php, которыми подписываются cookies сессий. Если они остались из образца конфигурации или утекли — генерируйте новые на api.wordpress.org/secret-key/1.1/salt/. Побочный эффект замены: все текущие сессии завершаются, включая сессию взломщика.
XML-RPC. Если не пользуетесь мобильным приложением WordPress, Jetpack и pingback — закрывайте. Один запрос к xmlrpc.php методом system.multicall может содержать сотни попыток авторизации, поэтому перебор через него эффективнее, чем через форму входа.
Всё перечисленное снижает вероятность взлома. Резервная копия — то, что определяет последствия, когда взлом всё-таки случился.
Рабочая схема называется 3-2-1: три копии данных, на двух разных носителях, одна — вне площадки. В переводе на хостинг это означает: копия у провайдера, копия в облаке (Яндекс.Диск, S3-совместимое хранилище) и рабочий сайт. Копия, которая лежит на том же сервере, что и сайт, при компрометации аккаунта пропадает вместе с ним.
Что должно быть в копии: файлы (wp-content минимум, лучше весь корень) и дамп базы. Копия только файлов бесполезна — в базе весь контент и настройки.
| Провайдер | Что заявлено по бэкапам |
|---|---|
| FirstByte | 7 ежедневных, 2 еженедельных, 1 ежемесячная копия |
| REG.RU | хранение 30 копий |
| NetAngels | ежедневные копии в отдельных дата-центрах |
| Beget, Timeweb, SpaceWeb, Джино | ежедневные автоматические копии |
| RuVDS, FirstVDS | автобэкапы в базовом тарифе не заявлены — настраиваете сами |
Данные с официальных сайтов провайдеров, проверено в августе 2026. Условия по каждому — в рейтинге хостингов.
Независимую копию делают плагином UpdraftPlus (бесплатной версии хватает) или через WP-CLI по расписанию. И главное: раз в квартал разворачивайте копию на тестовой площадке. Копия, которую ни разу не восстанавливали, — это надежда, а не бэкап.
Провайдер не отвечает за дыру в вашем плагине. Он отвечает за то, насколько тяжёлыми будут последствия.
Изоляция сайтов. На виртуальном хостинге без изоляции взломанный сайт соседа может достучаться до файлов вашего. Изоляция заявлена у Beget и Timeweb на всех тарифах, у NetAngels она контейнерная, у Джино разделяются ресурсы. Если у вас на одном аккаунте несколько сайтов, изоляция важна вдвойне: заражение одного не должно распространяться на остальные.
Свежий стек. Возможность переключить PHP из панели — это не про скорость, а про получение обновлений безопасности. Самый широкий выбор версий в каталоге у REG.RU (от 5.2 до 8.5) и SpaceWeb (до 8.5), у FirstByte потолок — 8.2.
DDoS-фильтрация. У REG.RU заявлена защита на уровнях L3/L4 и L7, DDoS-фильтрация есть также у SpaceWeb и FirstByte. Для небольшого сайта это редко актуально, для магазина в сезон распродаж — вполне.
Антивирусный мониторинг. Встречается как платная опция: у Джино это 297 ₽/мес. Полезен как система раннего оповещения, но не как замена обновлениям.
Разбор того, какие пункты тарифа действительно влияют на устойчивость сайта, — в чек-листе выбора хостинга. Если сайт живёт на тарифе без изоляции и без внятных бэкапов, разумнее переехать заранее, чем после инцидента: порядок переноса занимает пару часов.
Признаки: браузер показывает предупреждение, в выдаче у сайта появились чужие страницы про казино, хостинг прислал уведомление о рассылке спама, в wp-content появились файлы со случайными именами, в списке администраторов — незнакомая учётка.
Порядок действий по времени — от изоляции до снятия санкций поисковиков:
Сверка файлов ядра и плагинов с официальными версиями — первое, что стоит сделать: команда сама покажет изменённые и лишние файлы.
wp core verify-checksums
wp plugin verify-checksums --all
Дальше ручной обход типовых мест:
# исполняемый код там, где его быть не должно
find wp-content/uploads -name "*.php"
# всё, что менялось за последние две недели
find . -type f -mtime -14 -name "*.php"
# чужие задачи в планировщике и лишние администраторы
wp cron event list
wp user list --role=administrator
Отдельно просмотрите .htaccess в корне и в wp-content на посторонние директивы RewriteRule, а в базе — таблицу wp_options на записи с внешними адресами.
Если своими силами не получается, у части провайдеров лечение сайта есть как услуга — обычно платная. Это дешевле, чем оставить бэкдор и получить повторное заражение через месяц.
«Смена адреса админки защищает». Перенос wp-login.php на другой адрес отсекает часть тупых ботов и добавляет неудобства вам. От целевой атаки не защищает никак: адрес входа находится по косвенным признакам.
«Скрытие версии WordPress». Версия определяется по путям, readme, хэшам файлов. Метатег generator к делу не относится.
«Бесплатный SSL — значит ненадёжный». Let’s Encrypt даёт то же шифрование, что и платные сертификаты за несколько тысяч рублей. Платные отличаются проверкой организации и страховкой, а не криптографией.
«Плагин безопасности заменяет обновления». Файрвол выигрывает время до установки патча — это его роль. Сайт с плагином безопасности и десятком необновлённых плагинов всё равно уязвим.
admin не существует.wp-config.php.DISALLOW_FILE_EDIT включён, PHP в uploads запрещён.Сортировка по композитной оценке, фильтры по WooCommerce, ДЦ в РФ и WP-CLI.
К рейтингу 2026