Перейти к содержимому
хостинг-вордпресс.рф Просмотреть сайт
Сохранено в 23:21
Опубликовать
хостинг-вордпресс.рф
обновлено 25.08.2026
01 Безопасность WordPress: как защитить сайт и что делать при взломе
Блок: Обложка статьи
безопасность wordpress

Безопасность WordPress: как защитить сайт и что делать при взломе

Редакция хостинг-вордпресс.рф · Команда тестирования 3 минут чтения
Блок: Сводка · TL;DR
Блок: Тело статьи

Массовый взлом WordPress — это не хакер, который выбрал ваш сайт. Это бот, который перебирает адреса и проверяет их на список известных уязвимостей. Ему безразлично, лежит за адресом магазин с оборотом или блог о рыбалке: заражённый сайт нужен как площадка для рассылки спама, редиректов на партнёрки или майнинга. Отсюда следует практический вывод — «мой сайт никому не интересен» не работает как стратегия защиты.

Как на самом деле взламывают WordPress

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

Плагины и темы. Основной канал. Плагин ставили под разовую задачу, автор забросил проект, уязвимость нашли через год — и сайт попадает в очередную волну массовых заражений. Отдельная категория — плагины из «сборников» и nulled-версии премиум-тем с уже встроенным бэкдором.

Учётные данные. Перебор паролей к wp-login.php и xmlrpc.php идёт круглосуточно на любом сайте с момента появления в индексе. Плюс утечки: один и тот же пароль на хостинге и на форуме, который слили в прошлом году.

Окружение. Устаревший PHP без обновлений безопасности, соседний взломанный сайт на том же аккаунте, права 777 на папках, забытая копия сайта в подпапке /old/ с версией WordPress трёхлетней давности.

Пять входов, через которые заходят

Уязвимый плагин или тема

частота: высокая
Как выглядит
Внезапные редиректы на чужие сайты, посторонние файлы в uploads, новые записи в базе.
Чем закрывается
Регулярные обновления, отказ от заброшенных плагинов, удаление неиспользуемых.

Перебор пароля

частота: высокая
Как выглядит
Всплеск запросов к wp-login.php и xmlrpc.php, письма о сбросе пароля, тормоза сайта.
Чем закрывается
Двухфакторная аутентификация, ограничение попыток входа, длинные случайные пароли.

Nulled-тема или плагин

частота: средняя
Как выглядит
Обфусцированный код в functions.php, исходящие соединения с незнакомыми доменами.
Чем закрывается
Только каталог WordPress.org и сайт автора. Скидка не окупает бэкдор.

Соседний сайт на аккаунте

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

Устаревшее окружение

частота: низкая
Как выглядит
Эксплуатация известных дыр PHP или забытая копия сайта в подпапке /old/.
Чем закрывается
Переключение версии PHP в панели, удаление старых копий и тестовых площадок.
Оценка частоты качественная: она отражает, как часто вектор фигурирует в разборах массовых заражений, а не измеренную долю инцидентов на конкретной площадке.

База: что закрыть в первый час

Обновления. Автообновления минорных версий ядра включены по умолчанию, и отключать их не нужно. Плагины и темы обновляйте вручную, но регулярно: раз в неделю зайти в Консоль → Обновления — это пять минут. Для магазина и сайта с кастомной темой обновления сначала накатывают на копию: обновление, сломавшее корзину, обходится дороже, чем отложенное на день.

Двухфакторная аутентификация. Единственная мера, которая полностью закрывает класс атак на пароли. Ставится плагином (Two Factor, WP 2FA), работает через приложение-аутентификатор. Обязательна для всех, у кого роль администратора.

Ограничение попыток входа. Плагин Limit Login Attempts Reloaded или аналог: после пяти неудачных попыток IP блокируется на 20 минут. Побочная польза — падает нагрузка от ботов, которые круглосуточно долбятся в форму входа.

Ревизия пользователей. Пользователи → Все пользователи, фильтр по роли «Администратор». Разработчик, который делал сайт два года назад, подрядчик по рекламе, тестовая учётка «test» — всё это лишние ключи от дома. Правило: администратор нужен только тем, кто действительно администрирует; редактору достаточно роли «Редактор».

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

Плагины и темы — главный риск

Правила, которые снимают большую часть проблем:

  • Ставить только из каталога WordPress.org или у автора. Ни одна экономия не стоит бэкдора в премиум-теме с торрента.
  • Смотреть дату последнего обновления перед установкой. Плагин, не обновлявшийся два года, — кандидат на уязвимость без исправления.
  • Удалять, а не деактивировать. Код деактивированного плагина остаётся на диске и остаётся доступен по прямому URL. Половина заражений через «отключённые» плагины — именно этот сценарий.
  • Проверять аудиторию плагина. Плагин с миллионом установок находится под постоянным вниманием исследователей, и дыры в нём закрываются быстро. Плагин на 200 установок никто не аудирует.
  • Раз в квартал проходить по списку и выкидывать то, чем не пользуетесь.

Отслеживать свежие уязвимости можно через бесплатные фиды — 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 минимум, лучше весь корень) и дамп базы. Копия только файлов бесполезна — в базе весь контент и настройки.

ПровайдерЧто заявлено по бэкапам
FirstByte7 ежедневных, 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 появились файлы со случайными именами, в списке администраторов — незнакомая учётка.

Порядок действий по времени — от изоляции до снятия санкций поисковиков:

