Все материалыЛикбезУстойчивость вашего проекта к DDoS-атакам: Как отделить бот-трафик от легитимных пользователей

Как отделять легитимных посетителей от ботов: неочевидные кейсы

7 июня 2022

Как известно, труднее всего бывает исправить ошибки, сделанные еще на стадии проектирования нового продукта. Это в полной мере относится и к различным аспектам защиты приложений, электронных и цифровых сервисов от DDoS-атак: эти аспекты необходимо продумывать и прорабатывать заранее, заложив их устойчивость к DDoS-атакам еще на ранних стадиях создания программных продуктов.

В частности, очень важно четко определить, по каким признакам можно опознать легитимные запросы, чтобы провайдер Anti-DDoS смог точно выявлять начало атаки на приложение и отсекать идущие к нему нелегитимные. Разработчики приложений и их заказчики должны примерно понимать, как мыслит и действует DDoS-защитник, и заранее позаботиться о том, чтобы он смог распознавать и отсекать ботов. Это особенно важно для приложений, реализующих HTTP-сервисы, не предполагающие использование браузеров, и UDP-сервисы.

В самых общих чертах схема построения DDoS-защиты следующая. Сначала составляется подробное описание того, как работает приложение (его профиль): с каких локаций идут запросы, какие заголовки и методы при этом используются, с какой интенсивностью и т.д. На основе этого описания выстраивается модель нормального взаимодействия, с которой сравниваются все запросы, идущие к этому приложению от различных посетителей и клиентов.

Если никаких признаков, позволяющих отличить легитимные запросы от нелегитимных, генерируемых DDoS-ботами, не предусмотрено, то распознавать активность этих ботов становится весьма сложно. Приведем пример. Однажды мы обнаружили подозрительную волну запросов к приложению дистанционного банковского обслуживания (ДБО) одной из финансовых организаций. Обычно на него шел поток в 500 запросов в секунду, но тут вдруг произошло резкое его увеличение – поток вырос до примерно 10 тыс. запросов в секунду. Что интересно, с каждого адреса источника приходило по 200 запросов в секунду, и все они получали ответ 401 Unauthorized («отказ в доступе»). Подозревая начало атаки, мы решили блокировать такие запросы, однако вскоре банк связался с нами и выразил недоумение по поводу того, что стали блокироваться легитимные посетители. Чтобы разобраться в ситуации, мы связались с разработчиками приложения, и они объяснили: ничего аномального не произошло, просто приложение начало выгрузку данных, поэтому эту волну запросов следует расценивать как нормальное поведение. Мы удивились: если такое поведение считается нормальным, то как будет выглядеть DDoS-атака на это приложение? И как отличить его нормальную активность от генерируемой злоумышленниками?

how-to-separate-legitimate-visitors-from-bots

Чаще всего подобные казусы встречаются у организаций, поддерживающих свои собственные API или мобильные приложения. Их разработчикам и заказчикам нужно заблаговременно продумать, как провайдер защиты от DDoS-атак сможет отличить легитимных посетителей от ботов в HTTP-сервисах, рассчитанных на взаимодействие без браузеров, и в UDP-сервисах. Если эти аспекты не проработаны, то единственными признаками подозрительной активности будут только наличие IP-адресов источников запросов в каких-нибудь базах нежелательных IP-адресов и подозрительно резкий рост потока запросов. И если активность бота не превышает активность обычных посетителей, то ни один защитник не сможет его блокировать.

Особенно это касается приложений, использующих обмен сообщениями по протоколу UDP. Поскольку фильтровать UDP-трафик сложнее, чем TCP-трафик, то чтобы точно определять, является ли очередной их отправитель легитимным, DDoS-защитнику необходимо ясно понимать протоколы взаимодействия ваших UDP-приложений. Иногда провести оценку легитимности позволяет процедура предварительной авторизации (если, конечно, она предусмотрена). В некоторых случаях имеются четкие правила взаимодействия UDP-приложения с легитимными клиентами, по которым система фильтрации провайдера Anti-DDoS сможет определить, что данный клиент легитимен. А иногда оценить легитимность удается с помощью какого-то TCP-сервиса.

В любом случае вы и ваши разработчики уже в самом начале создания приложения должны ясно понять и описать, как будете отличать легитимных клиентов от нелегитимных. Эти знания нужно четко зафиксировать и затем передать DDoS-защитнику.

Либо, в конце концов, сесть вместе с вашим провайдером Anti-DDoS и разобраться, как ваше приложение работает, чтобы он смог составить его профиль, подробно описав, как выглядит его нормальная активность. Все, что существенно от нее отклоняется, можно будет расценивать как действия ботов и отсекать их, высвобождая приложение и вычислительную среду, в которой оно работает, для взаимодействия с легитимными посетителями.