Защита игрового сервиса от DDoS-атак

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

Такой «иммунитет» мы называем защищаемостью — этим термином мы определяем свойство интернет-ресурсов быть устойчивыми к DDoS-атакам с минимальными затратами средств, времени и усилий. В этой статье мы обсудим, как повысить защищаемость игровых сервисов, в которых активно применяются протоколы TCP и UDP. И сразу отметим, что практически всё, о чём мы расскажем, также справедливо в отношении многих других онлайн-сервисов, в которых взаимодействие с пользователями происходит в режиме, максимально приближенном к реальному времени. В частности, наши рекомендации помогут защитить онлайн-сервисы в системах интернета вещей (IoT) и промышленного интернета вещей (IIoT), работающих на базе TCP и UDP.

Защита игровых сервисов от DDoS-атак

Специфика защиты игровых сервисов

Игровые сервисы — как правило,сложные многокомпонентные программные комплексы. Зачастую это становится  неизбежной причиной наличия в них множества уязвимостей. «Закрыть» их от всех актуальных киберрисков и выстроить надёжную защиту бывает непросто.

Чтобы обеспечить высокую скорость взаимодействия с клиентами, онлайн-игры используют в первую очередь протоколы UDP и TCP, и это создаёт дополнительные сложности для провайдеров сервисов DDoS-защиты. В частности, далеко не все из них умеют фильтровать трафик UDP. Некоторые провайдеры, распознав атаку, просто блокируют UDP-трафик, даже не пытаясь отсеять нелегитимную его часть.

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

Как архитектура сервиса влияет на его устойчивость к DDoS-атакам

Для начала приведём два примера игровых сервисов, устойчивость которых к DDoS-атакам сильно различается в зависимости от того, какая архитектура была выбрана на начальных этапах их создания, а точнее, в процессе проектирования.

Первый пример — «плохой» сервис. Это некая онлайн-игра, работающая на основе протокола UDP. И сайт игры, и её серверный программный комплекс располагаются на одном IP-адресе. После каждого пользовательского запроса следует обращение сайта к собственной базе данных — таким образом происходит подсчёт статистики («онлайна»). 

Чтобы сделать игровой сервис недоступным, злоумышленник может зарегистрироваться как легальный пользователь, проанализировать трафик, найти закономерности в нём, а затем сымитировать последовательность пакетов, похожую на легитимную. И когда ботнет злоумышленника начнёт автоматическую генерацию сфальсифицированных запросов, на их обработку игровой сервис потратит существенную часть своей производительности. Ещё немного — он и вовсе «захлебнётся», пытаясь «переварить» резко возросший трафик, и станет недоступен. При этом станет недоступным и сайт. Так как игровой сервер отвечает медленно или не отвечает совсем, его бэкенд не сможет подключиться для подсчета «онлайна» и переполнит очередь процессов на хостинге.

Вопрос: легко ли провайдеру защиты от DDoS отфильтровать трафик, который сымитировал злоумышленник, от трафика легитимных пользователей этой онлайн-игры? Скорее всего, нет, потому что злоумышленник попытается сгенерировать вполне правдоподобную последовательность пакетов. Отделить такой вот «поддельный» трафик от легального удастся, только если активность каждого из ботов будет очень высокой — тогда станет понятно, что трафик создает бот, а не человек. 

Впрочем, злоумышленник сможет легко перехитрить защиту. Чтобы «положить» игровой сервис, совсем не обязательно, чтобы каждый из ботов создавал сумасшедший трафик. Нужно лишь, чтобы ботов было много, при этом активность отдельных заражённых устройств может не превышать активности нормальных пользователей.

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

Сайт и служба авторизации используют протокол HTTPS. Серверное приложение работает хитро: каждому из пользователей предоставляется свой набор IP-адресов, причём они берутся из пула IP-адресов, которые не идут подряд и принадлежат разным подсетям. Приложение устанавливает TCP-соединение сразу с несколькими IP-адресами, и если какие-то из них становятся недоступны, то оно переключается на другие. Чтобы удостовериться в том, что пользователь — именно тот или иной клиент, каждый раз при подключении мобильного приложения проверяется токен авторизации и IP-адрес пользователя.

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

Что нужно сделать ещё на стадии проектирования онлайн-игры

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

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

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

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

Один из наших заказчиков решил эту проблему, реализовав в своем игровом сервисе «иерархию» пользователей: после того, как игрок выходил на 20-й уровень, ему выдавался новый IP-адрес. Расчёт делался на то, что злоумышленник, скорее всего, ограничится тем IP-адресом, который ему будет выдан после авторизации на начальном этапе, и вряд ли будет преодолевать много уровней игры. Благодаря такому решению наиболее лояльные игроки не почувствуют DDoS-атаки на игровой сервис.

