Веб-сайты регулярно подвергаются атакам, будь то 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><!—
В итоге мы имеем проблему:
- Сервер будет доверять имени user agent и сохранит указанную выше строку (к примеру, в инструменте веб-аналитики).
- Затем реальный пользователь (к примеру, администратор) переходит в сервис, хранящий строку.
- При открытии страницы с логами, содержащими строку, браузер получает все перечисленные 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 непрерывно отслеживает ваш сайт, экономя ресурсы сервера, что позволяет повысить производительность веб-сайта в целом.
Простая блокировка по User-Agent уже малоэффективна, потому что большинство крупных сервисов, создающих паразитную нагрузку различной величины, причем без нашего на то согласия, «представляются» Гуглом.
Сейчас не хватает решения (может я такое просто не нашел в каталоге плагинов, не спорю), которое бы сопоставляло User-Agent и IP адреса, принадлежащие крупных поисковым системам: Google, Bing, Яндекс. Если идет обращение под «правильным» User-Agent, но IP не соответствует — доступ запрещен, именно для данной связки: User-Agent + IP.
Это было бы интеллектуальное решение, а не «рюшечки и бантики», ну или крайность — бан по IP.
Такого умного решения, увы, нет.
Приходится руками это все делать на базе сервисов аналитики.