CS2: как защитить сервер от DDoS и читеров

Признаки атаки и читов, что включить в «Запуске» (VAC, RCON), какие порты оставить открытыми, как ограничить слоты и что сделать, если сервер уже атакуют или на нём играют читеры.

Команда EGN 9 мин чтения
CS2: как защитить сервер от DDoS и читеров
Содержание 17
  1. Коротко
  2. Что такое DDoS на игровой сервер
  3. Шаги: защита от DDoS
  4. Шаги: защита от читеров
  5. Что делать при атаке
  6. Пример: как обнаружить читера
  7. Порты: что открыть, а что закрыть
  8. Как безопасно включить RCON
  9. Чек-лист перед открытием публичного сервера
  10. Как вести журнал инцидентов
  11. Симптом → причина → решение
  12. Частые ошибки
  13. Итог
  14. Вопросы и ответы
  15. Защищает ли EGN сервер от всех DDoS-атак?
  16. Нужно ли выключать RCON для публичного сервера?
  17. VAC обязателен?

Публичный сервер CS2 рано или поздно привлекает два типа проблем: злоумышленников, которые заливают трафик и выводят сервер из строя, и игроков с читами, которые портят игру остальным. Разобраться с ними можно, но не одной кнопкой. Нужны понятный набор настроек, закрытые порты и план действий на случай атаки. Ниже всё по порядку, с тем, что делает панель EGN и что остаётся вам.

Коротко

Против читеров работают VAC (в панели переменная VAC_ENABLED, по умолчанию включена) и закрытый RCON (переменная RCON_ENABLED, по умолчанию выключена). Против DDoS главное — открыть на сервере только игровой и SourceTV-порт, ограничить число слотов и уточнить у поддержки, что входит в защиту вашей локации. Полная гарантия от атаки не даётся ни одним хостингом, поэтому план действий важен не меньше настроек.

Что такое DDoS на игровой сервер

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

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

Путь атаки и место фильтра провайдера
Путь атаки и место фильтра провайдера

Шаги: защита от DDoS

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

  2. Откройте только нужные порты. В разделе «Сеть» выданы игровой порт и порт SourceTV. Им и только им должен быть открыт доступ из интернета. Лишние порты не выдавайте и не открывайте вручную.

Блок «Служебные порты игры» в «Сети» (пример тестового сервера: у каждой игры набор портов свой, у CS2 это игровой порт и SourceTV)
Блок «Служебные порты игры» в «Сети» (пример тестового сервера: у каждой игры набор портов свой, у CS2 это игровой порт и SourceTV)
  1. Не публикуйте лишние адреса. Адрес сервера не нужно указывать в открытых местах, где его видят все. Для приватного сервера пароль входа (SERVER_PASSWORD) убирает большую часть случайного трафика.

  2. Ограничьте слоты. Число слотов (MAX_PLAYERS) влияет и на нагрузку, и на то, сколько подключений сервер обрабатывает одновременно. Для публичного сервера выбирайте число, которое ваш тариф тянет в пике.

  3. Не рассчитывайте на настройки внутри игры. Встроенных параметров, которые заметно спасают от сетевого флуда, в CS2 мало, а гайды по sv_max_queries_* и подобным написаны под старые Source-игры, поэтому проверяйте существование каждого параметра в консоли своей версии. Плагины «антиддос» из случайных репозиториев не ставьте: это код с полным доступом к серверу, а до сети он всё равно не дотягивается.

  4. Следите за пингом и потерями. Резкий рост пинга у всех игроков при неизменном онлайне — повод проверить сервер и обратиться в поддержку. Не ждите, пока игроки уйдут сами.

Подробнее о сетевых параметрах и о том, как читать телеметрию клиента (в CS2 она заменила net_graph), — в статье про тикрейт и сеть.

Шаги: защита от читеров

  1. Оставьте VAC включённым. В панели переменная VAC_ENABLED по умолчанию равна 1. Если выключить VAC, в команде запуска добавляется -insecure, и сервер перестаёт проверять клиенты на читы. Для публичного сервера выключать VAC не стоит.

  2. Закройте RCON, если он не нужен. Переменная RCON_ENABLED по умолчанию выключена, и это правильно. Включайте RCON только когда нужно удалённое управление, и задавайте длинный пароль RCON_PASSWORD, не совпадающий с паролем входа.

  3. Разделите доступы. Пароль RCON, пароль входа и доступ к панели должны быть разными. Друзьям-администраторам не передавайте пароль от аккаунта: добавьте их в разделе «Пользователи» панели с нужными правами, а потом так же легко отзовите доступ. Если один пароль знает много людей, утечка даёт доступ ко всему.

  4. Настройте админов. Для списка админов используйте плагины с понятными правилами: кик, бан и мут. Ставьте их по одному, как описано в статье про CounterStrikeSharp.

  5. Смотрите журнал. После подозрительного поведения проверьте «Консоль» и логи плагинов. Записи о подключениях и командах помогают понять, кто и когда вмешивался в сервер.

