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 непрерывно отслеживает ваш сайт, экономя ресурсы сервера, что позволяет повысить производительность веб-сайта в целом.

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

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

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

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

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

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