5 обязательных мер: сделайте в первую очередь
- Поддерживайте ядро WordPress, темы и плагины в актуальном состоянии. Уязвимые плагины — вектор атаки № 1. Включите автоматические обновления минорных версий (WordPress 5.6+ делает это по умолчанию). Мажорные версии обновляйте в течение 7 дней после выпуска. Для плагинов включите автообновление доверенных; критичные плагины проверяйте по примечаниям к выпуску вручную.
- Используйте надёжные уникальные пароли для каждой учётной записи WordPress. Особенно для администраторов. Используйте менеджер паролей (1Password, Bitwarden). Отключите имя пользователя «admin»: создайте нового администратора и удалите старого.
- Включите двухфакторную аутентификацию. Используйте Wordfence Login Security (бесплатно) или наш Генератор QR для 2FA с любым TOTP-приложением. 2FA отражает более 99 % атак с подстановкой учётных данных.
- Установите надёжный плагин безопасности. Wordfence (бесплатной версии хватает большинству сайтов) или Solid Security. Не ставьте несколько сразу: они конфликтуют. Плагин управляет ограничением попыток входа, мониторингом целостности файлов и сканированием на вредоносное ПО.
- Ежедневные резервные копии вне сайта. UpdraftPlus → Dropbox/Google Drive. Делайте копию до того, как она понадобится. Проверьте процесс восстановления хотя бы один раз.
Следующие 10: дополнительные меры высокого эффекта
- Принудительно используйте HTTPS. Let's Encrypt бесплатен на любом современном хостинге. Перенаправляйте HTTP на HTTPS на уровне сервера.
- Измените префикс таблиц базы данных. WordPress по умолчанию использует wp_; смените его на что-то своё во время установки. Это не предотвращает атаки, но усложняет некоторые их паттерны.
- Отключите XML-RPC, если не используете его. XML-RPC — частый вектор усиления брутфорса. Если вы не используете мобильное приложение Jetpack или удалённую публикацию, отключите его через .htaccess или плагин.
- Ограничьте попытки входа. Wordfence делает это автоматически. Предотвращает брутфорс-подстановку учётных данных.
- Ротируйте ключи/соли аутентификации WordPress. Используйте наш Генератор солей WordPress. Ротируйте их после любого подозрения на компрометацию, после удаления скомпрометированного администратора и планово каждые 6–12 месяцев.
- Используйте SSH или SFTP для передачи файлов, никогда — обычный FTP. FTP передаёт учётные данные открытым текстом.
- Ограничьте доступ к wp-admin по IP, если возможно. Если ваша команда использует фиксированные IP (офис, VPN), ограничьте wp-admin только этими IP. Через .htaccess или конфигурацию Nginx.
- Отключите редактирование файлов в wp-config.php. Добавьте:
define('DISALLOW_FILE_EDIT', true);Это не даёт злоумышленникам редактировать темы/плагины из панели, если они скомпрометируют учётную запись. - Скройте номер версии WordPress. Удалите метатег generator. Это не предотвращает атаки, но снижает фингерпринтинг.
- Заблокируйте права доступа к файлам. Файлы 644, каталоги 755, wp-config.php 600. Большинство управляемых хостингов делают это автоматически; на VPS настройте это явно.
Доводка: хорошо, но не критично
- Кастомный URL входа (например, WPS Hide Login). В основном снижает шум от трафика ботов; это не настоящая безопасность.
- CAPTCHA в формах входа. Небольшое трение для автоматизированных атак.
- Отключите выполнение PHP в /uploads/. Не даёт запускать загруженные PHP-шеллы.
- Используйте WAF Cloudflare (бесплатный уровень). Фильтрует вредоносный трафик до того, как он достигнет вашего сервера.
- Настройте уведомление по email администратору об обновлениях плагинов/ядра.
- Используйте предзагрузку HSTS для принудительного HTTPS на уровне браузера.
- Отключите перечисление пользователей через REST API (Solid Security или Wordfence это обеспечивают).
- Используйте заголовки Политики безопасности контента (CSP).
- Отключите просмотр каталогов (большинство хостингов делают это по умолчанию).
- Мониторьте время безотказной работы + целостность с помощью внешнего сервиса (бесплатный уровень UptimeRobot + еженедельный Sucuri SiteCheck).
- Ограничьте роли пользователей минимальными привилегиями. Большинству соавторов не нужен доступ уровня редактора.
- Шифрование резервных копий базы данных (предлагает UpdraftPlus Premium).
- Размещение изображений вне домена через CDN (уменьшает поверхность атаки).
- Периодический просмотр журнала аудита безопасности.
- Ежегодный пентест, если сайт приносит значительный доход.
Мифы о безопасности WordPress: пропустите их
Несколько широко рекомендуемых мер «безопасности» дают минимальную реальную защиту: (1) «Скрыть версию WordPress»: знание вашей версии слегка помогает целевым атакам, но реальное решение — обновляться, а не прятать. (2) «Переместить wp-config.php выше public_html»: по сути даёт нулевую выгоду для безопасности; файл уже защищён через .htaccess. (3) «Отключить REST API»: ломает многие плагины и мало что блокирует. Вместо этого ограничьте конкретные эндпоинты. (4) «Ставить несколько плагинов безопасности»: они конфликтуют и пересекаются. Один надёжный плагин (Wordfence или Solid Security) покрывает то, что сделали бы три. (5) «Переименовать wp-login.php»: безопасность через неясность; злоумышленники легко находят новый URL через перенаправления.
Если вас взломали: контрольный список восстановления
- Не паникуйте; не удаляйте ничего сразу. Сначала сделайте снимок текущего состояния для криминалистического анализа.
- Выведите сайт офлайн (плагин режима обслуживания или перенаправление через .htaccess на статическую страницу).
- Смените все пароли администраторов и ротируйте соли WordPress.
- Проведите аудит учётных записей: немедленно удалите нераспознанные учётные записи администраторов.
- Просканируйте на вредоносное ПО с помощью Wordfence Premium или Sucuri.
- Сравните текущие файлы с чистой загрузкой WordPress: diff покажет изменённые файлы ядра.
- Проверьте таблицу wp_options в базе данных на неожиданные записи (часто содержат внедрённый JS).
- Восстановите из последней чистой резервной копии (вот почему важны ежедневные копии).
- После восстановления проведите аудит каждого плагина: удалите неиспользуемые, обновите все и замените те, у которых есть публичные CVE.
- Обновите ядро WordPress до последней версии.
- Снова включите сайт и следите за повторным заражением в течение 30 дней.