10 ноября 2022
Мы нередко сталкиваемся с ситуациями, когда клиенты сервисов защиты от DDoS-атак полагают, что само по себе подключение этих сервисов полностью обезопасит от связанных с этими атаками неприятностей. Увы, это не так: DDoS-защита – это не волшебный эликсир и не «суперсила», и чтобы она работала эффективно, нужно, чтобы сами сервисы обладали достаточным «иммунитетом» к DDoS-рискам.
Этот «иммунитет» мы называем защищаемостью – этим термином мы определяем свойство интернет-ресурсов быть устойчивыми к DDoS-атакам с минимальными затратами средств, времени и усилий. О подробностях нашего подхода можно узнать в этой статье.
Обсудим в этой статье, как повысить защищаемость игровых сервисов, в которых активно применяются протоколы TCP и UDP. И сразу отметим, что практически всё, о чем мы расскажем, справедливо и в отношении многих других онлайн-сервисов, в которых взаимодействие с пользователями происходит в режиме, максимально приближенном к реальному времени. В частности, наши рекомендации помогут защитить онлайн-сервисы в системах Интернета вещей (IoT) и промышленного Интернета вещей (IIoT), работающие на базе TCP и UDP.
Специфика защиты сервисов
Игровые сервисы – это, как правило, достаточно сложные многокомпонентные программные комплексы. Зачастую их сложность становится неизбежной причиной наличия в них множества уязвимостей. «Закрыть» их от всех актуальных киберрисков и выстроить надежную защиту от них бывает непросто.
Чтобы обеспечить высокую скорость взаимодействия с клиентами, онлайн-игры используют в первую очередь протоколы UDP и TCP, и это создает дополнительные сложности для провайдеров сервисов Anti-DDoS. В частности, далеко не все из них умеют фильтровать трафик UDP. Некоторые провайдеры, распознав атаку, просто блокируют UDP-трафик, даже не пытаясь отсеять нелегитимную его часть.
Поэтому выбор провайдера Anti-DDoS при защите игровых сервисов имеет критически важное значение. Необходимо убедиться, что провайдер располагает возможностью установить DDoS-сенсор и готов фильтровать трафик сервиса, в том числе UDP-пакеты (если, конечно, они используются). Более подробно о выборе провайдера можно узнать в разделе «Что требуется для защиты» вышедшей недавно статьи.
Что такое «хороший» сервис и что такое «плохой», или Как архитектура сервиса влияет на его устойчивость к DDoS-атакам
Для начала приведем два примера игровых сервисов, устойчивость которых к DDoS-рискам сильно различается в зависимости от того, какая архитектура была выбрана на начальных этапах их создания, а точнее, на этапе проектирования.
Первый пример, «плохой» сервис – это некая онлайн-игра, работающая на основе протокола UDP. И сайт игры, и ее серверный программный комплекс располагаются на одном IP-адресе. После каждого пользовательского запроса следует обращение сайта к собственной базе данных – таким образом происходит подсчет статистики (“онлайна”). Чтобы сделать игровой сервис недоступным, злоумышленник может зарегистрироваться как легальный пользователь, проанализировать трафик, найти закономерности в нем, а затем сымитировать последовательность пакетов, похожую на легитимную. И когда ботнет злоумышленника начнет автоматическую генерацию сфальсифицированных запросов, на их обработку игровой сервис потратит существенную часть своей производительности, еще немного – он и вовсе «захлебнется», пытаясь «переварить» резко возросший трафик, и станет недоступен. При этом станет недоступен и сайт: т.к. игровой сервер отвечает медленно или не отвечает, его бэкенд не сможет подключиться для подсчета “онлайна” и переполнит очередь процессов на хостинге.
Вопрос: легко ли провайдеру Anti-DDoS отфильтровать трафик, который сымитировал злоумышленник, от трафика легитимных пользователей этой онлайн-игры? Скорее всего, нет, потому что злоумышленник попытается сгенерировать вполне правдоподобную последовательность пакетов. Отделить такой вот «поддельный» трафик от легального удастся, только если активность каждого из ботов будет очень высокой – тогда станет понятно, что трафик создает бот, а не человек. Впрочем, злоумышленник сможет легко перехитрить защиту, ведь чтобы «положить» игровой сервис, совсем не обязательно, чтобы каждый из ботов создавал сумасшедший трафик, нужно лишь, чтобы ботов было много, при этом активность отдельных ботов может не превышать активности нормальных пользователей.
Представим другой игровой сервис, который продемонстрирует основы «хорошего» подхода, обеспечивающего высокую устойчивость к DDoS-атакам. Основные компоненты этой онлайн-игры реализованы отдельно: веб-сайт, служба авторизации пользователей и серверное приложение. Сайт и служба авторизации используют протокол HTTPS. Серверное приложение работает хитро: каждому из пользователей предоставляется свой набор IP-адресов, причем они берутся из пула IP-адресов, которые, во-первых не идут подряд, а во-вторых, принадлежат разным подсетям. Приложение устанавливает TCP-соединение сразу с несколькими IP-адресами, и если какие-то из них становятся недоступны, то переключается на другие. Чтобы удостовериться в том, что пользователь – именно тот или иной клиент, каждый раз при подключении мобильного приложения проверяется токен авторизации и IP-адрес пользователя.
В такой схеме злоумышленнику, не знающему деталей реализации онлайн-игры, будет весьма проблематично провести DDoS-атаку так, чтобы она нарушила ее работу. Подделать нормальную активность хакеру тоже будет сложно.
Что нужно сделать еще на стадии проектирования онлайн-игры
Устойчивость, также как и уязвимость онлайн-игр к киберрискам во многом закладывается на стадии разработки, а точнее, проектирования этих программных систем. После того, как игровой сервис переходит в продуктивную эксплуатацию, латать в нем бреши становится дорого и хлопотно, поэтому тем, кто только приступает к разработке онлайн-игр, рекомендуем очень тщательно проработать вопросы кибербезопасности и киберустойчивости уже на самых ранних этапах создания этих систем. Крайне полезно при этом тесно взаимодействовать с экспертами в области информационной безопасности и специалистами по защите от DDoS-атак.
Чтобы повысить защищаемость создаваемых игровых сервисов, рекомендуем придерживаться следующих принципов:
1. В ходе разработки протокола взаимодействия онлайн-игры со своими пользователями предусмотреть возможности, которые позволят точно отличить легитимные сеансы от сфальсифицированных. И будет замечательно, если при этом удастся заложить в протокол некие маркеры или хитрые, неочевидные правила, по которым можно будет однозначно определить, является ли легитимным данный пользователь и конкретный его сеанс или нет. Этот протокол взаимодействия и правила фильтрации его пакетов необходимо тщательно задокументировать и затем предоставить провайдеру Anti-DDoS, чтобы он смог успешно отделять легитимный трафик от того, что сгенерируют боты злоумышленника.
2. В ходе проектирования предусмотреть максимум возможностей, чтобы скрыть реальные IP-адреса, которые используются для доступа к игре авторизованными пользователями, от неавторизованных клиентов – это сильно сузит возможности злоумышленников для проведения DDoS-атак. Один из наших заказчиков решил эту проблему, реализовав в своем игровом сервисе «иерархию» пользователей: после того, как игрок выходил на 20-й уровень, ему выдавался новый IP-адрес. Расчет делался на то, что злоумышленник, скорее всего, ограничится тем IP-адресом, который ему будет выдан после авторизации на начальном этапе, и вряд ли будет преодолевать много уровней игры. Благодаря такому решению наиболее лояльные игроки не почувствуют DDoS-атаки на игровой сервис.
3. Не «зашивать» в программный код те IP-адреса, что используются для обращения игрового сервиса к другим интернет-ресурсам. Провайдеры защиты от DDoS-атак, как правило, предоставляют клиентам свои IP-адреса. Но если прежние адреса окажутся жестко заложенными в код, то заменить их на адреса, выделенные провайдером Anti-DDoS, будет весьма проблематично. Разумнее пользоваться адресацией с помощью DNS.
4. Избегать сильных взаимозависимостей между серверными компонентами игрового сервиса, а также между ними и другими программными системами, например СУБД. Иначе может получиться так, что если в результате атаки один из компонентов станет недоступен, то другие, потеряв возможность взаимодействовать с ним, впадут в «ступор» или аварийно завершат работу, что пользователи, конечно же, воспримут весьма негативно. Нужно предусмотреть вариант штатной работы компонентов в случае, если другие компоненты игрового сервиса перестанут отвечать на запросы.
5. Дублировать, насколько возможно, доступ к функциям онлайн-игры через разные IP-адреса, взятые из разных подсетей, – это поможет снизить вероятность одновременного отказа всего игрового сервиса: если на часть IP-адресов обрушится атака, то он сможет продолжить обслуживать пользователей, подключенных по другим адресам.
Несмотря на то, что протокол UDP удобнее использовать в онлайн-играх, с точки зрения DDoS-защиты целесообразнее опираться на TCP, поскольку атаки по этому протоколу легче отражать. Как мы уже упомянули, сеансы взаимодействия по протоколу UDP достаточно легко сфальсифицировать, что открывает перед злоумышленниками широкие возможности для целевых атак. Ну а если вам все же приходится использовать UDP, то нужно, по крайней мере, предусмотреть понятные возможности авторизации, который провайдер Anti-DDoS сможет использовать для того, чтобы отделять легитимных клиентов от нелегитимных. В частности, можно, например, заложить в игру предварительную TCP-авторизацию.
Провести аудит игрового сервиса, оценить потребности в DDoS-защите и спланировать ее развитие
Если онлайн-игра уже находится в продуктивной эксплуатации, то необходимо тщательно изучить ее архитектуру и работу, а затем задокументировать – это поможет провайдеру Anti-DDoS понять, как лучше выстроить защиту. Кроме того, очень полезно провести аудит информационной безопасности игрового сервиса, чтобы выявить его уязвимые места и понять, что с ними делать.
Полученная в результате аудита информация поможет спланировать выстраивание и дальнейшее развитие защиты от DDoS-атак. Очень важно при этом, чтобы она охватила все компоненты игрового сервиса, используемые им IP-адреса, порты и прочие ресурсы, доступные извне. Комплексность и полнота охвата защиты – одно из ключевых условий ее эффективности.
Определить последовательность выстраивания DDoS-защиты поможет разработка «дорожной карты», в которой будут отражены основные шаги по повышению устойчивости игрового сервиса к DDoS-рискам, подключению сервисов Anti-DDoS и дальнейшему усилению защиты. Важно, чтобы эта «дорожная карта» учитывала не только планы развития онлайн-игры, но также текущую картину киберрисков и их динамику. Если игровой сервис является одним из компонентов более крупного ИТ-ландшафта (например, принадлежащего игровому или медиахолдингу), то необходимо согласовать «дорожную карту» и планы развития сервиса, приведя их в соответствие со стратегией информационной безопасности организации – оператора игры.
И, конечно же, если игровой сервис использует протоколы не только транспортного (L4 по модели OSI), но и прикладного уровня (L7) – HTTP/HTTPS, то нужно позаботиться о том, чтобы сервис Anti-DDoS обеспечивал защиту трафика как на уровнях L3/L4, так и на уровне L7. Также очень рекомендуем подключиться хотя бы к двум сервисам DNS, при этом хотя бы один из них должен быть защищенным от DDoS-атак – эта мера повысит устойчивость игрового сервиса к DDoS-рискам.
Предоставить провайдеру Anti-DDoS понятные возможности для фильтрации атак
Ключевая функция сервисов Anti-DDoS – фильтрация трафика, то есть блокирование нелегитимной его части и беспрепятственное пропускание легитимной. Чтобы это стало возможным, провайдер Anti-DDoS должен ясно понимать, по каким признакам можно точно определить, является ли трафик легитимным или, наоборот, сфальсифицированным. Для этого необходимо предоставить провайдеру соответствующие возможности.
В идеале, как мы уже сказали, возможности для фильтрации DDoS-атак следует предусмотреть и заложить еще в ходе проектирования онлайн-игры и тогда же подробно их задокументировать. Если речь идет об уже работающем игровом сервисе, то следует уделить время (желательно с привлечением провайдера Anti-DDoS), чтобы, наконец, детально задокументировать правила и порядок взаимодействия сервиса с его пользователями, а затем, проанализировав его, определить правила фильтрации трафика.
Для провайдера Anti-DDoS очень важно, чтобы правила фильтрации позволяли выделять и блокировать нелегитимный трафик, причем достаточно точно – чтобы не потерять при этом легитимный. В некоторых игровых сервисах для оценки легитимности пользователей предусмотрена процедура предварительной авторизации. При таком подходе легитимным считается трафик от клиентов, успешно прошедших эту авторизацию. Правда, чтобы преодолеть защиту, злоумышленнику достаточно научиться успешно авторизовывать свои боты. В других, более продвинутых игровых сервисах имеется набор правил взаимодействия с легитимными пользователями, который не только позволяет вполне односложно понять, легитимен ли данный клиент, но и сильно затрудняет имитацию легитимного трафика, которую злоумышленник мог бы использовать для организации целевой атаки.
Некоторые профессиональные провайдеры Anti-DDoS, использующие механизмы машинного обучения, способны проводить поведенческий анализ активностей и создавать модели нормального взаимодействия игрового сервиса со своими пользователями. И те активности, которые заметно выходят за рамки нормальной модели, автоматически блокируются.
Подготовить информацию для провайдера Anti-DDoS
Собрав информацию о работе игрового сервиса и приложив к ним результаты аудита его информационной безопасности и правила фильтрации пакетов, нужно передать эту информацию провайдеру Anti-DDoS. Перечень важных для него деталей реализации онлайн-игр, не использующих UDP, совпадает с тем, что требуется для DDoS-защиты приложений, работающих на базе HTTP/HTTPS, подробности можно найти в этой статье.
При защите онлайн-игр, использующих UDP, провайдеру Anti-DDoS важно знать также, какие сервисы работают на тех или иных портах, есть ли для них готовые профили защиты и насколько они актуальны для текущего релиза этой игры, требуется ли их модификация. Если готовых профилей защиты нет или их нужно откорректировать и выверить, то согласованное с владельцем игры время (например, в период наименьшей активности игроков) провайдер сделает дамп трафика, проанализирует, сделает выводы и подготовит профиль защиты, если его не было, или проверит имеющийся.
На всякий случай повторим: далеко не все провайдеры Anti-DDoS умеют фильтровать трафик UDP и могут в случае атаки просто блокировать UDP-трафик. Некоторые берутся фильтровать только некоторые виды протоколов на базе UDP. Поэтому очень важно уточнить у провайдера, может ли он фильтровать UDP-трафик, и если может, то возьмется ли за фильтрацию трафика именно вашего игрового сервиса. Например, StormWall имеет богатый опыт защиты онлайн-игр от DDoS-атак и успешно настраивает свои сервисы на самые разные протоколы взаимодействия на базе UDP.
Скрыть от злоумышленника, насколько возможно, информацию о вашем игровом сервисе
Достаточно опытный злоумышленник, прежде чем атаковать игровой сервис, постарается его предварительно его изучить. Первым делом он попытается нанести DDoS-удар по IP-адресам его ключевых компонентов. Сама по себе замена IP-адресов, которая производится при подключении сервисов Anti-DDoS, не поможет защитить его от DDoS-рисков, поскольку IP-адреса интернет-ресурсов несложно определить с помощью инструментов, доступных в Интернете, таких как Shodan и MyIP. IP-адреса могут также «засветиться» в заголовках пакетов SMTP, используемых при рассылке сообщений и уведомлений по электронной почте. Необходимо сделать так, чтобы реальные IP-адреса не были видны ни в пакетах SMTP, ни через открытые порты, ни через иные сервисы.
Кроме того, после подключения защиты нужно открыть доступ к онлайн-игре только через IP-адреса, предоставленные провайдером Anti-DDoS, а доступ ко всем другим IP-адресам игрового сервиса закрыть, настроив нужным образом сетевой экран, чтобы злоумышленник не смог атаковать онлайн-игру через незащищенные адреса.
Будет замечательно, если удастся скрыть от злоумышленника даже информацию, позволяющую ему понять, насколько успешной оказалась атака, удалось ли сделать игровой сервис или его компоненты недоступными.
Закрыть неиспользуемые сервисы и порты
Грамотно проведя аудит информационной безопасности вашего игрового сервиса и, в частности, сканирование извне, вы наверняка сможете понять, какие именно интернет-сервисы, порты используются, а какие нет. Те, что не задействованы в работе онлайн-игры, обязательно нужно отключить или заблокировать, чтобы предотвратить атаку через эти порты и сервисы. В противном случае злоумышленник может просканировать и выявить их, а затем нанести через них DDoS-удар по игровому сервису.
Рекомендуем, не дожидаясь атаки, просканировать (например, с помощью Nmap) порты сервера, на котором развернут ваш игровой сервис, чтобы выявить все открытые и закрыть те из них, что не используются. А чтобы надежно закрыть доступ в обход защиты ко всем открытым IP-адресам и портам, настоятельно советуем использовать сетевой экран (firewall).
Также рекомендуем убедиться в том, что открытые порты, к которым требуется доступ извне (например, SSH или SMTP), не выдают посредством баннеров информацию о вашем игровом сервисе или его домене (как правило, доменное имя вносится в баннеры по умолчанию), поскольку если злоумышленники обнаружат, что открытый порт сервера используется именно вашим игровым сервисом, то наверняка просканируют с помощью Shodan его домен, выявят используемые вашим сервисом IP-адреса и нанесут по ним прицельный DDoS-удар. Проверить содержащуюся в баннерах информацию можно, подключившись к ним посредством Telnet. Чтобы вручную изменить информацию в баннерах, можно использовать OpenSSH, Postfix и другие подобные инструменты.
Оптимизировать серверные компоненты
Как мы уже упомянули, задержки в трафике для онлайн-игр весьма критичны, поэтому очень важно, чтобы они обладали определенным запасом производительности – это поможет им пережить начало DDoS-атак и минимизировать задержки в случае, если небольшая часть нелегитимного трафика все-таки не будет отфильтрована провайдером Anti-DDoS. Заметим, что даже 1% трафика, оставшегося от мощной атаки, может оказать весьма сильное воздействие на игровой сервис.
Повысить производительность можно двумя основными способами. Первый – оптимизация игрового сервиса и платформы, на которой он развернут (если, конечно, у вас есть прямой доступ к платформе). В первую очередь нужно проанализировать сетевой стек операционной системы и удостовериться, что прерывания сетевой карты разнесены по разным процессорным ядрам и при необходимости провести их разнесение вручную (подробности мы описали в этой статье). Это нужно, чтобы более равномерно распределить нагрузку на процессорные ядра.
Второй способ, обычно требующий дополнительных затрат, – переход на более мощные и производительные (по возможности выделенные) серверы, физические или виртуальные. Для этого можно их нарастить или модернизировать либо приобрести или арендовать новые. Очень полезно также обеспечить резервирование ресурсов – компьютерного и сетевого оборудования, а также каналов связи с Интернетом.
Уменьшить вероятность отказа при атаке на один или несколько IP-адресов поможет и более равномерное распределение имеющегося пула адресов между компонентами сервиса, а также между клиентами. Кроме того, желательно обеспечить хотя бы несколько точек входа на игровой сервис: если будет атакован один из «входных» IP-адресов, то вы сможете быстро указать в таблице DNS другой адрес. Аналогичным образом можно поступить и с IP-адресами, предоставляемыми клиентам: если некоторые из них будут атакованы, то можно будет отдать в пользование клиентам другие адреса – разумеется, проведя перед этим надежную (например, с помощью токенов) аутентификацию клиентов.
Подключить защищенные DNS-сервисы
Об использовании защищенных от DDoS-атак сервисов DNS и их дублировании мы уже упомянули. Поясним, что эти меры помогут минимизировать риски в случае атак на DNS, поскольку DDoS-воздействия могут сильно снизить качество доступа к онлайн-игре. Защищенные сервисы DNS предоставляют сегодня как провайдеры Anti-DDoS (в том числе, конечно, StormWall), так и компании, специализирующихся на DNS.
Систематически проверять защиту
Проверять работоспособность и эффективность защиты от DDoS-атак нужно систематически. Во-первых, потому, что стремительно меняется ландшафт DDoS-рисков: со временем они только усиливаются – интенсивность и мощность атак растет, поскольку злоумышленники наращивают свои ботнеты, разрабатывают новые способы и инструменты для проведения атак, нередко кооперируются и координируются с целью организации еще более разрушительных DDoS-воздействий. Во-вторых, потому, что изменяется и ваш собственный ИТ-ландшафт: развертываются новые релизы игрового сервиса и его компонентов, обновляется его окружение и пр. Систематические проверки защиты помогают адекватно оценивать ее эффективность, своевременно выявлять и устранять появившиеся уязвимости.
Основной способ проверки защиты – стресс-тестирование. Оно нередко выполняется в ходе проведения аудита информационной безопасности, помогая оценить уровень устойчивости игрового сервиса к слабым DDoS-атакам и выявить его уязвимые места. Очень полезно проводить его и в последующем – на стадии тестирования сервисов Anti-DDoS и после «окончательной» их настройки и адаптации. Поскольку для стресс-тестирования вполне можно использовать бесплатные инструменты, которые можно найти в свободном доступе, затраты на стресс-тестирование будут минимальными.
Другой, более дорогостоящий вариант проверки – «учебные» DDoS-атаки на игровой сервис, которые можно заказать в компаниях, предоставляющих услуги информационной безопасности. Эксперты помогут вам исследовать ваш игровой сервис вместе с подключенной к нему защитой, оценить его устойчивость к DDoS-атакам и выявить слабые места.
Очень рекомендуем не ограничиваться проверками защиты в рабочие дни и часы, но также проводить их в периоды, когда большинство сотрудников, по всей вероятности, отдыхает: в выходные и праздничные дни, а также вечером накануне таких периодов.
Выстроить процессы по обеспечению защиты от DDoS-атак
Как известно, информационная безопасность – это процесс. Очень важно, чтобы работа по минимизации DDoS-рисков тоже была выстроена как процесс, причем гармонично встроенный в более общий процесс обеспечения информационной безопасности и тесно интегрированный с ее подпроцессами, такими как мониторинг и аудит, управление уязвимостями, конфигурациями, инцидентами и др. Очень важно также, чтобы в этот процесс были погружены не только ваши штатные специалисты, обеспечивающие сопровождение и развитие игрового сервиса, но и представители провайдера Anti-DDoS – это поможет эффективно обезопасить вашу онлайн-игру от DDoS-рисков в долгосрочной перспективе.
Итоговый чек-лист
- Заложить основу защищаемости еще на стадии проектирования приложения
- Провести аудит игрового сервиса, оценить потребности в DDoS-защите, спланировать ее развитие
- Предоставить провайдеру Anti-DDoS понятные возможности для фильтрации атак
- Подготовить информацию для провайдера Anti-DDoS
- Скрыть от злоумышленника, насколько возможно, информацию о вашем игровом сервисе
- Закрыть неиспользуемые сервисы и порты
- Оптимизировать серверные компоненты
- Подключить защищенные DNS-сервисы
- Систематически проверять защиту
- Выстроить процессы по обеспечению защиты от DDoS-атак