TeaHost
Counter-Strike 2cs2безопасностьмодерация5 мин. чтения

Античит на CS2 сервере: настройка защиты от читеров

Античит на CS2 сервере: настройка VAC и GSLT, банлисты banned_user.cfg, плагины проверки Steam-профиля, разбор демо через GOTV и работа модерации

Кратко

Защита сервера CS2 от читеров строится слоями: GSLT-токен и sv_cheats 0 для работы VAC, плагин CounterStrikeSharp с фильтром Steam-профиля на входе, баны по SteamID через banid и writeid или общую базу MySQL, автозапись демо через tv_enable 1 и tv_autorecord 1 и живые модераторы. Серверный админ не может сканировать клиент, поэтому основа — модерация.

Волшебной кнопки нет: античит на CS2 сервере — это не один плагин, а слоёная оборона из VAC, ограничений на вход, банлистов, записи демо и живых модераторов. Настройка каждого слоя занимает от пяти минут до вечера, но вместе они отсекают подавляющую часть публичных читов и, что важнее, делают возвращение забаненного дорогим. Разберём, что реально работает на выделенном сервере, а что — плацебо.

Что вы можете и чего не можете

Начнём с честного разграничения, потому что оно экономит время.

Серверный админ не может сканировать память клиента и детектить читы как VAC или Faceit AC. Всё, что доступно, — анализ поведения, ограничения на вход и ручной разбор.

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

Именно поэтому у любого живого проекта в основе — модерация, а плагины лишь снижают её нагрузку.

СлойЧем делаетсяЧто отсекает
1. VAC и GSLT+sv_setsteamaccount, sv_cheats 0, sv_pure 1Известные читы, которые ловит VAC
2. Фильтр на входеПлагин CounterStrikeSharp и Steam Web APIСвежие и покупные аккаунты
3. Баныbanid и writeid, админ-плагин с MySQLПовторный вход забаненных
4. ДемоGOTV, tv_autorecord 1, MatchZyСпоры «показалось» — есть доказательства
5. МодерацияЛюди, репорты, дежурстваВсё, что пропустила автоматика

Слой 1: VAC и GSLT — базовая настройка античита на CS2 сервере

VAC работает на серверах с корректно зарегистрированным аккаунтом сервера. Без GSLT-токена сервер либо не виден публично, либо работает в урезанном режиме — и защита от известных читов до него не доходит.

Токен создаётся на странице управления игровыми серверами Steam и указывается в параметрах запуска:

код
+sv_setsteamaccount ВАШ_GSLT_ТОКЕН

Проверьте базовые переменные в server.cfg:

код
sv_cheats 0
sv_lan 0
sv_pure 1
sv_consistency 1

sv_cheats 0 кажется очевидным, но на серверах, где админы гоняют тренировки, его периодически забывают вернуть — и следующие два часа паблик играет с включёнными читами официально. Держите тренировочные настройки в отдельном конфиге, как описано в статье про server.cfg.

Слой 2: фильтр на входе

Самая эффективная мера против одноразовых аккаунтов — не пускать их. Читер, которого забанили, покупает новый аккаунт за копейки; сделайте так, чтобы этот аккаунт не проходил проверку.

Что обычно проверяют плагины уровня Steam-рестрикта (работают поверх CounterStrikeSharp и Steam Web API):

  • количество часов в CS2;
  • уровень Steam-профиля;
  • открытость профиля (закрытый профиль — типичный признак смурф-аккаунта);
  • наличие Prime-статуса;
  • дату создания аккаунта;
  • наличие VAC-банов в других играх.

Порог вроде «100 часов в CS2 и открытый профиль» отсекает большую часть покупных аккаунтов и почти не задевает нормальных игроков. Ставить 500 часов — уже вредно: вы отрежете новичков, которых сами же пытаетесь набрать.

Для работы такого плагина нужен ключ Steam Web API, он выпускается на аккаунт разработчика Steam бесплатно.

Слой 3: баны

Встроенные банлисты CS2 никуда не делись и работают без плагинов.

Забанить и сохранить:

код
banid 0 <userid> kick
writeid
код
addip 0 <ip>
writeip

Списки лежат в game/csgo/cfg/banned_user.cfg и banned_ip.cfg. Подключаются при старте:

код
exec banned_user.cfg
exec banned_ip.cfg

Ноль в banid 0 означает вечный бан; число — минуты.

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

Для сети серверов используют админ-плагины с базой в MySQL (тот же класс решений, что и CS2-SimpleAdmin): бан ставится на одном сервере и применяется на всех, с историей, причиной и сроком. Как выдавать модераторам права на бан, разобрано в статье про выдачу прав администратора.

Слой 4: демо и разбор

Без записи вы не докажете ничего и будете банить по жалобам в Discord. Включите GOTV и автозапись:

код
tv_enable 1
tv_autorecord 1
tv_delay 90

tv_delay 90 заодно закрывает стрим-снайпинг: зрители видят игру с задержкой полторы минуты.

На матчевом сервере запись демо делает MatchZy автоматически, отдельно настраивать не нужно.

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

Демо копятся быстро — заведите автоочистку старше 30 дней через планировщик задач, иначе диск закончится раньше читеров.

Слой 5: живая модерация

Ни один плагин не заменит человека на сервере в прайм-тайм. Что помогает:

  • Кнопка жалобы прямо в игре (плагин с меню репорта), а не «пишите в Discord» — жалоб станет в разы больше, и вы увидите реальную картину.
  • Дежурство модераторов по расписанию в часы пик.
  • Иммунитет и разграничение флагов, чтобы модератор не мог банить админов и наоборот.
  • Прозрачный публичный банлист: люди видят, что баны реальные, и жалуются охотнее.

Набрать и удержать команду — отдельная задача, про неё есть материал в блоге: как набрать команду модераторов.

Чего делать не стоит

  • Ставить «античит-плагины» из непроверенных источников. Плагин работает на сервере с полными правами. Скачанная с форума сборка без исходников — это ваш сервер в чужих руках.
  • Массово банить по IP. Один провайдер, одна подсеть — и вы отрезали половину города.
  • Верить автоматике на слово. Плагины, банящие за «подозрительное aim-поведение», дают ложные срабатывания на хороших игроках. Автобан по эвристике = потеря аудитории.
  • Оставлять sv_cheats 1 после тренировки. Проверьте прямо сейчас.

Частые вопросы

Можно ли поставить Faceit AC или ESEA на свой сервер?

Нет, это клиентские античиты закрытых платформ. Для приватных матчей ближайший аналог — вайтлист по SteamID: на сервер попадают только известные вам люди. Такой режим поддерживает MatchZy при загрузке матча из JSON.

VAC банит на моём сервере?

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

Помогает ли sv_pure против читов?

sv_pure 1 ограничивает подмену клиентских ресурсов — текстур и моделей. Против внешних читов не работает совсем, но убирает часть визуальных хаков вроде прозрачных моделей. Ставить стоит, полагаться — нет.

Коротко

Настройка защиты работает слоями: GSLT и корректные переменные сервера, фильтр по Steam-профилю на входе, нормальные баны с общей базой, обязательная запись демо и живые модераторы. Один слой без остальных пробивается за вечер, все вместе — делают ваш сервер невыгодной целью.

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