Как стать автором
Обновить

Обзор анти-бот решения на базе Akamai

Время на прочтение9 мин
Количество просмотров7.5K

Тема с ботами на сайте для кого-то является очень болезненной и доставляет постоянную головную боль, а кто-то предпочитает ее целиком игнорировать. И тут надо понимать: если ущерб от ботов не велик, то и вкладывать деньги на борьбу с ними становится не очень оправданным с точки зрения бизнеса. Чаще всего в таких случаях ограничиваются каким-то довольно простым самописным решением, которое отбивает ботов первого поколения (о поколениях ниже). Однако, если же атаки на сайт вредят бизнесу – компания начинает задумываться как с ними бороться.

Из опыта могу сказать, что чаще всего от постоянного потока ботов страдают авиа- и большие e-commerce компании. Типичный кейс для авиакомпании, когда она может пострадать от ботов и попасть на деньги, – это довольно известный seat-holding. Как это работает: вы хотите купить билет и выбираете рейс, время, место и доходите до оплаты. Очень часто, в этом месте авиакомпания резервирует это место под вас (недоступно для покупки в данный момент другим посетителям сайта) и дает вам время на оплату картой – от пары минут до нескольких часов. Что происходит: на сайт приходит волна ботов, которая резервирует весь самолет (и по истечении времени оплаты, резервирует место снова). Таким образом, никто не может купить билет, а самолет по факту может улететь пустым. А это деньги, и довольно немалые. Для e-commerce компаний – чаще всего это перебор учетных данных и списание бонусных баллов.

Какие вообще боты бывают? Тут, на самом деле, все очень просто. Ответа два – хорошие и плохие. Хорошие – это боты поисковых систем, боты ваших партнеров, какие-то мониторинговые системы и прочее. В общем, это те боты, которые придерживаются правил:

  • выдают себя за тех, кем они являются

  • не пытаются навредить сайту

  • следуют ссылкам robots.txt

Плохие – те, кто имеет недружелюбные намерения или используются для иных целей. Обычно пытаются либо замаскироваться под людей, либо подделать других известных хороших ботов. Чаще всего плохие боты используются для:

  • Автоматический вход в систему с использованием украденных учетных данных, полученных в результате утечки данных или в даркнете.

  • Создание новых онлайн-аккаунтов для получения бонусов за регистрацию

  • Подбор комбинаций номеров счетов и кодов, чтобы найти положительный баланс подарочной карты или вознаграждения, который они могут украсть.

  • Парсинг цен для отслеживания и опережения предложений конкурентов

  • Участие в DDoS-атаках, чтобы завалить сайт запросами

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

Вернемся назад и вспомним про поколения ботов. Сегодня принято считать, что есть четыре поколения:

  1. Боты первого поколения используют скрипты и отправляют cURL-подобные запросы к веб-сайтам. Чаще всего эти запросы идут с небольшого количества IP-адресов. У них нет возможности хранить файлы cookie или выполнять JavaScript, поэтому они не обладают возможностями настоящего веб-браузера.

  2. Боты второго поколения работают с помощью инструментов разработки и тестирования веб-сайтов, известных как «безголовые» (headless) браузеры (примеры: PhantomJS и SimpleBrowser), а также более поздних версий Chrome и Firefox, которые позволяют работать в автономном режиме. В отличие от ботов первого поколения, они могут поддерживать файлы cookie и выполнять JavaScript. Бот-мастера начали использовать headless браузеры в ответ на растущее использование JavaScript на веб-сайтах и в приложениях.

  3. Третье поколение использует для своей работы полноценные браузеры – выделенные или взломанные вредоносным ПО. Они могут имитировать базовые человеческие взаимодействия, такие как простые движения мыши и нажатия клавиш. Однако они не могут демонстрировать человеческую случайность в своем поведении.

  4. Боты последнего, четвертого, поколения обладают улучшенными характеристиками взаимодействия с людьми, в том числе перемещением указателя мыши в случайном, похожем на человека, образце, а не по прямым линиям. Эти боты также могут менять свои UA при ротации тысяч IP-адресов. Появляется все больше примеров того, что разработчики ботов осуществляют «угон поведения» - записывают, как реальные пользователи касаются и проводят по захваченным мобильным приложениям, чтобы более точно имитировать поведение человека на веб-сайте или приложении. Из-за взлома поведения их гораздо труднее обнаружить, поскольку их действия трудно отличить от действий реальных пользователей. Более того, их широкое распространение связано с большим количеством пользователей, чьи браузеры и устройства были взломаны.

Как можно заметить, владельцы ботнетов не останавливаются в своем развитии, а постоянно совершенствуют свои инструменты и методы.

Что же вообще нужно для борьбы с ботами? Начать с общего понимания чего вы хотите достичь и каким образом:

  • классифицировать ботов на основе того, что они делают, и влияния, которое они оказывают

  • управлять ими, применяя разные действия к разным запросам ботов

  • просматривать трафик ботов и анализировать, насколько эффективны стратегии управления

