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

Серверы 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. - Пинг вырастет на несколько миллисекунд. Игрок подключается к ближайшей точке выбранного региона, дальше трафик идёт до вашего сервера. Регион выбирайте ближе к аудитории.
С чего начать
- Закройте RCON и уберите с игрового сервера сайт и базу.
- Подключите игровой порт к защите и получите защищённый адрес.
- Закройте настоящий адрес для всех, кроме подсетей защиты.
- Разошлите игрокам новый адрес.
Цены и регионы есть на странице «Защита игрового сервера от DDoS». Если у вас Minecraft, прочитайте отдельную статью «Защита сервера Minecraft от DDoS и ботов»: там узел понимает протокол игры, и первый сервер бесплатный.