Беспокойные соседи
DDoS-нападения, к сожалению, превратились в повседневность и, судя по всему, теперь затрагивают предприятия из самых разных сфер. Нельзя сказать, что их раньше не существовало — безусловно, существовали, однако в последние годы трансформировались и интенсивность, и специфика, и сама суть, а точнее — бессмысленность подобных атак. К примеру, на нашу компанию формально самое масштабное из недавних, однако далеко не самое проблемное нападение — флуд мощностью 10 Гбит/с — было осуществлено в конце 2021 года. Его отсеял хостинг-провайдер, базовую защиту от L3/L4-атак предлагают почти все хостеры. Но здесь обычно возникает несколько сложностей. Прежде всего, это «беспокойные соседи» и политика честного использования даже для стандартного безлимитного подключения. Внешний канал, как правило, разделён между всеми или по крайней мере группой клиентов, поэтому атака на одного из них способна затронуть остальных. А при действительно серьёзной угрозе такого абонента попросту отключают от сети. Забегая вперёд, отметим, что именно такая ситуация произошла с нами.

Во-вторых, при отдельной покупке защиты у хостера стоимость может оказаться неприятным сюрпризом. Особенно в ситуациях с единичными атаками, когда приходится оплачивать очистку трафика посегментно. Более того, при особенно неудачном развитии событий могут потребовать дополнительную плату и за всплеск трафика. Размер проблем зависит от хостинг-тарифов, характеристик атаки и вашей инфраструктуры. Наконец, в-третьих, базовая защита от хостера обычно не подразумевает специального контроля и качественного мониторинга, часто функционируя в одностороннем режиме с уведомлениями. Что касается хотя бы минимальной защиты от L7 — её практически никто не предоставляет, только как отдельную услугу, которая, вероятнее всего, представляет собой перепродажу чужого сервиса.
Оптимальным выходом из сложившейся ситуации становится обращение к узкопрофильному провайдеру. Среди востребованных платформ выделяется CloudFlare, предоставляющий за умеренную плату анти-DDoS защиту, CDN, веб-брандмауэр и множество дополнительных функций. Однако здесь существуют свои особенности. Прежде всего, не все предлагаемые сервисы необходимы каждому клиенту — часть из них относится к категории "приятных бонусов", а не обязательных элементов. К тому же, действительно важные функции могут оказаться платными и иметь ограничения по использованию. Во-вторых, CloudFlare печально известен случаями, когда клиентам выставляются заоблачные счета при превышении лимитов. И наконец, учитывая постепенное ограничение работы CloudFlare в России, целесообразность его использования ставится под сомнение. Тем не менее, нельзя отрицать, что взаимодействие с платформой организовано удобно — даже базовая настройка через перенос DNS-зоны выполняется интуитивно понятно.
Переезд
Хотя L7-атаки, частота которых резко возросла с 2022 года, доставляют наибольшие проблемы, традиционные флуд-атаки также остаются распространёнными. С подобной ситуацией пришлось столкнуться и нам. Если раньше хостинг-провайдер успешно справлялся с подобными инцидентами, то в этом зимнем сезоне его возможностей оказалось недостаточно. В один из выходных дней на наш ресурс была направлена атака, достигшая пиковых значений 2996 Мбит/с при 307405 пакетах в секунду. Уже через полчаса провайдер обоснованно принял решение о блокировке нашего сетевого доступа. К счастью, атака не отличалась сложностью, поэтому переход на новые IP-адреса временно устранил проблему. Точную продолжительность атаки установить не удалось, но тестовые включения в течение последующих часов демонстрировали её продолжение. На следующий день атака возобновилась.
Стало очевидно, что переход под защиту специализированного провайдера является неизбежным шагом. Curator (ранее известный как Qrator Labs) — один из пионеров в этой области на российском рынке. Если ранее казалось, что подобные услуги требуются лишь крупным корпорациям или привлекательным для хакеров целям, то теперь ясно, что под удар может попасть любая организация — даже такая небольшая и неприметная, как наша.
Сама процедура миграции оказалась довольно простой. От Curator приходит детальное руководство с понятными шагами для первоначальной конфигурации. В нашей ситуации речь шла о нескольких веб-ресурсах, где Curator функционирует как обратный прокси к нашим серверам (апстримам), поэтому потребовалось лишь обновить A-записи соответствующих доменов, настроить сертификаты Let’s Encrypt на стороне Curator с их последующим автоматическим продлением, а также добавить апстримы — подключения к нашим собственным серверам (включая поддержку TLS и HTTP/2). Здесь же можно персонализировать внешний вид страниц, которые Curator будет показывать при ошибках 502/503/504.
Кроме того, в инструкциях по начальной настройке советуют перевести апстримы на новые IP-адреса, желательно из других подсетей, и ограничить доступ к ним, разрешив его только для подсетей Curator. Особенно это важно при проведении миграции в условиях активных атак. В панели управления доступен набор инструментов для проверки доступности ваших серверов с узлов Curator (и любого другого IP), анализа маршрутизации и корректности настроек доступа. На уровне апстримов можно настроить балансировку нагрузки через Round robin/IP hash с распределением запросов, а также активировать мониторинг работоспособности апстримов. Ещё один полезный нюанс — возможность настройки перенаправлений с кодами 301/302/307/308 непосредственно на стороне обратного прокси с опцией изменения имени хоста и пути.
При необходимости можно загрузить собственные SSL-сертификаты и направлять логи HTTP-трафика, что позволит Curator обеспечивать дополнительную защиту от атак на уровне приложений. Также пользователи могут самостоятельно регулировать доступность ресурсов, пополняя через API белые и чёрные списки IP-адресов с указанием периода действия правил (от суток до постоянного блокирования), используя реальные IP-пользователей, предоставляемые Curator. Целесообразно активировать оповещения о превышении установленных лимитов (в Мбит/с) для входящего, исходящего и пропускного трафика, а также о количестве заблокированных адресов.
Но функциональные возможности на этом не заканчиваются. Curator способен функционировать в роли обратного TCP/Websocket-прокси или обеспечивать защиту отдельных TCP-соединений. Крупным клиентам доступна защита автономных систем и подключение к Curator через IPIP/GRE туннели. Дополнительно предоставляются услуги веб-брандмауэра (WAF) и защищённого DNS-сервера с поддержкой трансфера зон. Все перечисленные услуги сопровождаются расширенной аналитикой и проактивной защитой от кибератак. Инфраструктура Curator обладает пропускной способностью 4 Тбит/с, включает 18 фильтрационных узлов по миру и имеет прямые подключения к операторам уровня Tier-1.
Защита от ботов
Помимо противодействия DDoS-атакам, Curator осуществляет фильтрацию пользовательских запросов на своей стороне, прежде всего для нейтрализации ботов. В основе системы лежит прозрачная логика, полностью настраиваемая клиентом, который лучше понимает, каким пользователям следует предоставлять доступ. Настройки разделены на две логические группы: методы фильтрации и критерии отбора.
Для решения первой задачи применяются элементарные конструкции ЕСЛИ–ТО. В блоке ЕСЛИ определяется комбинация из трёх последовательно проверяемых критериев: хост (или группа хостов, настраиваемая в этом же модуле), метод запроса (GET, POST и другие), а также путь (следующий за доменом) или URI. Допускается указание частичного соответствия для любого параметра либо использование регулярных выражений. Блок ТО содержит три базовых действия: разрешить доступ с проверкой — при первичном запросе вернуть статус 401, выполнить сбор цифрового отпечатка браузера через jаvascript с установкой cookie, при необходимости добавив CAPTCHA; разрешить доступ только при наличии cookie, то есть они должны быть предварительно установлены; пропустить без действий. Имеется специальная функция для интеграции со сторонними CDN-сервисами, требующими неограниченного доступа к материалам. Curator поддерживает работу с Ngenix, Akamai и G-Core, включая протокол аутентификации G2O.
Созданные правила распространяются на весь входящий трафик согласно установленному уровню проверок, за исключением указанных географических зон, а также конкретных IP-адресов или подсетей. Система Curator советует начать тестирование антибот-механизмов на ограниченной группе пользователей, поэтапно расширяя охват до полного трафика. Для отладки защиты от ботов отдельно настраивается перечень IP-адресов, для которых проверки выполняются в обязательном порядке, а также отключаются все проверки для клиентов с определёнными HTTP-заголовками.
Дополнительно, для защиты запросов, исходящих не от веб-браузеров (или минимум от WebView с поддержкой jаvascript), Curator позволяет использовать вместо проверки cookie (которые невозможно установить при прямом обращении к API из приложения) верификацию хеша, формируемого на основе HTTP-заголовков и секретного ключа.
CDN
Сервис CDN от Curator — это недавно добавленная, но крайне ценная функция, которая ускоряет передачу контента конечным пользователям и сокращает расходы на трафик у вашего хостинг-провайдера. Это достигается за счёт кеширования на стороне Curator, автоматического преобразования изображений в формат WebP с выбранной степенью сжатия (если итоговый файл оказывается больше исходного, передаётся оригинал), а также благодаря поддержке HTTP/2 и методов сжатия gzip/deflate/brotli. Для видеоконтента предусмотрена работа с HLS и DASH потоками. Кроме того, сама сеть CDN защищена от DDoS-атак.
Настройка CDN также предельно проста: Curator предоставляет домен (точнее, поддомен), который можно связать с вашим собственным поддоменом (или поддоменами) через CNAME-запись. Как и ранее, вы можете выпустить для него сертификат Let’s Encrypt прямо в интерфейсе Curator или загрузить свой собственный. Это удобно, так как позволяет при необходимости легко перейти на другого поставщика CDN-услуг.
Управлять сроком хранения объектов в кеше CDN можно с помощью заголовков expires и cache-control. Если они не установлены, по умолчанию время жизни составляет 6 часов. Также есть возможность принудительно отправлять клиентам cache-control: no-cache. CDN способен кешировать ответы с ошибками — как глобально, так и для отдельных пользователей, чтобы снизить нагрузку на исходный сервер. Дополнительно можно настроить регулярные выражения для блокировки доступа к определённым URL (в этом случае возвращается код 404), а также включить перенаправления с кодами 301/302/307/308 непосредственно на стороне CDN. Кроме того, реальный IP-адрес клиента может передаваться исходному серверу через специальный заголовок.
С помощью GET-параметров можно выполнять обрезку, изменение масштаба или преобразование изображений непосредственно на стороне CDN. Платформа работает с JPEG, PNG, TIFF, WebP и AVIF, включая конвертацию между этими форматами, однако если преобразование формата явно не задано, все операции с изображениями по умолчанию возвращают JPEG либо WebP, если активирована соответствующая опция. В тестовом режиме доступна возможность выборочного отключения массового преобразования в WebP через GET-параметр — это полезно, когда такая конвертация даёт неудовлетворительный результат (например, для скриншотов или графиков) или не требуется (оригиналы фотографий), но при этом нет необходимости полностью отказываться от этой функции.
ACL и API
Система управления доступом реализована по стандартной, но продуманной схеме — предусмотрено несколько предустановленных групп пользователей, с возможностью создания собственных, в том числе вложенных, для повышения гибкости. В рамках каждой группы настраиваются правила доступа к разделам, подразделам или отдельным возможностям. Всего доступно более 30 параметров, причём для некоторых предусмотрена детальная настройка, например, ограничение доступа к определённым сертификатам. Для каждого правила можно выбрать политики read, update, create, delete (причём последние три автоматически включают и read). Для усиления безопасности рекомендуется активировать двухфакторную аутентификацию (TOTP или ключи доступа) для всех учётных записей, а также подключить оповещения о значимых событиях.
Для взаимодействия с API применяются токены, которые передаются (исключительно по HTTPS/TLS/SSL) через отдельный HTTP-заголовок. Каждому токену можно назначить набор политик, при необходимости ограничив доступ только к части ресурсов клиента. Доступно несколько десятков различных API, охватывающих значительную часть функциональности, представленной в консоли Curator.
Создать полностью собственную панель управления не получится, так как определённые вспомогательные блоки, например финансовая отчётность, через API недоступны. Хотя Curator не позволяет напрямую работать с аналитикой, он даёт инструменты для самостоятельного построения графиков по ключевым показателям: посещаемости, запросам, времени отклика, сбоям и другим. Также система ежемесячно формирует сводный отчёт с углублённой информацией о состоянии ваших ресурсов.
Итоги
С момента подключения к Curator весной текущего года серьёзных происшествий зафиксировано не было — и это основной результат. Конечно, это не гарантирует их отсутствия в перспективе, но в любом случае переход на Curator создаёт ощущение безопасности в непростые для Рунета периоды, что особенно ценно для онлайн-изданий, чья доступность для аудитории должна быть постоянной. Сам процесс перехода под защиту Curator от DDoS-атак прошёл без затруднений.
Использование CDN позволило сократить исходящий трафик с серверов практически в десять раз. Миграция на CDN сама по себе также не вызвала сложностей, хотя мы, видимо, оказались в числе первых клиентов этой услуги, поэтому некоторые моменты требовали оперативного уточнения и донастройки. К счастью, техническая поддержка Curator оперативна, компетентна и приятна в общении, что является редкостью. Они же, между прочим, помогли решить проблему, не связанную напрямую с Curator, но которая без миграции была бы обнаружена значительно позже.
Единственным недостатком сервиса можно считать недостаточно подробную документацию (это лишь внешняя часть, существует также внутренняя база знаний и руководство). Отчасти это объяснимо — платформа регулярно совершенствуется, иногда незначительно, иногда более существенно. Это заметно даже в тестовом доступе, который демонстрирует основные возможности, но всё же не полностью соответствует текущей, более отточенной и комфортной версии. В то же время, обращаться в службу поддержки с базовыми вопросами лишь из-за отсутствия пары фраз или указания в инструкциях выглядит не совсем логично.