3. Не «зашивать» в программный код те IP-адреса, что используются для обращения игрового сервиса к другим интернет-ресурсам. Провайдеры защиты от DDoS-атак, как правило, предоставляют клиентам свои IP-адреса. Но если прежние адреса окажутся жёстко вписанными в код, то заменить их на адреса, выделенные провайдером, будет проблематично. Разумнее пользоваться адресацией с помощью DNS.

4. Избегать сильных взаимозависимостей между серверными компонентами игрового сервиса, а также между ними и другими программными системами, например СУБД. Иначе может получиться так, что если в результате атаки один из компонентов станет недоступным, то другие, потеряв возможность взаимодействовать с ним, впадут в «ступор» или аварийно завершат работу. Такое поведение игры , конечно же, воспримут негативно. Нужно предусмотреть вариант штатной работы компонентов игрового сервиса в случае, если другие перестанут отвечать на запросы.

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

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

Как мы уже упомянули, сеансы взаимодействия по протоколу UDP достаточно легко сфальсифицировать, что открывает перед злоумышленниками широкие возможности для целевых атак. Если вам всё же приходится использовать UDP, то нужно, по крайней мере, предусмотреть понятные возможности авторизации, которые провайдер защиты сможет использовать для разделения пользователей на легитимных и нелегитимных. В частности, можно, например, заложить в игру предварительную TCP-авторизацию.

StormWall для сервисов:
DDoS-защита для TCP/UDP сервисов

Провести аудит игрового сервиса и оценить потребности в DDoS-защите

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

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

Определить последовательность выстраивания DDoS-защиты поможет разработка «дорожной карты», в которой будут отражены основные шаги по повышению устойчивости игрового сервиса к DDoS-рискам, подключению сервисов antiDDoS и дальнейшему усилению защиты. 

Важно, чтобы эта «дорожная карта» учитывала не только планы развития онлайн-игры, но также текущую картину киберрисков и их динамику. Если игровой сервис является одним из компонентов более крупного ИТ-ландшафта (например, принадлежащего игровому или медиахолдингу), то необходимо согласовать «дорожную карту» и планы развития сервиса, приведя их в соответствие со стратегией информационной безопасности организации — оператора игры.

И, конечно же, если игровой сервис использует протоколы не только транспортного (L4 по модели OSI), но и прикладного уровня (L7), то нужно позаботиться о том, чтобы сервис  обеспечивал защиту трафика как на уровнях L3/L4, так и на уровне L7. Также очень рекомендуем подключиться хотя бы к двум сервисам DNS. При этом хотя бы один из них должен быть защищенным от DDoS-атак. Эта мера повысит устойчивость игрового сервиса к DDoS-атакам.

Предоставить провайдеру DDoS-защиты понятные возможности для фильтрации атак

Ключевая функция сервисов защиты от DDoS – фильтрация трафика, то есть блокирование нелегитимной его части и беспрепятственное пропускание легитимной. Чтобы это стало возможным, провайдер antiDDoS должен ясно понимать, по каким признакам можно точно определить, является ли трафик легитимным или, наоборот, сфальсифицированным. 

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

Для провайдера очень важно, чтобы правила фильтрации позволяли выделять и блокировать нелегитимный трафик, причём достаточно точно – иначе есть риск потерять легитимный. 

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

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

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

Подготовить информацию для провайдера защиты

Собрав информацию о работе игрового сервиса и приложив к ним результаты аудита его информационной безопасности с правилами фильтрации пакетов, нужно передать её провайдеру защиты от DDoS. Перечень важных для него деталей реализации онлайн-игр, не использующих UDP, совпадает с тем, что требуется для DDoS-защиты приложений, работающих на базе HTTP/HTTPS (подробности можно найти в статье «Как защитить сайт от DDoS-атак»). 

При защите онлайн-игр, использующих UDP, провайдеру antiDDoS важно знать также, какие сервисы работают на тех или иных портах, есть ли для них готовые профили защиты и насколько они актуальны для текущего релиза этой игры, требуется ли их модификация. 

Если готовых профилей защиты нет или их нужно откорректировать и выверить, то в согласованное с владельцем игры время (например, в период наименьшей активности игроков) провайдер сделает дамп трафика, проанализирует и подготовит профиль защиты, если его не было, или проверит имеющийся.

На всякий случай повторим: далеко не все провайдеры защиты от DDoS умеют фильтровать трафик UDP и могут в случае атаки просто блокировать его. Некоторые берутся фильтровать только часть протоколов на базе UDP. Поэтому очень важно уточнить у провайдера, может ли он фильтровать UDP-трафик и возьмётся ли за фильтрацию трафика именно вашего игрового сервиса. Например, StormWall имеет богатый опыт защиты онлайн-игр от DDoS-атак и успешно настраивает свои сервисы на самые разные протоколы взаимодействия на базе UDP.

Скрыть от злоумышленника информацию о вашем игровом сервисе

Достаточно опытный злоумышленник, прежде чем атаковать игровой сервис, постарается предварительно его изучить. Первым делом он попытается нанести удар по IP-адресам ключевых компонентов. 

