Defender: защита WordPress-сайта от плохих ботов с помощью бана по User Agent

Веб-сайты регулярно подвергаются атакам, будь то DDoS, XSS, SQL-инъекции или просто надоедливый спам. Блокировка по User Agent через плагин Defender позволяет защитить WordPress-сайт от запросов со стороны плохих ботов, что также дает возможность освободить ресурсы сервера для полезного трафика.

Плагин бесплатный, он доступен на WordPress.org.

Блог Миши Рудрастых

Что представляет собой User Agent?

Начнем с понятия из Википедии:

User agent — идентификационная строка клиентского приложения, использующая определённый сетевой протокол; обычно используется для приложений, осуществляющих доступ к веб-сайтам — браузеров, поисковых роботов и «пауков», мобильных телефонов и других устройств со встроенным доступом к веб-ресурсам.

Серверы, почтовые клиенты, поисковые системы, веб-браузеры – все это примеры пользовательских агентов (User agent).

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

Веб-браузеры включают в свой HTTP-заголовок поле User-Agent, в котором содержится название браузера, его версия и операционная система (к примеру, «Chrome Browser Version 94.0.4606.61 on Windows 10»).

Обычно пользовательский агент имеет следующий формат:

 Mozilla/[ version ] ([ system and browser information ]) [ platform ] ([ platform details ]) [ extensions ]

В итоге каждый веб-браузер имеет свой собственный user agent. Можно всегда проверить его через сервисы:

Эта информация требуется веб-серверу. Она позволяет веб-серверу передавать разные веб-страницы для разных браузеров и разных ОС (к примеру, мобильные страницы для мобильных браузеров, разные страницы для разных платформ и ОС и т.д.; даже можно вывести сообщение «пожалуйста, обновите свой браузер» для устаревших версий).

Хорошие боты vs плохие боты

Большинство владельцев веб-сайтов хотят, чтобы их контент был доступен для поиска в сети – в частности, для поисковых систем, таких как Google.

Google автоматически обнаруживает и сканирует веб-сайты, переходя по ссылкам на веб-страницах и используя пользовательские агенты, именуемые краулерами. К примеру, основной краулер (поисковой робот) Google называется Googlebot.

По этой причине большинство владельцев веб-сайтов сочли бы робота Googlebot хорошим и приветствовали бы, чтобы этот пользовательский агент посещал их веб-сайт.

Но не все пользовательские агенты являются хорошими.

Существуют и нежелательные посетители – спамеры, скраперы, сборщики email, вредоносные боты. Они тоже могут использовать user agent’ы.

Пример XSS-атак

Имя пользовательского агента можно изменить, добавив в него ссылку с вредоносным JS-кодом:

UserXagent:(Mozilla/5.0(!<script>alert('XSS(Example');(</script><!—

В итоге мы имеем проблему:

  1. Сервер будет доверять имени user agent и сохранит указанную выше строку (к примеру, в инструменте веб-аналитики).
  2. Затем реальный пользователь (к примеру, администратор) переходит в сервис, хранящий строку.
  3. При открытии страницы с логами, содержащими строку, браузер получает все перечисленные user agent’ы и выполняет скрипт. Этот скрипт может представлять собой как простой редирект, так и всплывающее окно.

Бан по User Agent в Defender позволяет защититься от XSS-атак. В таком случае загрузка страницы будет приостановлена (если обнаружен подобный user agent).

Пример SQL-инъекций

Здесь все аналогично предыдущему пункту. Имя User Agent может содержать SQL-запрос, к примеру, одинарную кавычку (‘).

Если на сервере нет достаточной высокоуровневой защиты, такой запрос приведет к ошибке, после чего злоумышленник может пытаться выполнять разные SQL-запросы.

Итак, каким образом можно допустить хороших ботов и предотвратить визиты плохих?

Тут на помощь приходит Defender.

Как настроить блокировку по User Agent через Defender

Возможность User Agent Banning в Defender позволяет задать разрешенные и блокируемые пользовательские агенты.

Чтобы получить доступ к этому функционалу, необходимо перейти в раздел Defender > Firewall.

Щелкаем по кнопке Activate.

Здесь вы можете навсегда заблокировать доступ к вашему сайту для вредоносных ботов и user agent’ов. Их нужно вводить в поле Blocklist (по одному на строку). Defender по умолчанию содержит некоторых ботов в черном списке. Вы можете внести в этот список и других ботов, выполнив поиск в сети по запросу «плохие user agent».

Также вы можете добавить и хороших ботов в поле Allowlist, чтобы у них был постоянный доступ к вашему сайту. Defender включает в себя по умолчанию целый ряд легитимных ботов и user agent’ов.

Примечание: если вы добавите тот же самый user agent в оба поля, белый список будет в приоритете.

Раздел Message позволяет вам настроить и просмотреть сообщение, которое будет выводиться на вашем сайте для заблокированных пользователей в течение периода блокировки.

Боты идентифицируются по их IP-адресу и User-Agent в HTTP-заголовке. Если User-Agent в HTTP-заголовке отсутствует, то это будет являться подозрительным сигналом. Зачастую это указывает на SQL-инъекции. В этом случае лучше всего заблокировать такой IP-адрес.

Вы можете блокировать любые IP-адреса, которые передают POST-запросы с пустыми заголовками referer и user agent. Делается это в секции Empty Headers.

Примечание: спам-боты часто не имеют referer или HTTP-заголовка, а потому активация этой опции позволяет предотвратить отправку форм и комментариев со спамом.

Вы можете легко деактивировать эту функцию в любое время.

Не забудьте нажать на кнопку «Save», когда закончите обновлять параметры плагина.

Чтобы посмотреть журнал активности Defender и убедиться, что функция работает и активна, выберите Firewalls > Logs в меню плагина.

Блокировка User Agent через конфигурационный файл

С помощью Defender вы можете добавлять блокировку User Agent в конфигурационный файл, чтобы затем использовать этот функционал для неограниченного количества сайтов.

После активации User-Agent Banning вы сможете включить эту опцию во все свои конфиги.

Делается это в разделе Settings > Configs в консоли Defender. В новом конфиге будет включена блокировка User Agent.

Вы можете загрузить его и использовать на любых WordPress-сайтах.

Жизнь без спама и ботов

Благодаря функционалу User Agent Banning в Defender все плохие боты будут обходить ваш сайт стороной. Defender моментально приступает к защите вашего сайта в соответствии с вашими настройками блокировки.

Defender непрерывно отслеживает ваш сайт, экономя ресурсы сервера, что позволяет повысить производительность веб-сайта в целом.

Источник: https://wpmudev.com

Блог про WordPress
Комментарии: 2
  1. Андрей

    Простая блокировка по User-Agent уже малоэффективна, потому что большинство крупных сервисов, создающих паразитную нагрузку различной величины, причем без нашего на то согласия, «представляются» Гуглом.
    Сейчас не хватает решения (может я такое просто не нашел в каталоге плагинов, не спорю), которое бы сопоставляло User-Agent и IP адреса, принадлежащие крупных поисковым системам: Google, Bing, Яндекс. Если идет обращение под «правильным» User-Agent, но IP не соответствует — доступ запрещен, именно для данной связки: User-Agent + IP.
    Это было бы интеллектуальное решение, а не «рюшечки и бантики», ну или крайность — бан по IP.

    1. Дмитрий (автор)

      Такого умного решения, увы, нет.
      Приходится руками это все делать на базе сервисов аналитики.

Добавить комментарий

Получать новые комментарии по электронной почте.