Минимальный чек-лист защиты сервера
Минимальный чек-лист защиты сервера

Что делать при атаке

Атака — стрессовая ситуация, и действовать в ней лучше по заранее написанному плану. Ниже порядок, который работает независимо от конкретной атаки.

  1. Зафиксируйте время и симптомы. Когда начался лаг, у всех ли игроков, растёт ли пинг. Эти данные нужны поддержке.
  2. Напишите в поддержку. Через раздел «Поддержка» в кабинете опишите симптомы и время. Вместе проще определить, что происходит и что можно сделать на вашем уровне.
  3. Не меняйте всё сразу. Если начнёте менять порты, пароли и слоты одновременно, потеряете понимание, что помогло. Меняйте по одному параметру и смотрите на результат.
  4. Временно уменьшите число слотов. Это снижает нагрузку и помогает удержать сервер в строю, пока идёт разбор.
  5. Не публикуйте адреса в открытых чатах. Если адрес уже утёк, сообщите игрокам, что будет смена адреса, и подготовьте новый.

Пример: как обнаружить читера

Допустим, один игрок подозрительно быстро попадает в цель, и у него растёт число убийств в одном и том же месте. Что делать? Сначала не банить сразу: откройте журнал и посмотрите, когда это началось и есть ли похожие жалобы. Если данные совпадают, включите наблюдение за игроком и проверьте запись с demo, если она у вас есть. Только после этого принимайте решение о бане. Ложный бан портит сообщество сильнее, чем читер за пару раундов.

Порты: что открыть, а что закрыть

Правило простое: из интернета должно быть доступно только то, что нужно игрокам и зрителям. Для CS2 на панели EGN это игровой порт и SourceTV-порт. Игровой порт нужен игрокам для подключения, а SourceTV — тем, кто смотрит трансляцию матча. Всё остальное закрывайте. Особенно это касается портов удалённого управления и служебных сервисов, которые вы могли поставить на ту же машину для других целей.

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

Как безопасно включить RCON

RCON — удобный инструмент, но он же самая частая дыра. Если RCON нужен, соблюдайте несколько правил. Задайте максимально длинный пароль без смысла, а не слово и не дату: панель принимает до 30 символов из латиницы, цифр, дефиса и подчёркивания, этого достаточно. Не используйте этот пароль нигде ещё. Меняйте его, если кто-то из админов перестал участвовать в проекте. И выключайте RCON сразу, как только в нём отпала необходимость.

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

Чек-лист перед открытием публичного сервера

Перед тем как опубликовать адрес, пройдите короткий список. Он занимает полчаса и защищает от самых частых проблем.

  • VAC включён, VAC_ENABLED равен 1.
  • RCON выключен или включён с длинным уникальным паролем.
  • Открыты только игровой и SourceTV-порт.
  • Число слотов рассчитано на пиковую нагрузку, а не на мечты.
  • Пароль входа задан, если сервер приватный.
  • Есть бэкап папки сервера, а расписание бэкапов включено в «Бэкапах».
  • Вы знаете, куда писать при атаке: раздел «Поддержка» в личном кабинете.

Как вести журнал инцидентов

Записывайте каждый инцидент в простой текстовый файл рядом с сервером: дату и время, симптомы, что сделали и что помогло. Через месяц такой журнал покажет, повторяются ли атаки в одно и то же время и связаны ли они с изменениями. Он же пригодится, если придётся объяснять поддержке, что происходило. Не записывайте туда пароли и адреса игроков: достаточно описания того, что произошло.

Симптом → причина → решение

Симптом Причина Решение
Все игроки вылетают одновременно Перегрузка или атака Проверьте график нагрузки, напишите в поддержку, снизьте слоты
Пинг вырос у всех, онлайн прежний Сетевой флуд Уточните защиту у поддержки, проверьте открытые порты
Игрок читерит, а VAC молчит VAC выключен или клиент не проверяется Включите VAC_ENABLED, проверьте команду запуска
Посторонние подключаются к RCON RCON открыт и пароль слабый Выключите RCON или смените пароль на длинный
На сервере лишние открытые порты Порты выданы без нужды Оставьте только игровой и SourceTV-порт

Частые ошибки

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

Итог

Против читеров в первую очередь работают VAC и закрытый RCON, против DDoS — открытые только нужные порты, разумное число слотов и заранее уточнённая защита у поддержки. Полной гарантии нет, поэтому план действий и журнал нужны не меньше настроек. Если сервер уже настроен, переходите к вопросам конфигов: в статье про server.cfg и режимы разобрано, как задать правила игры.

Вопросы и ответы

Защищает ли EGN сервер от всех DDoS-атак?

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

Нужно ли выключать RCON для публичного сервера?

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

VAC обязателен?

Для публичного сервера рекомендуем его оставить включённым: переменная VAC_ENABLED по умолчанию равна 1, а её выключение добавляет -insecure в команду запуска.

Сервер под Counter-Strike 2 за пару минут — egnetwork.ru: https://egnetwork.ru/

Читать далее

Вся рубрика →