Сама по себе замена IP-адресов, которая производится при подключении DDoS-защиты, не поможет защитить игровой сервис от DDoS-атак, поскольку IP-адреса интернет-ресурсов несложно определить с помощью инструментов, доступных в Интернете, таких как Shodan и MyIP. IP-адреса могут также «засветиться» в заголовках пакетов SMTP, используемых при рассылке сообщений и уведомлений по электронной почте. Необходимо сделать так, чтобы реальные IP-адреса не были видны ни в пакетах SMTP, ни через открытые порты, ни через иные сервисы.

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

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

Закрыть неиспользуемые сервисы и порты

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

Рекомендуем, не дожидаясь атаки, просканировать (например, с помощью Nmap) порты сервера, на котором развёрнут ваш игровой сервис. Так вы сможете выявить все открытые порты и закрыть те из них, что не используются. А чтобы надёжно закрыть доступ в обход защиты ко всем открытым IP-адресам и портам, настоятельно советуем использовать файрвол (например, NGFW или WAF).

Также рекомендуем убедиться в том, что открытые порты, к которым требуется доступ извне (например, SSH или SMTP), не выдают посредством баннеров информацию о вашем игровом сервисе или его домене. Как правило, доменное имя вносится в баннеры по умолчанию, и если злоумышленники обнаружат, что открытый порт сервера используется именно вашим игровым сервисом, то наверняка просканируют с помощью Shodan его домен, выявят используемые вашим сервисом IP-адреса и запустят через них DDoS-атаку. Проверить содержащуюся в баннерах информацию можно, подключившись к ним посредством Telnet. Чтобы вручную изменить информацию в баннерах, можно использовать OpenSSH, Postfix и другие подобные инструменты.

Оптимизировать серверные компоненты

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

Повысить производительность можно двумя основными способами. Первый — оптимизация игрового сервиса и платформы, на которой он развёрнут (если, конечно, у вас есть прямой доступ к платформе). В первую очередь нужно проанализировать сетевой стек операционной системы и удостовериться, что прерывания сетевой карты разнесены по разным процессорным ядрам и при необходимости разделить их вручную (подробности мы описали в этой статье). Это нужно, чтобы более равномерно распределить нагрузку на процессорные ядра.

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

Уменьшить вероятность отказа при атаке на один или несколько IP-адресов поможет и более равномерное распределение имеющегося пула адресов между компонентами сервиса, а также между клиентами. Кроме того, желательно обеспечить хотя бы несколько точек доступа к игровому сервису: если будет атакован один из «входных» IP-адресов, то вы сможете быстро указать в таблице DNS другой адрес. Аналогичным образом можно поступить и с IP-адресами, предоставляемыми клиентам: если некоторые из них будут атакованы, то можно отдать пользователям другие адреса. Разумеется, перед этим нужно реализовать надёжную (например, с помощью токенов) аутентификацию.

Подключить защищенные DNS-сервисы

Об использовании защищённых от DDoS-атак сервисов DNS и их дублировании мы уже рассказали выше. Поясним, что эти меры помогут минимизировать риски в случае атак на DNS, поскольку DDoS-атаки могут сильно снизить качество доступа к онлайн-игре. Защищённые сервисы DNS предоставляют сегодня как провайдеры antiDDoS (в том числе, конечно, StormWall), так и компании, специализирующиеся на DNS.

Подробнее: Атаки на DNS: типы и меры защиты

Систематически проверять защиту

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

Основной способ проверки защиты — стресс-тестирование. Оно нередко выполняется в ходе проведения аудита информационной безопасности, помогая оценивать уровень устойчивости игрового сервиса к слабым DDoS-атакам и выявлять его уязвимые места. Очень полезно проводить такую процедуру и в последующем — на стадии тестирования сервисов antiDDoS и после «окончательной» их настройки и адаптации. Поскольку для стресс-тестирования вполне можно использовать бесплатные инструменты, которые можно найти в свободном доступе, затраты будут минимальными.

Почему так важны стресс-тесты и другие проверки защиты от DDoS-атак

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

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

Выстроить процессы по обеспечению защиты от DDoS-атак

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

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

Итоговый чек-лист: как защитить игровой сервис от DDoS-атак

  • Заложить основу защищаемости ещё на стадии проектирования сервиса
  • Провести аудит игрового сервиса, оценить потребности в DDoS-защите, спланировать её развитие
  • Предоставить провайдеру antiDDoS понятные возможности для фильтрации атак
  • Подготовить информацию для провайдера antiDDoS
  • Скрыть от злоумышленника, насколько возможно, информацию о вашем игровом сервисе
  • Закрыть неиспользуемые сервисы и порты
  • Оптимизировать серверные компоненты
  • Подключить защищённые DNS-сервисы
  • Систематически проверять защиту
  • Выстроить процессы по обеспечению защиты от DDoS-атак

Защита сервисов TCP/UDP от DDoS-атак

  • Подключение за 10 минут
  • Поддержка 24×7