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;
- не вставляйте на сайт код из непроверенных источников.
Что сделать прямо сейчас
- Включите автообновления ядра, плагинов и тем, удалите всё неиспользуемое.
- Поставьте сложный уникальный пароль администратора и храните его в менеджере паролей. Включите двухфакторную аутентификацию.
- Ограничьте попытки входа. На своём сервере это удобно делать через Fail2Ban, а лишние порты закрыть файрволом UFW.
- Отключите вывод ошибок PHP на рабочем сайте и запретите редактирование файлов из админки строкой
define( 'DISALLOW_FILE_EDIT', true );вwp-config.php. - Настройте регулярные резервные копии и храните их отдельно от сервера.
- Следите за релизами безопасности, например такими, как WordPress 6.5.2.
Безопасность сайта решается только комплексно: плагин защиты не поможет, если на сайте стоит непроверенный код или пароль admin123. Обновления, надёжные пароли и резервные копии закрывают большую часть рисков.