Безопасность сайта на WordPress: угрозы и базовый чеклист

WordPress – бесплатная open source CMS. Её можно ставить, править и раздавать как угодно. Из-за популярности и открытой архитектуры дыры в ядре, темах и плагинах быстро становятся массовой проблемой: один баг – и под ударом оказываются тысячи сайтов.

Цифры из исходного материала (на момент написания заметки): в зоне RU на WordPress уже тогда держалась заметная доля новых сайтов, в каталоге плагинов – десятки тысяч расширений. При этом защитными плагинами пользовалась лишь небольшая часть владельцев. Открытость – плюс для разработки и минус, если админка и обновления заброшены.

Что считать безопасностью сайта

Под безопасностью обычно имеют в виду два слоя. Первый – не дать внедрить код (бэкдоры, подмена страниц, кража контента и базы). Второй – не дать заспамить формы, комментарии и обратную связь. Спам бесит, но взлом кода бьёт сильнее: от «тихой» кражи до полного угона сайта.

Сложность в том, что угрозы меняются, а факт взлома не всегда виден без логов, сканеров и контроля целостности файлов. Сайт может «работать», а в теме уже лежат веб-шеллы.

Типичные векторы атак

  • SQL Injection – подстановка SQL через параметры URL или формы, если ввод не экранируют.
  • XSS – внедрение скрипта через поля ввода и вывод без очистки.
  • Загрузка файла – вредоносный PHP/скрипт через уязвимую форму upload.
  • CSRF – запрос от имени залогиненного админа без его ведома.
  • Brute force – перебор логина и пароля к wp-login / xmlrpc.
  • DoS / DDoS – перегрузка трафиком с одного или многих источников.
  • Open Redirect – редирект на фишинговый URL.
  • Фишинг – поддельные страницы «как ваш сайт» для сбора паролей.
  • Malware – вредоносные скрипты в теме, плагине или uploads.
  • LFI / RFI – подключение локального или удалённого файла с кодом атакующего.
  • Обход аутентификации и RCE – вход мимо формы или выполнение кода на сервере.
  • SSRF, XXE, directory traversal – запросы сервера «не туда», разбор XML, обход каталогов.
  • Перечисление пользователей – через ?author=N и похожие приёмы для последующего brute force.

Откуда чаще всего «пробивают» WordPress

  • Около 40% – сторона хостинга (слабая изоляция, чужие аккаунты, дыры панели). Выбирайте провайдера с нормальной репутацией и обновлениями.
  • Около 30% – кривые или заражённые темы. Берите темы с понятным автором и обновлениями; нулевые «nulled»-пакеты – лотерея с бэкдором. Ориентир по нормальным продуктам: темы и плагины WPShop.
  • Остальное – устаревшие плагины, слабые пароли, открытый xmlrpc, лишние учётки, отсутствие 2FA.

Базовый чеклист защиты

  • Обновляйте ядро, темы и плагины. Неиспользуемое – удаляйте, не «выключайте и забывайте».
  • Сильные уникальные пароли + 2FA на админов. Не используйте логин admin.
  • Ограничьте попытки входа (limit login / firewall), при возможности закройте xmlrpc, если он не нужен.
  • Права на файлы: конфиги и PHP не должны быть world-writable; uploads – без исполнения PHP, если хостер позволяет.
  • Регулярные бэкапы (файлы + БД) с проверкой восстановления, не только «галочка в панели».
  • WAF / security-плагин (Wordfence, Sucuri и аналоги) + мониторинг изменений файлов.
  • HTTPS везде, актуальные сертификаты, без mixed content.
  • Минимум плагинов «на всякий случай». Каждый плагин – поверхность атаки.

Если сайт уже «странный»

Смените все пароли (WP, FTP/SFTP, БД, хостинг-панель), проверьте users и свежие плагины/темы, просканируйте файлы, сравните с чистым бэкапом, посмотрите access/error-логи. Иногда быстрее поднять чистую копию из бэкапа и перенести только проверенный контент, чем неделю вычищать шеллы.

Безопасность WordPress – не разовая «установка антивируса», а привычка: обновления, бэкапы, минимум лишнего, контроль доступов. Без этого даже хороший хостинг не спасёт.

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


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