Безопасность сайта на WordPress: какие бывают атаки и как защититься

WordPress бесплатный и открытый: любой может скачать его, изменить и сделать на его основе свой проект. Поэтому на нём работает огромная доля сайтов в мире и в Рунете. Обратная сторона популярности в том, что найденную уязвимость можно сразу применить к сотням тысяч сайтов. Эту заметку я написал 29 января 2021 года, но меры защиты с тех пор почти не изменились.

Что такое безопасность сайта

Нужно закрыть две вещи. Первая: возможность проникнуть в код сайта и внедрить вредоносный скрипт. Вторая: спам через формы комментариев и обратной связи. Спам скорее мешает работать, а взлом может закончиться чем угодно, от кражи контента до потери сайта целиком.

Главная сложность в том, что способы взлома постоянно появляются новые, а сам взлом часто незаметен без специальных инструментов.

Основные виды атак

  • SQL-инъекция (SQLi). Злоумышленник передаёт через адрес или форму SQL-код, и сайт выполняет его в базе данных.
  • Межсайтовый скриптинг (XSS). В страницу внедряется JavaScript, обычно через поле ввода, и выполняется в браузере посетителей.
  • Подделка межсайтовых запросов (CSRF). Пользователя, вошедшего в админку, заставляют незаметно выполнить действие, например сменить пароль.
  • Загрузка вредоносного файла на сервер через незащищённую форму или плагин.
  • Перебор паролей (brute force). Бот без конца пробует логины и пароли администратора.
  • DoS и DDoS. Сайт заваливают запросами, с одного источника или с тысяч заражённых устройств, пока он не перестанет отвечать.
  • Открытый редирект. Посетителей перенаправляют на спам или фишинговую страницу.
  • Фишинг. Поддельная страница, похожая на настоящую, собирает логины и пароли.
  • Включение локальных и удалённых файлов (LFI и RFI). Сайт заставляют выполнить чужой файл со своего или стороннего сервера.
  • Удалённое выполнение кода (RCE). Самая опасная уязвимость: злоумышленник запускает на сервере любой код.
  • Обход аутентификации. Дыра, позволяющая войти в админку без пароля.
  • Раскрытие пути (FPD) и перечисление пользователей. Сообщения об ошибках выдают структуру каталогов, а адрес вида /?author=1 выдаёт логин администратора.
  • XXE и SSRF. Атаки через неправильно обработанный XML и через запросы, которые сервер отправляет по указке злоумышленника.
  • Обход каталогов (path traversal). Доступ к файлам за пределами корня сайта.

Откуда приходят взломы

Чаще всего сайты на WordPress взламывают не через ядро, а через уязвимые плагины и темы, слабые пароли и плохо настроенный хостинг. Ядро обновляется регулярно, а вот заброшенный плагин или «бесплатная» тема со стороннего сайта могут годами нести дыру или даже намеренно встроенный бэкдор.

Отсюда выводы:

  • выбирайте хостинг с хорошей репутацией;
  • ставьте темы и плагины только из официального каталога или от надёжных разработчиков, например WPShop;
  • не вставляйте на сайт код из непроверенных источников.

Что сделать прямо сейчас

  1. Включите автообновления ядра, плагинов и тем, удалите всё неиспользуемое.
  2. Поставьте сложный уникальный пароль администратора и храните его в менеджере паролей. Включите двухфакторную аутентификацию.
  3. Ограничьте попытки входа. На своём сервере это удобно делать через Fail2Ban, а лишние порты закрыть файрволом UFW.
  4. Отключите вывод ошибок PHP на рабочем сайте и запретите редактирование файлов из админки строкой define( 'DISALLOW_FILE_EDIT', true ); в wp-config.php.
  5. Настройте регулярные резервные копии и храните их отдельно от сервера.
  6. Следите за релизами безопасности, например такими, как WordPress 6.5.2.

Безопасность сайта решается только комплексно: плагин защиты не поможет, если на сайте стоит непроверенный код или пароль admin123. Обновления, надёжные пароли и резервные копии закрывают большую часть рисков.

Источники и ссылки


Комментарии загружаются…