Веб-разработка

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

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

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

Если вы только что установили WordPress, в первую очередь сделайте четыре вещи: обновите ядро, тему и плагины до актуальных версий, задайте администратору уникальный логин и длинный пароль с двухфакторной аутентификацией, отключите встроенный редактор файлов и настройте автоматическое резервное копирование. Эти шаги занимают час-два и закрывают большую часть типовых сценариев взлома.

WordPress — самая распространённая CMS в мире, поэтому именно на неё нацелены массовые автоматические атаки. Боты не выбирают жертву вручную: они перебирают пароли на странице входа, ищут известные уязвимости в старых версиях плагинов и тем, проверяют открытые служебные файлы. Само ядро WordPress обновляется регулярно и считается достаточно надёжным, а основная часть реальных взломов происходит через устаревшие расширения, слабые пароли и небрежные настройки хостинга.

Базовая защита не делает сайт неуязвимым, но переводит его из категории «лёгкая добыча» в категорию «проще пройти мимо». Ниже — порядок действий, который мы в Pear Advert выполняем на каждом новом сайте на WordPress, с пояснениями, зачем нужен каждый шаг.

Официальное руководство WordPress по усилению защиты сайта (Hardening WordPress)
Официальное руководство WordPress по усилению защиты сайта (Hardening WordPress)

1. Обновления ядра, тем и плагинов

Начиная с версии 3.7 WordPress умеет сам устанавливать минорные обновления ядра, которые обычно содержат исправления безопасности. Не отключайте этот механизм. С версии 5.5 автообновление можно включить и для отдельных плагинов и тем: на странице «Плагины» у каждого расширения есть ссылка «Включить автообновления». Для небольших сайтов-визиток мы рекомендуем включать её для всех проверенных плагинов; для интернет-магазинов и сложных проектов надёжнее обновлять вручную после проверки на копии сайта.

Сразу после установки удалите всё лишнее: неактивные темы (оставьте одну стандартную тему как запасную), демо-плагины, расширения, которые вы поставили «попробовать». Неактивный плагин с уязвимостью всё равно лежит на сервере, и его файлы могут быть доступны напрямую. Устанавливайте расширения только из официального каталога wordpress.org или с сайтов разработчиков. «Бесплатные» версии платных тем и плагинов из сомнительных источников — одна из самых частых причин заражения: в них нередко заранее встроен бэкдор.

2. Учётные записи, пароли и двухфакторная аутентификация

Не используйте логин admin и любые варианты с названием сайта или домена: такие имена перебирают в первую очередь. Пароль администратора должен быть длинным (от 16 символов) и уникальным — сгенерируйте его встроенным генератором WordPress или менеджером паролей. Проверьте раздел «Пользователи»: у каждого сотрудника должна быть своя учётная запись, а не общий логин на всех.

Выдавайте минимально необходимые роли. В WordPress есть роли «Администратор», «Редактор», «Автор», «Участник» и «Подписчик». Контент-менеджеру, который публикует новости, достаточно роли «Редактор» — он не сможет устанавливать плагины и менять настройки. Администраторов на сайте должно быть один-два человека. Учётные записи уволенных сотрудников и подрядчиков удаляйте сразу после окончания работ.

Двухфакторной аутентификации в ядре WordPress нет, её добавляют плагином. Подойдут, например, официальный плагин Two Factor или модуль входа в составе Wordfence. После включения при входе нужно будет ввести код из приложения-аутентификатора на телефоне. Это защищает даже тогда, когда пароль утёк. Также в профиле пользователя есть раздел «Пароли приложений» (Application Passwords) — если вы не подключаете к сайту внешние сервисы через REST API, проверьте, что там нет лишних записей.

3. Защита страницы входа и административной панели

Страница wp-login.php и адрес /wp-admin/ одинаковы на всех сайтах WordPress, поэтому боты атакуют их постоянно. Задача — ограничить количество попыток входа. По умолчанию WordPress не ограничивает перебор паролей, поэтому установите плагин, который блокирует IP после нескольких неудачных попыток (такая функция есть в Wordfence, Solid Security и отдельных плагинах вроде Limit Login Attempts Reloaded). Дополнительно можно добавить капчу на форму входа.

Если сайтом управляют из офиса со статическим IP-адресом, надёжный вариант — разрешить доступ к wp-login.php только с этого адреса на уровне веб-сервера или панели хостинга. Ещё один популярный приём — смена адреса страницы входа плагином. Он снижает шум от ботов в журналах, но сам по себе не является защитой: относитесь к нему как к дополнению, а не к замене ограничения попыток и 2FA.

Отдельно решите вопрос с файлом xmlrpc.php. Этот интерфейс нужен для старых мобильных приложений, пингбэков и некоторых интеграций (например, Jetpack). Если вы ими не пользуетесь, XML-RPC лучше отключить — через него тоже перебирают пароли, причём много вариантов за один запрос.

4. Файл wp-config.php и права доступа к файлам

