Сделать сайт безопасным для себя и для своего посетителя — первостепенная задача любого владельца сайта. Ежедневно злоумышленники сканируют сотни сайтов в попытках внедрить код через известные уязвимости.
Как происходит взлом
Чаще других взламывают сайты на популярных CMS (WordPress, Joomla!, OpenCart, Drupal). Наиболее подвержены заражению сайты, использующие:
- Старые версии CMS;
- Необновленные или загруженные из неизвестных источников плагины, темы (шаблоны) и расширения;
- Слабые пароли к административной панели.
Для примера, в феврале 2020 года в плагине ThemeGrill Demo Importer для WordPress была обнаружена уязвимость, позволяющая полностью удалить все статьи и записи с сайта простым GET-запросом к одному из его файлов. Разработчик быстро исправил уязвимость, но она доставила неудобства многим пользователям, которые не успели вовремя обновить плагин.
В этой статье рассмотрим, как можно обезопасить сайт на CMS WordPress.
Методы защиты
Внимание! Перед внесением изменений на сайте обязательно сделайте резервную копию.
Методов защиты сайта множество, большинство из которых выполнимо с помощью плагина All in One WP Security and Firewall:
Сокрытие скрипта авторизации
Применяется в разделе плагина «WP Security» → «Защита от брутфорс-атак», вкладка «Переименовать страницу логина».
Укажите новый адрес административной панели и запомните или сохраните его, чтобы не терять доступ.
Если вы забыли ссылку для входа, потребуется отключить плагин. Для этого переименуйте его папку, например, добавив к названию цифру:
~/domains/имя_сайта/public_html/wp-content/plugins/all-in-one-wp-security-and-firewall_1
После этого вы сможете авторизоваться по стандартной ссылке, вернуть имя для папки плагина и изменить его настройки.
На нашем хостинге существует дополнительная защита для формы авторизации, которая блокирует прямые запросы к ней. Вы можете увидеть ее в виде перенаправления:
Чтобы отключить это перенаправление, если оно вызовет конфликты с кастомными формами авторизации, обратитесь в техническую поддержку.
Защита файла xmlrpc.php
Файл xmlrpc.php используется для удаленного управления CMS WordPress или обмена данными с ней некоторыми плагинами.
В большинстве случаев этот файл никак не используется сайтами, но открывает массу возможностей злоумышленникам. Так, с помощью POST-запроса к нему, могут быть внедрены ссылки в статьи, приводящие к перенаправлению на сторонние сайты.
Заблокировать доступ к этому файлу можно в разделе «Файрволл» → «Защита от уязвимостей WordPress XMLRPC и уведомлений» , поставив галочку как на скриншоте:
Или с помощью директив в файле .htaccess сайта:
Order Deny,Allow
Deny from all
Allow from X.X.X.X
Вместо X.X.X.X укажите IP-адреса, которым необходимо сохранить доступ к файлу.
Смена префикса в базе данных
По умолчанию в CMS WordPress таблицы используют префикс «wp_» . Зная префикс, злоумышленник может попробовать изменить содержимое той или иной таблицы. Плагин позволяет изменить префиксы автоматически в разделе «WP Security» → «Защита базы данных», вкладка «Префикс таблиц БД».
Удаление сведений о версии CMS
Чтобы злоумышленник заранее не знал о том, какие именно уязвимости могут присутствовать в сайте, скройте информацию о версии CMS. Выполняется в разделе «WP Security» → «Настройки» → «Информация о версии WP».
Это не все функции плагина AIO WP Security and Firewall, которые могут быть полезны в защите от взлома. Рекомендуем ознакомиться и с другими его возможностями самостоятельно.
Двухфакторная аутентификация
Дополнительной защитой выступит двухфакторная авторизация. Поможет с этим плагин Google Authenticator:
Чтобы авторизоваться на сайте, помимо логина и пароля будет запрошен код из мобильного приложения Google Authenticator — его потребуется установить отдельно (доступно в App Store и Google Play).
Для связки с сайтом укажите в мобильном приложении ключ из строки Secret или отсканируйте QR-код по кнопке «Show/Hide QR code».
Двухфакторную аутентификацию можно реализовать и средствами Панели управления, поставив галочку в Файловом менеджере напротив папки wp-admin и нажав на значок щита в ряде операционных кнопок. После указания логина и пароля в открывшемся окне, для авторизации потребуются обе пары логин/пароль — те что вы используете обычно и те, что указали в Файловом менеджере.
Защита от роботов
Роботы умеют подбирать пароли, массово регистрироваться на сайтах, оставлять СПАМ-комментарии, рассылать вредоносные ссылки через формы обратной связи.
Защититься от них поможет модуль CAPTCHA, например, reCAPTCHA v2 или v3 от Google и приведем в пример вспомогательный плагин Advanced Google reCAPTCHA:
Получите специальные ключи в личном кабинете на сервисе Google для reCAPTCHA интересующей вас версии:
Версия v2 выводит на форме вашего сайта поле, где посетителю нужно поставить галочку или выбрать картинки по запросу, а версия v3 — невидимая, анализирует совокупность действий посетителя.
Полученные ключи введите в разделе «Advanced Google reCAPTCHA» и выберите формы, которые хотите защитить:
Аналогичную функцию можно и реализовать плагином AIO WP Security and Firewall, речь о котором шла выше, в разделе «Защита от брутфорс-атак», вкладка «CAPTCHA на логин». Однако, там доступна только версия reCAPTCHA v2.
Обновления
Доступные обновления CMS и расширений отображены в разделе «Консоль» → «Обновления»:
Если для ядра CMS появится обновление, вы увидите это уведомление на главной странице консоли.
С помощью нескольких строк кода можно настроить автоматическое обновление компонентов. Но обновлять WordPress автоматически не рекомендуем, так как это может привести к неожиданной ошибке на сайте с кодом 500.
Есть множество других методов защиты сайта, каждый из которых нацелен на определенный вид атаки. Так как с каждым днем обнаруживаются все новые уязвимости, перманентно обезопасить себя от всех невозможно.
Советуем включить еженедельную проверку файлов инструментом ХакСкан. Это позволит оперативно отреагировать на заражение, если оно все же произойдет.