Прежде чем вы сможете управлять ботами, нужно понять, какие проблемы вызывают у вас боты, тщательно проанализировать всю активность и затем решить, как с ними бороться.

Какие решения вообще есть на рынке? Их достаточно много и делятся они в основном на два типа:

  1. Когда трафик целиком проходит через сеть поставщика решения (по типу CDN, выступающего reverse proxy)

  2. Когда на сайте клиента ставится своего рода коннектор, который уже сам обращается к облаку для определения бот/человек.

Из первой категории, самыми известными являются Akamai, Distill (ныне Imperva и их модуль ABP) и RadWare. Из второй – PerimeterX.

Рассказать можно про всех, но в этой статье остановлюсь на Akamai.

Для тех, кто не знаком с Akamai, вкратце расскажу, кто они и чем занимаются. Akamai – это поставщик услуг для акселерации веб-сайтов, провайдер платформ доставки контента и приложений (wiki). Начали они свою деятельность в далеком 1998г., как CDN провайдер. И за более чем 20 лет шагнули очень далеко вперед. На сегодня Akamai является не столько CDN, сколько полноценной платформой для доставки, оптимизации и защиты веб-трафика. Помимо самого CDN, также присутствуют такие модули, как оптимизация видео и изображений, WAF, DDoS mitigation (как на уровне L3/L4, так и на L7), защита от BOT, услуга DNS, Real User Monitoring (RUM), API Gateway и многое другое. В общем, при нехватке времени и наличии денег, можно закрыть довольно много вопросов. Присутствует ли Akamai в России? Да, их более 40 городов и эта цифра постоянно растет (в одном городе может быть несколько узлов – в одной только Москве их порядка 5). На этом закончим с маркетингом и посмотрим поближе что нам предлагают использовать.

Продукт, который защищает от ботов, в Akamai называется Bot Manager. Он есть в двух вариантах:

  • Bot Manager Standard (BMS)

  • Bot Manager Premier (BMP)

О различиях между ними расскажу ниже, а пока вообще начну с обзора функционала.

Как выглядит интерфейс конфигурации показано ниже на рисунке ниже.

Все, что находится в General bot management, относится к модулю BMS, Transactional endpoint protection – к BMP. Все правила выполняются сверху вниз, до первой блокировки.

Для чего используются Customer-Categorized Bots? Должно быть понятно из названия, что тут определяются боты, которых разрешают сами клиенты. Например, их партнеры, система мониторинга, прочее. Как мы можем определить такого бота? Вариантов тоже довольно много. Сначала мы определяем категорию (например, “Partners”), далее внутри определяем уже непосредственно самих ботов.

Как видно из рисунка выше, параметров для определения более чем достаточно.

Перейдем к следующему определению Akamai-Categorized Bots. Если обратить внимание, они выделены зеленым цветом, что намекает нам о том, что эти боты можно отнести к хорошим. Akamai описал более 1400 хороших ботов и разделил их на 17 категорий. Есть ли там отечественные боты? Да, есть: яндекс, мэил, вк, ок, и прочие. И вы уже сами можете решать кого пускать на ваш сайт, а кому сказать «пардоньте».

Наконец, добрались до самого интересного – неизвестных ботов. Есть два режима определения: прозрачный (transparent) и активный (active). По факту, для пользователя, и тот, и другой являются прозрачными. То есть пользователю не нужно проходить капчу или решать какие-то головоломки. Прозрачные механизмы определения показаны ниже:

Тут довольно много классификаторов, из названия которых можно понять, как они определяются. Например, “Impersonators of Known Bots” – это те боты, которые выдают себя, например, за Google, но им не являются. Все это определяется посредством пассивных проверок запроса:

  • Откуда пришел запрос

  • Кем представился

  • Если представился браузером Chrome – правильные ли заголовки стоят и в нужном ли порядке

  • Прочее

При Active проверках – подключается уже JavaScript и cookie (для мобильных приложений – SDK):

Akamai вставляет несколько cookie и потом их проверяет. Также очень часто включают валидацию браузера. Например, можно заблокировать всех, у кого JS отключен.

Довольно быстро мы дошли до дополнительного модуля BMP. Он используется там, где происходит взаимодействие пользователя с сайтом: нужно ввести логин/пароль, строка поиска, проверка промокода. Каждое такое взаимодействие описывается как endpoint. Например, мы посылаем запрос с методом POST на путь /login, в теле BODY мы передаем ключи user и pass. Соответственно, мы указываем все это в настройках endpoint-a и Akamai начинает анализировать поведение. BMP собирает телеметрию посетителя сайта и на основании переданных данных делает вывод – бот или человек. На самом деле, принципиальная разница между BMS и BMP состоит в том, что BMS, по сути, использует что-то типа скоринговой системы, в то время как BMP каждого посетителя по умолчанию считает ботом и просит доказать, что он человек. Собирается информация, как пользователь водил мышкой по экрану, как нажимал кнопки, и другие параметры. К сожалению, тут не будет каких-то рисунков, потому что всегда это уникальные настройки для каждого сайта.