В wp-config.php хранятся доступы к базе данных и секретные ключи. Официальное руководство WordPress по безопасности рекомендует следующие настройки:

  • добавить строку define( 'DISALLOW_FILE_EDIT', true ); — она отключает встроенный редактор файлов тем и плагинов в админке. Если злоумышленник всё же попадёт в панель, он не сможет одним кликом вписать вредоносный код;
  • проверить, что секретные ключи и «соли» (константы AUTH_KEY, SECURE_AUTH_KEY и другие) заполнены уникальными значениями. Их можно сгенерировать на официальном сервисе api.wordpress.org; после замены все пользователи будут разлогинены — это нормально;
  • убедиться, что константа WP_DEBUG на рабочем сайте выключена, иначе ошибки PHP с путями к файлам будут видны посетителям.

Права доступа к файлам по рекомендации WordPress: для каталогов — 755, для файлов — 644, для wp-config.php — 440 или 400, если это допускает конфигурация хостинга. Права 777 на каталоги не нужны никогда, даже «чтобы загружались картинки». Также полезно запретить выполнение PHP-файлов в каталоге wp-content/uploads: туда попадают загружаемые файлы, и исполняемому коду там делать нечего.

Объект Рекомендуемые права
Каталоги 755
Обычные файлы 644
wp-config.php 440 или 400

5. Плагин безопасности: что он даёт и как не перестараться

Плагин безопасности объединяет несколько функций: файрвол уровня приложения, сканер вредоносного кода, ограничение попыток входа, двухфакторную аутентификацию, журнал событий. Самый распространённый вариант — Wordfence Security (более 5 млн активных установок). Его бесплатная версия включает файрвол, сканер файлов ядра, тем и плагинов с их сравнением с оригиналами из каталога wordpress.org, 2FA и капчу на форме входа, ограничение частоты запросов и просмотр живого трафика. Альтернативы — Solid Security, All-In-One Security (AIOS) и другие.

Главное правило: ставьте один комплексный плагин безопасности, а не три сразу. Несколько файрволов конфликтуют друг с другом, замедляют сайт и иногда блокируют самого администратора. После установки пройдите мастер настройки, включите уведомления на e-mail, к которому у вас реально есть доступ, и запустите первое полное сканирование.

Страница плагина Wordfence Security в официальном каталоге WordPress
Страница плагина Wordfence Security в официальном каталоге WordPress

6. Резервные копии

Резервная копия — последняя линия обороны: если всё остальное не сработало, вы восстановите сайт за час, а не будете собирать его заново. Копия WordPress состоит из двух частей: базы данных MySQL (записи, страницы, настройки, заказы) и файлов (тема, плагины, каталог wp-content/uploads с изображениями). Нужны обе.

Настройте автоматическое копирование по расписанию: для сайта-визитки достаточно раз в неделю, для активного интернет-магазина — ежедневно. Храните копии не только на том же сервере: если взломают хостинг-аккаунт, пострадают и они. Подойдут встроенные бэкапы хостинга плюс выгрузка в облачное хранилище плагином вроде UpdraftPlus. Не реже раза в квартал проверяйте, что копия действительно разворачивается, — например, на тестовом поддомене.

7. Формы, комментарии и спам

Формы обратной связи и комментарии — открытая для всех точка ввода данных. Через них идёт спам, а иногда и попытки внедрить код. Если комментарии на сайте не нужны, отключите их в разделе «Настройки → Обсуждение». Если нужны — включите ручную модерацию первого комментария автора и поставьте антиспам-плагин (например, Akismet).

На формы заявок добавьте защиту от ботов: невидимую капчу (reCAPTCHA, Яндекс SmartCaptcha) или скрытое поле-ловушку (honeypot). Проверяйте, что плагин форм обновлён: популярные конструкторы форм регулярно получают исправления уязвимостей. Если формы позволяют загружать файлы, ограничьте допустимые типы (изображения, PDF) и размер.

8. HTTPS и заголовки безопасности

Сайт должен работать только по HTTPS. Бесплатный сертификат Let’s Encrypt выпускается в панели большинства российских хостингов за пару минут. После выпуска проверьте, что в разделе «Настройки → Общие» оба адреса (WordPress и сайта) начинаются с https://, и настройте постоянный 301-редирект с HTTP на HTTPS. Без шифрования пароль администратора передаётся по сети открытым текстом.

Следующий шаг — HTTP-заголовки безопасности, которые указывают браузеру, как себя вести: X-Frame-Options (запрет встраивания сайта в чужие фреймы), X-Content-Type-Options: nosniff, Referrer-Policy, а после проверки стабильной работы HTTPS — Strict-Transport-Security (HSTS). Их задают в конфигурации веб-сервера или файле .htaccess. С заголовком Content-Security-Policy будьте осторожны: неправильная политика ломает счётчики, виджеты и формы, его лучше настраивать вместе с разработчиком.

Надёжный пароль и двухфакторная аутентификация — основа защиты админки WordPress
Надёжный пароль и двухфакторная аутентификация — основа защиты админки WordPress

9. Мониторинг и журнал событий

