Как я настраиваю безопасность WP, чтобы его не взломали

WordPress сам по себе не «дырявый», но почти всегда стоит криво: дефолтный логин admin, старые плагины, нет бэкапов. Делюсь минимальным набором, который я прохожу на каждом проекте, даже самом маленьком.

1. Обновления и «зоопарк» плагинов

Сначала смотрю:

  • актуальны ли ядро, тема, плагины
  • нет ли заброшенных плагинов (последнее обновление несколько лет назад)
  • сколько всего плагинов висит

Что делаю:

  • включаю автообновления хотя бы для минорных версий (ядро + плагины)
  • удаляю неиспользуемые плагины и темы, а не просто выключаю
  • критичные плагины (оплата, интеграции) обновляю через стейджинг и только потом в прод

Чем меньше кода, тем меньше потенциальных дыр.

2. Аккаунты и роли

Очень частая дыра — пользователи.

Мой чек-лист:

  • убираю логин admin, создаю нового администратора с уникальным логином
  • для контентщиков даю роль Editor, а не Administrator
  • включаю двухфакторную аутентификацию хотя бы админам
  • запрещаю регистрацию пользователей, если она реально не нужна

Захватить слабый пароль редактора гораздо проще, чем ломать сервак.

3. Конфигурация wp-config.php

В wp-config.php я настраиваю:

  • сложные AUTH_KEY, SECURE_AUTH_KEY и остальные ключи (сервис генерации ключей от WordPress)
  • define('DISALLOW_FILE_EDIT', true); — запрет редактирования файлов через админку
  • define('WP_DEBUG', false); на продакшене, чтобы ошибки не вываливались наружу

По возможности:

  • выношу wp-config.php на уровень выше web-root
  • проверяю, что он не отдаётся по HTTP (решается конфигом сервера)

4. Ограничение брутфорса и доступов

Чтобы не ловить тысячи попыток логина:

  • ставлю плагин с ограничением количества попыток (limit login attempts / captcha)
  • включаю логирование входов и неудачных попыток
  • при необходимости ограничиваю доступ к /wp-admin и /wp-login.php по IP или за дополнительным паролем на уровне сервера

5. Права на файлы и структуру

Минимум проверок:

  • файлы — 644, папки — 755, никаких 777
  • нет ли мусора в корне: старые бэкапы, .zip архивы, sql-дампы
  • папка uploads не позволяет выполнять php-файлы (правится в .htaccess / конфиге nginx)

Любимый сценарий взлома — залить шелл в uploads и выполнить его.

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

Даже при хорошей защите всегда держу план Б.

Что делаю:

  • настраиваю регулярные бэкапы БД и файлов (хостинг / плагин / свой скрипт)
  • бэкапы хранятся не на том же сервере, где крутится сайт
  • завожу хотя бы простое оповещение: если сайт отдаёт не 200 — приходит сигнал

Без бэкапа любая атака или ошибка превращается в беду, а не в рабочий инцидент.

Чек-лист минимальной безопасности WordPress

  • убраны неиспользуемые темы и плагины, всё обновлено
  • нет логина admin, роли пользователей выданы по минимуму
  • а wp-config.php стоят сложные ключи и отключён file edit
  • продакшен не показывает ошибки PHP
  • есть защита от перебора паролей и лог входов
  • права на файлы адекватные, в uploads нельзя выполнить php
  • есть регулярные бэкапы и понятный способ их восстановить

Итог

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

#wordpress #security #php

Как я настраиваю безопасность WP, чтобы его не взломали | Сетка — социальная сеть от hh.ru