Протокол: что делать по шагам
  1. 0–10 мин
    1. Изолировать сайт
    Заглушка или доступ по IP. Пока сайт раздаёт вредоносный код, он набирает санкции поисковиков и заражает посетителей.
  2. 10–25 мин
    2. Снять копию как есть
    Отдельный архив файлов и дамп базы. Это материал для поиска точки входа, а не источник восстановления.
  3. 25–45 мин
    3. Сменить все доступы
    Панель хостинга, FTP, SSH, база, администраторы WordPress. Заодно заменить соли в wp-config.php — это завершит все сессии, включая чужую.
  4. 45–90 мин
    4. Найти закладки
    Сверить ядро и плагины с эталоном, проверить загрузки на PHP-файлы, посмотреть недавно изменённые файлы, список администраторов и запланированные задачи.
  5. 1,5–3 ч
    5. Восстановиться из чистой копии
    Из той, что сделана до заражения. Контент, появившийся после этой даты, переносится вручную.
  6. 3–4 ч
    6. Обновить всё и закрыть дыру
    Ядро, плагины, темы, версия PHP. Если точку входа не закрыть, заражение повторится в течение недели.
  7. после проверки
    7. Снять санкции поисковиков
    Google Search Console — «Проблемы безопасности», запрос на перепроверку. Яндекс.Вебмастер — «Безопасность и нарушения». До перепроверки сайт помечен предупреждением, и трафика практически нет.
Отметки времени ориентировочные, для сайта средних размеров. Важен не хронометраж, а порядок: смена доступов до чистки бесполезна, если бэкдор остался, а чистка без смены доступов — если у взломщика ещё есть ключи.

Команды для поиска закладок

Сверка файлов ядра и плагинов с официальными версиями — первое, что стоит сделать: команда сама покажет изменённые и лишние файлы.

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 даёт то же шифрование, что и платные сертификаты за несколько тысяч рублей. Платные отличаются проверкой организации и страховкой, а не криптографией.

«Плагин безопасности заменяет обновления». Файрвол выигрывает время до установки патча — это его роль. Сайт с плагином безопасности и десятком необновлённых плагинов всё равно уязвим.

Чек-лист

  1. Автообновления ядра включены, плагины и темы обновляются раз в неделю.
  2. Двухфакторная аутентификация у всех администраторов.
  3. Ограничение попыток входа настроено.
  4. В списке администраторов нет посторонних, логина admin не существует.
  5. Права: 755 на папках, 644 на файлах, 600 на wp-config.php.
  6. DISALLOW_FILE_EDIT включён, PHP в uploads запрещён.
  7. Неиспользуемые плагины и темы удалены, а не деактивированы.
  8. PHP не ниже 8.1, версия переключается из панели.
  9. Бэкапы по схеме 3-2-1, восстановление проверялось за последние три месяца.
  10. Хостинг с изоляцией сайтов, если на аккаунте больше одного проекта.
Блок: Детали

Частые вопросы

Нужен ли платный плагин безопасности?
Для большинства сайтов — нет. Бесплатных версий Wordfence или Sucuri хватает для мониторинга целостности файлов и базового файрвола. Платные версии дают более быструю доставку правил и защиту от свежих уязвимостей — это имеет смысл для магазина, где простой стоит денег. Плагин безопасности не заменяет обновления: он лишь выигрывает время.
Помогает ли скрытие версии WordPress?
Практически нет. Сканеры определяют версию по десятку косвенных признаков — путям к файлам, содержимому readme, хэшам статики. Удаление метатега generator не мешает автоматике и создаёт ложное чувство защищённости. Время лучше потратить на обновления и двухфакторную аутентификацию.
Стоит ли отключать XML-RPC?
Если вы не используете приложение WordPress для мобильных, Jetpack и pingback — отключайте. Это стандартная точка перебора паролей, причём один запрос к XML-RPC может содержать сотни попыток входа. Отключается плагином или правилом веб-сервера. При использовании перечисленного лучше не отключать, а закрыть файл ограничением по IP.
Как часто делать резервные копии?
По частоте изменений. Блог с парой публикаций в неделю — ежедневная копия. Магазин, где заказы приходят постоянно, — ежедневный полный бэкап плюс копия базы каждые несколько часов. Проверять восстановление нужно раз в квартал: копия, которую никогда не разворачивали, — это предположение, а не гарантия.
Защитит ли хостинг от взлома?
От уязвимости в вашем плагине — нет. Хостинг отвечает за другое: изоляцию соседей, чтобы взломанный сайт рядом не добрался до вашего, свежий стек, DDoS-фильтрацию и резервные копии, из которых можно восстановиться. Изоляция сайтов заявлена у Beget, Timeweb, NetAngels и Джино; DDoS-защита — у REG.RU, SpaceWeb и FirstByte.
Что делать, если у сайта нет бэкапа, а его взломали?
Тогда чистить руками: сверить ядро через WP-CLI, переустановить все плагины и темы из официальных источников, найти PHP-файлы в загрузках, проверить wp-config.php и .htaccess на посторонние директивы, просмотреть базу на инъекции в опциях и виджетах. Это дольше и рискованнее, чем восстановление из копии, — часть закладок легко пропустить.
Нужно ли менять префикс таблиц с wp_ на другой?
На новом сайте это бесплатная мера, почему бы и нет. На работающем — не трогайте: смена префикса требует правки сериализованных данных и настроек плагинов, и ошибка здесь ломает сайт надёжнее любого взломщика. Реальную защиту от SQL-инъекций даёт актуальный код, а не имя таблицы.
Блок: Кнопки

Перейти к делу?
Каталог хостингов уже здесь.

Сортировка по композитной оценке, фильтры по WooCommerce, ДЦ в РФ и WP-CLI.

К рейтингу 2026
Многоразовый блок — изменения применятся ко всем страницам