- безопасность
Как происходят DDoS-атаки на уровне L4 и о подходах к антиDDoS-защите мы рассказывали здесь. В этой статье речь пойдет об атаках уровня L7. Разберем, чем они отличаются от атак на L4, как можно защититься от них самостоятельно, а когда пора задуматься о специализированном сервисе.
Что такое DDoS-атака на уровне L7?
DDoS-атаки L7 направлены на приложения и обычно выполняются на уровне протокола HTTP/HTTPS. Это атаки, которые имитируют поведение реальных пользователей и обращаются к функциям веб-приложения, таким как формы авторизации, поиск, AJAX-запросы и так далее. Цель таких атак — исчерпать ресурсы сервера или сделать его недоступным для реальных пользователей, превышая лимиты обработки запросов.
Чем атака на L7 отличается от атаки на уровне L4?
DDoS уровня L7 нацелен на приложение, тогда как атаки L3/L4 направлены на сетевую инфраструктуру и транспортный уровень. Для атаки на инфраструктуру злоумышленник генерирует большой объем трафика.Для атаки на уровне L7 такие объемы не обязательны. Зная особенности приложения, атакующий может генерировать меньше запросов, но направить их точечно, в «узкое горло» приложения, и гарантированно ухудшить его работу или полностью положить его. Например, можно сделать 1000 запросов к базе данных, с которой работает приложение, и тем самым добиться отказа в его работе.
Как защититься от атак на уровне L7 без специализированного сервиса?
Атаки L7 часто сложнее обнаружить, потому что они маскируются под легитимный трафик. Для эффективной защиты от такого DDoS нужно уметь решать две задачи:
1. Отличать запросы реальных клиентов от DDoS-запросов. Для этого нужно анализировать содержимое запросов. Если они идут по https, то нужно потратить дополнительное время на расшифровку трафика. Это сложнее, чем анализ запросов при DDoS L4, когда нам достаточно определить источник трафика и по какому порту он пришел.
2. Правильно блокировать DDoS-запросы. Для этого нужно оборудование, которое умеет такие запросы определять и выделять, а также инфраструктура, которая могла бы это выдержать.
Что же можно предпринять, чтобы снизить риск успешных DDoS-атак L7?Ограничить количество запросов за определенный промежуток времени (threshold). Например, устанавливаем лимит в 5 запросов с одного IP-адреса в одну директорию. Здесь важно продумать лимиты и снова не отсечь реальных пользователей. Если пользователь 2 раза за 10 секунд запросил главную страницу — это нормально. Если 10 раз за 10 секунд — это уже сомнительно. А 100 запросов реальный пользователь тем более не будет посылать. Тогда можно подумать уже о блокировке IP-адреса, с которого идут эти запросы.
У такого подхода есть сложности.
- Ничто не мешает злоумышленнику мимикрировать под пользователя и с помощью скрипта загружать рандомные страницы.
- Если сделать более широкое правило и ограничить пороговое значение 100 запросами в минуту со всего сайта, можно столкнуться со следующей ситуацией: иногда только с одной страницы может идти до 25 запросов при подгрузке иллюстраций, форм и шрифтов. Будет очень сложно подобрать оптимальный лимит по количеству запросов.
За одним IP-адресом мобильного оператора может сидеть до 1000 пользователей. Поэтому, когда вы блокируете один IP, в карантин может улететь сразу 1000 пользователей. Таким образом, блокировка по IP-адресу — это определенный риск. В идеале нужно блокировать не по IP, а по кукам. Когда пользователь заходит на сайт, ему выдаются куки, по которым он идентифицируется. Потом браузер переносит эти куки в каждый следующий запрос. Если злоумышленник не очень продвинутый, то он не озаботится чисткой куков, когда будет копировать запросы в скрипт. Тут то его и можно будет подловить.
Блокировку по кукам организовать сложнее. Не у каждого веб-сервера есть встроенный механизм, позволяющий делать такую блокировку.
Использование капчи. Здесь просто: когда клиент делает определенное количество запросов, вы даете ему капчу и, если он ее не решает, можно его заблокировать.
Капча может быть разной. Превентивные предлагают пользователю решить какую-то задачу, например, вписать текст в поле формы, поставить галочку или выбрать картинки. Более продвинутые анализируют поведение пользователя на странице. Например, как он двигает мышкой.
Анализ типа браузера. Чтобы определить, кто стучится к вам на сайт — нужно смотреть, с какого браузера обращается пользователь. Реальные пользователи заходят через браузеры, а злоумышленники для атак используют имитации браузеров. В составе веб-серверов есть специальные фреймворки, которые проводят проверки браузера на подлинность.
Анализ заголовков. Здесь нет какого-то универсального рецепта, который позволит отсечь заголовки запросов, исходящих от злоумышленника. Этот пункт про то, что у вас должна быть возможность анализировать исторические данные, выявлять аномалии и оперативно блокировать атаку. Собственно этим и занимаются в автоматическом режиме сервисы защиты от DDoS-атак. Если заниматься этим самостоятельно, то как минимум придется придумывать решение для сбора и хранения логов, а также их визуализации для анализа. Помимо значительных трудозатрат с «ручным» анализом вы неизбежно будете реагировать на атаки постфактум: время уйдет на обнаружение аномалий, продумывание плана действий и применение блокировки. Сервисы защиты от DDoS работают оперативно, реагируют уже при первых признаках нелегитимного трафика и срезают 90% атаки в первые несколько минут.Все вышеперечисленное — это основные подходы, из которых складывается антиDDoS-защита на уровне L7 «своими руками». Если обобщить, комплексная защита будет выглядеть следующим образом:
- смотрите, кто к вам обращается: IP и куки,
- проверяете содержимое запроса: заголовки и payload,
- считаете, сколько идет запросов в какие директории за единицу времени,
- определяете, с какого браузера идут запросы,
- проверяете пользователя на реальность с помощью капчи.
Когда стоит подключать сервис защиты от DDoS-атак на L7?
Решение о подключение специализированного сервиса защиты от DDoS-атак на L7 стоит принимать, прежде всего, на основе вашей модели угроз. Если DDoS-атаки на L7 в ней относятся к критичным угрозам, лучше не рисковать и превентивно подключить специализированный сервис защиты от DDoS-атак на уровне L7. В него уже встроено большинство паттернов атак и продуманы алгоритмы борьбы с ними, и вам не нужно будет думать о том, как их правильно применить.Кроме того, у сервиса будет SLA с регламентированным временем реакции, допустим 5 минут, и процентом блокируемых атак, например 90%.
Как выбрать сервис защиты от DDoS-атак на L7?
1. Репутация провайдера. Можете ли вы ему доверять: давно ли компания на рынке, не было ли длительных или частых даунтаймов, какие отзывы и впечатления о работе ее техподдержки в профессиональном сообществе. Можете ли доверить провайдеру сертификат?
2. Стоимость решения. У разных провайдеров разные модели лицензирования. Кто-то лицензирует по мегабитам, кто-то — по запросам (RPS). У приложений разная логика, поэтому для одного и того же приложения у одного провайдера защита будет дорогой, а у другого – приемлемой.
3. Точки присутствия провайдера. Если вы находитесь в Сибири, оптимально выбрать провайдера с точками присутствия в вашем регионе. Это не для всех критичный фактор выбора, но как дополнительное преимущество провайдера.
4. Дополнительные опции. Со временем вам могут понадобиться другие сервисы - CDN, антиботы, WAF. Хорошо, если партнер тоже может их предоставить.
Можно ли встать под защиту прямо под атакой?
Под защиту можно вставать не только превентивно, но и непосредственно во время атаки. Схема такая же, как и при защите от атак на L4:
- Обращаетесь к провайдеру;
- Предоставляете ему SSL (TLS) сертификат;
- Переключаете DNS на IP-адреса провайдера, а на своих старых адресах делаете ограничения.
- Провайдер «отрезает» трафик от злоумышленников и отдает вам очищенный клиентский трафик.
Правда, при подключении сервиса в процессе атаки стоит учитывать определенный таймлаг. Потребуется время, как минимум, на настройку новых правил и обновление DNS. Если бизнес несет ощутимые убытки даже от непродолжительного простоя онлайн-сервисов, то лучше озаботиться подключением сервиса защиты от DDoS заранее.