Простое устранение вредоносных ботов с помощью Signal Sciences

В Интернете очень много активности ботов. Любой, кто занимается защитой веб-сайтов с высоким трафиком, хорошо это знает. Некоторые боты хороши и востребованы — например, роботы поисковых систем. Некоторые боты безобидны, например скрипты, выполняющие вызовы API или отслеживающие доступность сайта. Но часто боты могут быть либо неприятными, влияющими на производительность, либо откровенно вредоносными. Это «плохие» боты, которых вы хотели бы легко заблокировать и больше с ними не иметь дело. В этом посте я хотел бы поделиться упрощенным автоматизированным подходом к реализации довольно хорошей защиты от вредоносных ботов с помощью брандмауэра веб-приложений Signal Sciences (WAF).
Определение типов ботов
Прежде чем я углублюсь в детали, я хотел бы предложить, как я определяю бота и плохого бота. Бот — это любой клиент, отправляющий запросы на ваш сайт, который не является человеком, использующим современный веб-браузер. Итак, боты — это скрипты, инструменты командной строки, программы, вредоносное ПО и т. д., которые работают автономно или вызываются человеком. Что делает бота плохим, так это его поведение. Например, отправляет ли он вредоносную полезную нагрузку или ищет личные каталоги и файлы?
Пример запроса бота:

Пример плохого запроса бота:
Идентификация ботов
Первым шагом является выявление любого бота, который может исследовать, сканировать или проверять ваш сайт. Для простоты мы можем использовать очень элементарный метод для идентификации ботов — просто на основе длины строки пользовательского агента. Строка пользовательского агента — это заголовок запроса, установленный клиентом, который позволяет серверам и одноранговым узлам сети идентифицировать его. Обычные люди, использующие современный браузер, всегда будут иметь минимальную длину строки пользовательского агента, равную некоторому числу x . Хотя боты могут подделывать строку пользовательского агента, большинство ботов этого не делают. Их строки пользовательского агента, как правило, намного короче, чем строка пользовательского агента браузера. В результате мы можем предположить, что x минус некоторое число n не человек — это бот. Вы можете определить свой порог того, какими должны быть x и n .
В Интернете есть различные источники, в которых можно найти списки строк пользовательских агентов. Вот пример одного из таких источников:
- https://useragentstring.com/pages/Chrome/
- https://useragentstring.com/pages/Firefox/
- https://useragentstring.com/pages/Edge/

При наличии этого правила и сигнала целесообразно просматривать данные, которые он производит с течением времени. Это может обеспечить видимость интересного трафика, о котором вы, возможно, не знали ранее.
Пример результатов правила бота:
Для быстрого объяснения правил уровня корпорации и правил уровня сайта, если вы не знакомы с понятиями, см. Правила, применяемые на уровне корпорации, могут применяться на всех сайтах, на которых работает агент Signal Sciences. Правила, применяемые на уровне сайта, реализуются только в агентах для этого конкретного сайта. Используйте вариант, наиболее подходящий для вашей среды.
Определите плохих ботов
Теперь, когда вы можете идентифицировать ботов, как они себя ведут? В Signal Sciences мы можем создать еще один простой корпоративный уровень для определения плохого поведения ботов. Первое условие для этого правила ищет сигнал бота, а второе условие ищет любое количество атак, аномалий или пользовательских сигналов. Вы можете легко изменить правило, включив в него сигналы, наиболее подходящие для вашего сценария. В приведенном ниже примере мы также включили совпадение списка IP-адресов с данными разведки об угрозах. Подводя итог правилу, если это бот и он делает сколько-то плохих вещей, то это плохой бот, и добавьте в запрос сигнал «Плохой бот».

Пример результатов правила Bad Bot:
Правоприменение
Последним шагом является создание нашего правила принудительного применения, либо ограничения скорости, либо правила блокировки. Обратите внимание, что правила ограничения скорости применяются на уровне сайта. Правило блокировки может быть реализовано на уровне корпорации или сайта и будет блокировать весь трафик с помощью сигнала Bad Bot. Будьте осторожны с этим уровнем агрессивной блокировки. Рассмотрите возможность мониторинга данных с течением времени, чтобы убедиться, что правило блокировки не повлияет на законный рабочий трафик. В качестве альтернативы, правило ограничения скорости обеспечивает гибкость для определения допустимого уровня перед блокировкой трафика Bad Bot. В приведенном ниже примере условие правила ограничения скорости относится к любому запросу с сигналом Bad Bot и начнет блокировку после получения 10 сигналов Bad Bot в течение 1 минуты. Решение о блокировке будет действовать в течение 5 минут. Порог счета и продолжительность действия можно легко изменить на желаемые значения.
Вывод
Использование длины строки пользовательского агента для обнаружения ботов — это простой подход, который, по моему опыту, эффективен для выявления большей части трафика ботов. Определив длину строки пользовательского агента для вашего сценария, выявив плохое поведение и применив ограничение скорости, вы сможете надежно снизить нежелательный трафик ботов. Signal Sciences упрощает реализацию этого подхода с помощью правил. Однако, если у вас нет Signal Sciences, учитывая этот простой подход, стоит изучить возможности имеющихся у вас инструментов для выявления ботов, плохих ботов и правоприменения.