Довольно частый вопрос: нужно ли защищать мобильное приложение от ботов? Ну, я просто скажу так: защищая сайт и не защищая мобильное приложение – это равносильно тому, что купить отличную железную дверь с китайским замком. Пройдет пару месяцев, владельцы ботнетов поймут, где у вас дыра и начнут атаковать именно через нее. Вопрос времени как говорится.

Теперь один из самых главных вопросов: что же мы можем сделать с ботами или категориями? Тут тоже далеко не один вариант:

  • Оставить в режиме мониторинга (делать запись и продолжать дальнейшее наблюдение)

  • Отложить (подождать 1–3 секунды перед ответом)

  • Замедлить (подождать 8–10 секунд перед ответом)

  • Запретить (отдать 403 ошибку, или какую-то другую)

  • Сделать Tarpit (не закрывать соединение, но и ничего не посылать в ответ)

  • Challenge (либо Google Captcha, либо Akamai Crypto Challenge)

  • Conditional action (можно настроить такой сценарий, как 20% пускать, всех остальных – рубить)

  • Отдать альтернативный контент

Сразу могу сказать, что делать Deny (с 403 ошибкой) является анти-паттерном. Отдавая ботнету 403 – вы сигнализируете владельцу сети, что вы его опознали и заблокировали. Прямо, красная тряпка для быка. Он изменит логику работы и через некоторое время придет к вам снова. Akamai рекомендует использовать Tarpit. Те, кто знаком с Linux, знают, есть такой action в IPTables. При использовании Tarpit, соединение не закрывается, но и клиенту ничего не отдается в ответ. Таким образом, бот вынужден висеть и не знает, что делать дальше. Тут тоже возникает вопрос: а выдержит ли Akamai? Выдерживает как-то. Имея по миру более 270 тысяч серверов, еще ни разу не подводил. Другим хорошим вариантом, является отдача альтернативной страницы. Например, бот пришел на ваш сайт с целью распарсить все товары. Вы его ловите, и отдаете страницы с совершенно другими ценами. Бот думает, что выполнил свою задачу и уходит, реально имея мусор вместо данных.

Отдельная тема для обсуждения – это отдача пользователю Captcha. Я иногда натыкаюсь на сайты, где не могу пройти несколько раз. ЪУЪ! Если вы являетесь приверженцем Google Captcha – можете продолжать ее использовать в Akamai. А можете вместо нее попробовать Crypto Challenge. Логика работы следующая: Akamai отдает в сторону пользователя математическую функцию, чтобы намайнить биткоинов которую нужно рассчитать браузером посетителя (длительность расчета от 30 секунд до нескольких минут, настраивается вами). И тут еще один момент, который нужно понимать: crypto challenge не будет отдаваться каждому пользователю (упаси так поломать конверсию сайта). Она появится у пользователя, только когда Akamai реально решит, что перед ним почти наверняка бот, и только как последняя надежда – попросит решить этот challenge (реальному пользователю нужно постараться).

Насколько хорош Akamai в этом вопросе? Мне сложно судить, я не владелец большого интернет-бизнеса (ну, по крайней мере, пока). Но слышу их отзывы: им нравится. Позитивно откликаются люди, отвечающие за безопасность, специалисты по маркетингу. Несколько недавних кейсов показали, что 60–70% трафика компаний были боты. Насколько это влияет на бизнес – можете судить сами.

Еще есть такой немаловажный фактор, как показ информации обо всех срабатываниях. Часто нужно понять, что, почему и когда было заблокировано. Скажу так: можно отфильтровать, найти и показать абсолютно все. Есть очень крутая штука еще: Akamai умеет определять не просто конкретного бота, а целиком весь ботнет. Даже если там используются тысячи адресов, даже если они рандомно меняют User-Agent. Как Akamai это делает – я могу только догадываться, но реально работает. Хотя, пропуская ежедневно порядка 30% легитимного трафика всей сети Интернет через себя, можно выстроить довольно хорошую аналитику, что они и сделали.

Как вообще появилась мысль написать эту статью? Два дня мы присутствовали на Highload++ в этом году со своим стендом GlobalDots, и к нам подходило достаточно много людей примерно с одинаковыми вопросами: Akamai есть в России? Есть еще что-то кроме CDN? Собственно, так эта небольшая статья и появилась.

На этом, наверное, все. Получилась такая довольно вводная статья. Я привык больше показывать, чем рассказывать – получается более информативно. Если есть вопросы – welcome to saint tropez в комментарии.

Теги:
Хабы:
+2
Комментарии2

Публикации

Изменить настройки темы

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн