Как размещена и защищена платформа казино WW Games
То, что оператор вправе спросить до того, как доверит своих игроков и свои деньги чужому софту: где всё работает, кто имеет доступ, что записывается, что происходит при потере данных — и каких заявлений мы делать не можем.
Где работает казино на WW Games?
На сервере, арендованном под ваш бренд отдельно, со своим стеком приложений и своей базой данных. Хостинг-провайдер и регион согласуются при развёртывании и здесь не публикуются.
На самой машине почти ничего нет. Нет репозитория, нет исходников, нет файлов .env: на сервере стоит Docker, а каждый ключ и строка подключения приезжают вместе с деплоем как зашифрованный секрет, а не лежат файлом, забытым на хосте. Пересобранный сервер получает конфигурацию из пайплайна деплоя, а не из того, что осталось на старом диске.
Публичный трафик приходит через туннель Cloudflare. Сервер сам дозванивается до края сети Cloudflare и ничего не публикует наружу, поэтому на origin нет входящего слушателя, который можно найти, залить трафиком или фильтровать; хостовый файрвол запрещает входящие, кроме административного доступа. Домен резолвится в туннель, а не в сервер, и эти записи всегда проксируются, так что адрес origin в DNS не появляется. Отвечающего порта нет, сертификат с origin не отдаётся — интернет-сканеру нечего сопоставить с брендом, а именно так обычно и находят origin за закрытым, но открытым портом: его сертификат называет домен.
Что это даёт и чего не даёт. Это убирает цель, которая нужна атаке L3/L4: объёмную атаку надо куда-то направить, а адреса нет ни опубликованного, ни резолвящегося, ни отвечающего. Но полосу хоста это бесконечной не делает — если адрес узнали другим путём, пакеты по нему всё равно долетят. Это и вторая причина, по которой мы не публикуем провайдера и регион: покупателю это ничего не говорит о том, как устроена платформа, а тому, кто бренд атакует, стоит дороже, чем тому, кто его оценивает.
То, что origin не принимает прямые подключения, проверяется смоук-тестом при развёртывании, а не предполагается, — вместе с состоянием сервисов и маршрутизацией по хостам.
Лежат ли ваши данные вместе с данными других операторов?
Нет. Один бренд — один деплой со своей базой данных. Общей таблицы игроков, общей админки и общего реестра балансов между брендами на платформе нет.
Практическое следствие важно ровно тогда, когда что-то случилось не у вас: инцидент у другого оператора не доходит до ваших игроков, потому что нет места, где эти данные встречаются. Та же разделённость позволяет вывезти бренд целиком, а не выковыривать его из общей системы.
Этот вопрос стоит задавать каждому вендору прямо: ответы разные, и на странице цен их обычно нет. Часть платформ держит все бренды в одной базе с колонкой тенанта, часть берёт отдельную плату за отдельный деплой на каждый бренд — сравнение со Scalara как раз про второй случай.
Что будет, если атакуют другой бренд на платформе?
До вас это не дойдёт. Каждый бренд — отдельный деплой со своим приложением, базой, доменом и точкой входа, поэтому у атаки, блокировки или аварии на одном бренде нет пути к другому. Нет общего кластера, из ёмкости которого черпают все, и нет общего адреса, на котором все отвечают.
В этом и разница между разделением на бумаге и разделением на практике. Там, где все бренды стоят в одном кластере за одной точкой входа, DDoS, нацеленный на одного оператора, принимают те же машины, которые отвечают игрокам всех остальных, а блокировка одного домена приходится на инфраструктуру, на которой сидят другие. Радиус поражения — вся платформа, и прилетает не обязательно тому, кто это вызвал.
Здесь трафик каждого бренда приходит через свой домен и свой туннель Cloudflare — в вашем же аккаунте Cloudflare. За ним: отдельная база, отдельная админка со своими аккаунтами администраторов и бэкапы под своим префиксом ключей. Нет ни одного объекта, до которого дотягивается один бренд и которым пользуется другой.
Чем это не является: это не защита от DDoS и никак не помогает при атаке, нацеленной на вас. Это означает, что инцидент остаётся размером в один бренд, а не становится инцидентом платформы, — в том числе когда инцидент случился не у вас.
Честная обратная сторона — ёмкость. Общего пула нет, поэтому запас бренда — это сервер, на котором он работает: подобранный под него, изменяемый и не одолженный по-тихому у соседа, у которого выдался удачный месяц. Лучше подобрать его осознанно, чем узнать про общий пул той ночью, когда это стало важно.
Как делается резервная копия базы?
Полный дамп каждую ночь: проверяется до загрузки, кладётся в объектное хранилище Cloudflare R2, проверяется ещё раз уже там, и только после этого удаляются старые копии. Хранится несколько дней, и минимальное число копий остаётся всегда, независимо от их возраста.
Порядок здесь и есть суть. Дамп, оборвавшийся на середине, попадает в бакет правдоподобным объектом, и узнают об этом только при восстановлении, — поэтому ничего не загружается, пока локальная копия не проверена. Старые копии удаляются только после того, как новая подтверждена на месте: сломавшийся бэкап не может оказаться тем, что снесло последнюю рабочую копию, а обычное правило «удалять всё старше N дней» может — и делает это в самый тихий день недели.
Честная граница: это ночной логический дамп, восстановление возвращает базу к последней ночной копии. До суток записей может быть потеряно. Восстановление на произвольный момент требует непрерывного архивирования WAL, которого у нас сегодня нет. Вендор, который не называет свою точку восстановления, делает это не лучше — он просто вам не сказал.
И ещё: бэкап считается только после того, как его реально разворачивали. Учебное восстановление входит в рантбук развёртывания, а не в намерения.
Кто из вашей команды что может в админке?
Доступ выдаётся не должностями, а отдельными правами: их 56 на 24 раздела админки, и назначаются они на аккаунт. Саппорт, который видит историю игрока, не получает вместе с этим возможности двигать деньги.
Девятнадцати операциям мало просто активной сессии: нужен свежий код двухфакторки, введённый в момент действия и действительный пять минут. Это те операции, где угнанная сессия нанесёт реальный ущерб, — бан игрока, установка баланса, начисление бонуса или баллов, решение по фроду, подтверждение и отклонение выплаты, и всё, что касается других администраторов: создать, изменить, удалить, сбросить пароль или двухфакторку, отозвать сессию.
Игроки заходят иначе. На сайте есть passkey — учётные данные WebAuthn, несколько устройств на игрока, устойчивые к фишингу так, как код, вводимый на странице, устойчивым не бывает, — а рядом вход через Telegram, Google и по почте с паролем.
- Смотреть и делать — разные права
- Просмотр игроков, выплат, транзакций и балансов — отдельные права от корректировки баланса, подтверждения выплаты, начисления бонуса и бана.
- Секреты — отдельное право
- Выдача и ротация ключа трекера отделена от управления трекерами, потому что ротация показывает сам секрет.
- Двухфакторка не опциональна
- У каждого аккаунта в админке есть TOTP, секрет хранится зашифрованным (AES-256-GCM). У партнёрских аккаунтов своя двухфакторка.
- Сессию можно отозвать
- Каждый запрос сверяется с сессией, поэтому отзыв действует сразу, а не когда истечёт токен.
Что записывается, когда сотрудник что-то делает?
Каждое чувствительное действие и каждая попытка входа: кто, что сделал, над чем, чем закончилось — успех, отказ или ошибка, — с какого IP и браузера и когда. Доступ к самому журналу — отдельное право.
Неудачные входы записываются тоже, вместе с логином, который пробовали, — хотя аккаунт по определению не аутентифицирован. Это и есть та запись, по которой видно, что админку прощупывают, ещё до того, как что-то пропало, и именно её большинство систем не хранит.
Сохраняемые данные санируются перед записью: ни паролей, ни кодов двухфакторки в журнале не оказывается. Журнал, который тихо копит учётные данные, — это новая проблема, а не контроль.
Исход пишется как успех, отказ или ошибка, а не одним флагом «произошло». Интересен как раз отказ: именно так выглядит аккаунт, пытающийся выйти за пределы своих прав.
Проводятся ли нагрузочные тесты?
Да, внутренние, по тому пути, где реально идут деньги: спин в протоколе seamless-кошелька — подписанное списание ставки и следом зачисление выигрыша по тому же раунду, а не простой запрос страницы.
Прогон считается неуспешным, если 95-й перцентиль превышает 400 мс или больше 1% запросов завершились ошибкой: либо прогон соответствует этой планке, либо это не график, а провал. Тесты идут по кластеру реплик бэкенда за балансировщиком — то есть по форме боевого развёртывания, а не по одному процессу на ноутбуке.
Цифру пропускной способности мы не публикуем: число без железа, на котором оно получено, — это маркетинг. Профиль тюнинга — число реплик, размер пула к базе, лимиты соединений — выбирается по процессору и памяти того сервера, на котором бренд работает.
Это наши собственные тесты. Это не внешний аудит, и мы их так не называем.
Чего WW Games не заявляет?
Никаких сторонних сертификатов: ни GLI-19, ни ISO 27001, ни PCI DSS, и опубликованного внешнего пентеста тоже нет. Если сертификация обязательна для вашего рынка или вашего аудитора — правильный ответ это более крупный вендор, и мы так и скажем.
Сертификация важнее всего на регулируемых рынках, где лицензированному оператору нужно показать аудитору документ, а не описание. Что даёт вендор с такими сертификатами и где это оставляет нас — в сравнении с SoftSwiss.
Лицензирование — ответственность оператора, и ничем на этой странице оно не покрывается. WW Games лицензией не владеет и не сублицензирует её, а контакты компаний, которые её оформляют, мы дадим.
Всё, что выше, проверяемо тем способом, который здесь и работает: попросите показать это в админке на разборе — и задайте те же вопросы всем остальным вендорам, с которыми разговариваете. Ответы расходятся сильнее, чем маркетинг.
Читать дальше
Вопросы операторов о безопасности
Мой бренд делит базу данных с другими казино?
Нет. Каждый бренд — это отдельный деплой со своей базой, поэтому общей таблицы игроков, общей админки и общего реестра между брендами нет.
Виден ли атакующему IP-адрес сервера?
Через сайт — нет. Origin стоит за туннелем Cloudflare без опубликованных портов, а домен резолвится в туннель, а не в сервер, поэтому адреса нет ни в DNS, ни в сертификате на открытом порту. Это убирает цель, нужную объёмной атаке L3/L4; полосу хоста бесконечной это не делает, если адрес узнали другим путём.
Если атакуют другое казино на платформе, это заденет моё?
Нет. Каждый бренд работает как отдельный деплой со своим доменом, своей точкой входа и своей базой, поэтому нет общего кластера и общего адреса, через которые атака на один бренд добралась бы до другого. От DDoS по вашему собственному бренду это не защищает — это не даёт чужому инциденту стать вашим.
Где хранятся данные?
На сервере, арендованном под ваш бренд; провайдер и регион согласуются при развёртывании. Публично мы их не называем: это полезнее тому, кто бренд атакует, чем тому, кто оценивает платформу.
Как часто делается бэкап и сколько можно потерять?
Каждую ночь. Восстановление возвращает базу к последней ночной копии, то есть до суток записей может быть потеряно. Восстановление на произвольный момент требует непрерывного архивирования WAL, которого у нас сегодня нет.
Есть ли двухфакторная аутентификация?
Да, и для аккаунтов админки она обязательна, секрет хранится зашифрованным. Девятнадцать чувствительных операций требуют ввести код заново в момент действия, он действует пять минут. Игрокам доступны passkey, а также вход через Telegram, Google и по паролю.
Можно посмотреть, кто что делал в админке?
Да. Каждое чувствительное действие и каждая попытка входа записываются с аккаунтом, действием, объектом, исходом, IP и браузером. Доступ к журналу — отдельное право.
Есть ли у WW Games сертификация ISO 27001 или PCI DSS?
Нет. Сторонних сертификатов по безопасности у WW Games нет, внешний пентест не публиковался. Если ваш рынок или аудитор их требует — это повод выбрать сертифицированного вендора.
Попросите показать
Пройдём по правам доступа, журналу действий и админке на созвоне — на живом развёртывании, а не на слайдах.
