База знаний

Инструкции и ответы на вопросы о хостинге, работе сайтов и приложений

Безопасность WordPress

Сделать сайт безопасным для себя и для своего посетителя — первостепенная задача любого владельца сайта. Ежедневно злоумышленники сканируют сотни сайтов в попытках внедрить код через известные уязвимости.

Как происходит взлом

Чаще других взламывают сайты на популярных 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 noCAPTCHA & invisible Captcha:

Получите специальные ключи в личном кабинете на сервисе Google для reCAPTCHA интересующей вас версии:

Версия v2 выводит на форме вашего сайта поле, где посетителю нужно поставить галочку или выбрать картинки по запросу, а версия v3 — невидимая, анализирует совокупность действий посетителя.

Полученные ключи введите в разделе «Настройки» → «Advanced noCAPTCHA & invisible Captcha» и выберите формы, которые хотите защитить:

Аналогичную функцию можно и реализовать плагином AIO WP Security and Firewall, речь о котором шла выше, в разделе «Защита от брутфорс-атак», вкладка «CAPTCHA на логин». Однако, там доступна только версия reCAPTCHA v2.

Обновления

Доступные обновления CMS и расширений отображены в разделе «Консоль» → «Обновления»:

Если для ядра CMS появится обновление, вы увидите это уведомление на главной странице консоли.

С помощью нескольких строк кода можно настроить автоматическое обновление компонентов. Но обновлять WordPress автоматически не рекомендуем, так как это может привести к неожиданной ошибке на сайте с кодом 500.

Есть множество других методов защиты сайта, каждый из которых нацелен на определенный вид атаки. Так как с каждым днем обнаруживаются все новые уязвимости, перманентно обезопасить себя от всех невозможно.

Советуем включить еженедельную проверку файлов инструментом ХакСкан. Это позволит оперативно отреагировать на заражение, если оно все же произойдет.

Была ли эта инструкция полезной?