TurtleGuard

Новости / 24.10.2026

Защита сервера CS2 и Rust от DDoS

Как атакуют игровые серверы CS2 и Rust, что можно сделать на самом сервере и как работает защита через прокси. С правилом nftables и тем, что нужно знать заранее.

новость24.10.20262 минуты чтения

Серверы CS2 и Rust кладут чаще, чем сайты. Адрес сервера виден в консоли и в списке серверов Steam, атаку можно купить за пару долларов, а обиженному игроку больше ничего и не нужно. Разберём, как устроены такие атаки и что реально помогает.

Как атакуют игровые серверы

  • UDP-флуд. Обе игры работают по UDP: CS2 по умолчанию на порту 27015, Rust на 28015. Атака заливает порт мусорными пакетами, и тикрейт сервера падает, пока игроки не вылетают по таймауту.
  • Отражённые атаки. Атакующий шлёт маленькие запросы на открытые DNS- или NTP-серверы от имени вашего адреса, и вам прилетает в десятки раз больше. Такой трафик забивает канал целиком, и сервер недоступен даже для пинга.
  • Флуд запросов статуса. Запросы информации о сервере (A2S) дешёвые для атакующего, но сервер отвечает на каждый. Если их тысячи в секунду, процессор занят ответами вместо игры.
  • Атака на RCON. Порт удалённого управления: TCP 27015 у CS2, 28016 у Rust. Если он открыт наружу, по нему перебирают пароль.

Что можно сделать на самом сервере

  • Закройте RCON. Пустите на порт RCON только свой адрес или вообще управляйте сервером через SSH-туннель. Сложный пароль RCON обязателен в любом случае.
  • Не держите на сервере лишнего. Сайт проекта, база данных, панель управления должны жить на другом адресе. Иначе атака на сайт кладёт и игру.
  • Попросите хостера о фильтрации. У многих хостеров есть игровые профили фильтрации UDP. Уточните, что будет при атаке больше канала: фильтрация или отключение адреса.

Всё это не спасёт от атаки больше канала. Если сервер на канале 1 Гбит/с, атака в 10 Гбит/с забивает его раньше, чем пакеты дойдут до файрвола.

Защита через прокси

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

Для CS2 и Rust у нас работает режим «Другой UDP»: лимиты пакетов и потоков с одного адреса, флуд и отражённые атаки остаются на узлах. Протокол самих игр узел не разбирает, как разбирает Minecraft, поэтому от атаки, которая точно повторяет поведение игрока, защищают лимиты, а не анализ пакетов.

Чтобы атака не пошла в обход, закройте игровой порт на сервере для всех, кроме адресов узлов защиты. В nftables это делается так, если таблица inet filter уже есть:

nft add set inet filter tg '{ type ipv4_addr; flags interval; }'
nft add element inet filter tg '{ 203.0.113.0/24 }'
nft add rule inet filter input udp dport 27015 ip saddr != @tg drop

Вместо 203.0.113.0/24 подставьте наши подсети, они указаны в кабинете. Для Rust порт 28015.

Что нужно знать заранее

  • Сервер увидит адреса узлов, а не игроков. CS2 и Rust не умеют читать PROXY-заголовок, через который прокси передаёт настоящий адрес. Баны по SteamID работают как обычно, а банить по IP удобнее у нас в кабинете.
  • Список серверов Steam. Сервер регистрируется в списке с того адреса, с которого он выходит в интернет. Если игроки заходят из браузера серверов, проверьте, какой адрес он показывает. Надёжнее давать защищённый адрес напрямую: в Discord, на сайте, в команде connect.
  • Пинг вырастет на несколько миллисекунд. Игрок подключается к ближайшей точке выбранного региона, дальше трафик идёт до вашего сервера. Регион выбирайте ближе к аудитории.

С чего начать

  1. Закройте RCON и уберите с игрового сервера сайт и базу.
  2. Подключите игровой порт к защите и получите защищённый адрес.
  3. Закройте настоящий адрес для всех, кроме подсетей защиты.
  4. Разошлите игрокам новый адрес.

Цены и регионы есть на странице «Защита игрового сервера от DDoS». Если у вас Minecraft, прочитайте отдельную статью «Защита сервера Minecraft от DDoS и ботов»: там узел понимает протокол игры, и первый сервер бесплатный.

Защитить сервер