Защиту нужно не только настроить, но и проверять. Раз в месяц открывайте раздел «Инструменты → Здоровье сайта»: WordPress сам подскажет об устаревших версиях PHP, неактивных темах, отключённом HTTPS и других проблемах. Читайте письма от плагина безопасности о результатах сканирования и блокировках — если их стало резко больше, сайт целенаправленно атакуют.

Полезно вести журнал действий пользователей: кто вошёл, какие плагины установил, что изменил в настройках. Это делают плагины журналирования активности (например, WP Activity Log или Simple History). При инциденте такой журнал помогает быстро понять, через какую учётную запись и когда произошло изменение. Также подключите внешний мониторинг доступности — например, проверку в Яндекс Метрике или любом сервисе uptime-мониторинга, чтобы узнавать о падении сайта раньше клиентов.

Типичные ошибки

  • Логин admin и пароль, который используется ещё на десятке сервисов.
  • Один общий аккаунт администратора на всех сотрудников и подрядчиков.
  • Установка «нулённых» платных тем и плагинов из неофициальных источников.
  • Отключённые обновления «чтобы ничего не сломалось» и плагины, которые не обновлялись годами.
  • Права 777 на каталоги и выполнение PHP в папке загрузок.
  • Резервные копии только на том же сервере и ни разу не проверенные.
  • Три плагина безопасности одновременно, конфликтующие между собой.
  • Включённый WP_DEBUG на рабочем сайте.

Чек-лист первичной защиты

  1. Обновить ядро WordPress, темы и плагины до последних версий.
  2. Удалить неиспользуемые темы и плагины.
  3. Сменить логин администратора с admin на уникальный и задать пароль от 16 символов.
  4. Включить двухфакторную аутентификацию для всех администраторов и редакторов.
  5. Раздать сотрудникам отдельные учётные записи с минимальными ролями.
  6. Ограничить число попыток входа и при необходимости доступ к wp-login.php по IP.
  7. Отключить XML-RPC, если он не нужен.
  8. Добавить в wp-config.php строку DISALLOW_FILE_EDIT и проверить секретные ключи.
  9. Выставить права 755 на каталоги, 644 на файлы, 440 или 400 на wp-config.php.
  10. Запретить выполнение PHP в wp-content/uploads.
  11. Установить один плагин безопасности и запустить полное сканирование.
  12. Настроить автоматические резервные копии с хранением вне сервера и проверить восстановление.
  13. Защитить формы капчей или honeypot, настроить модерацию комментариев.
  14. Перевести сайт на HTTPS с 301-редиректом и добавить заголовки безопасности.
  15. Включить уведомления, журнал действий и мониторинг доступности.

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

Можно ли обойтись без плагина безопасности?

Можно, если ограничение попыток входа, 2FA, файрвол и сканирование настроены другими средствами — на уровне хостинга, веб-сервера или внешнего сервиса защиты. Для большинства небольших сайтов один хорошо настроенный плагин проще и надёжнее, чем набор ручных правок.

Не сломают ли автообновления сайт?

Минорные обновления ядра почти никогда ничего не ломают, их стоит оставлять включёнными. Риск есть у крупных обновлений плагинов, особенно конструкторов страниц и плагинов магазина. Для них разумно сначала обновлять тестовую копию сайта, а уже затем рабочую — и обязательно иметь свежую резервную копию.

Помогает ли смена адреса страницы входа?

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

Как понять, что сайт уже взломан?

Признаки: посторонние ссылки или редиректы на чужие сайты (часто только для посетителей из поиска или с телефонов), незнакомые администраторы в списке пользователей, новые PHP-файлы в папке загрузок, предупреждения в Яндекс Вебмастере или браузере, резкий рост нагрузки на сервер. В этом случае запустите сканирование, смените все пароли и восстановите сайт из чистой копии.

Если не хочется разбираться в правах файлов, заголовках и настройках плагинов самостоятельно, мы проведём аудит безопасности вашего сайта на WordPress, закроем найденные уязвимости и настроим резервное копирование и мониторинг. Вы получите отчёт о том, что было сделано, и рекомендации на будущее.

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

Pear Advert · поддержка и защита сайтов

Защитим ваш сайт на WordPress

Проверим сайт на уязвимости, обновим и настроим защиту админки, резервные копии и мониторинг. По итогам передадим отчёт с рекомендациями.

  • Аудит безопасности и отчёт с приоритетами
  • Обновления, бэкапы и мониторинг доступности
  • Очистка от вирусов и восстановление после взлома

Ответим в течение рабочего дня

Читать дальше

Статьи по теме

Начать проект

Давайте сделаем крутой проект вместе

Расскажите о задаче — мы бесплатно проанализируем нишу, предложим решение и назовём сроки со стоимостью. Без навязчивых звонков.

Телефон

8 (926) 837 76 68

Почта

info@pear-advert.ru

Офис

Москва, ул. Гиляровского, 57с1

Оставьте заявку

Ответим в течение рабочего дня

Выберите тип проекта

Данные используются только для ответа на заявку и хранятся не дольше трёх лет.