DGuard

Защита сервера Minecraft от ботов и DDoS

Бот-атака и DDoS — разные беды с разными лекарствами, и ни от одной не спасает античит. Разбираем, что делать с наплывом ботов и спамом в чате, как пережить атаку на канал, почему важно спрятать IP сервера и где здесь место античита.

Команда DGuard7 мин

От ботов защищает антибот-плагин (например, Sonar) и лимиты подключений на прокси и сервере, а во время атаки — временный whitelist. От DDoS защищает только сеть: фильтрация у хостинга или защищённый прокси вроде TCPShield, и при этом настоящий IP сервера нельзя светить. Античит в обоих случаях не помощник: он проверяет поведение игроков, а не сетевой трафик.

Боты и DDoS — не одно и то же

Бот-атакаDDoS
Что происходитСотни фейковых клиентов заходят на сервер, спамят в чат и командами, забивают слотыПоток мусорного трафика забивает канал или сетевой стек машины
Как выглядитВолна входов в консоли, одинаковые ники и сообщения в чатеСервер недоступен целиком, пинг растёт у всех сразу
Кто защищаетАнтибот-плагин, лимиты подключений, whitelistХостинг или защищённый прокси — до того, как трафик дошёл до сервера
Две разные атаки — две разные защиты

Боты: антибот и лимиты подключений

Бот-атака идёт на уровне Minecraft: боты проходят рукопожатие, входят и ведут себя как клиенты. Отсекать их нужно до входа в мир — проверкой новых подключений.

Sonar

Sonar — лёгкий антибот-плагин с открытым кодом (GPL-3.0) для Velocity, BungeeCord и Bukkit. Нового игрока он сначала отправляет на облегчённый фейковый сервер и проверяет, что клиент подчиняется физике Minecraft — гравитации и столкновениям с блоками, — правильно обращается с транспортом и шлёт пакеты по ванильному протоколу. Входящие подключения Sonar ставит в очередь, а IP, который дважды провалил проверку, по умолчанию блокирует на 10 минут.

Проверка по умолчанию идёт для всех новых игроков (timing: ALWAYS), её можно включать только во время атаки (DURING_ATTACK). Чтобы список прошедших проверку не терялся при перезапуске, Sonar подключают к базе: H2, MySQL, MariaDB или PostgreSQL (по умолчанию база не подключена). Требования: Java 17+, Velocity 3.6.0+, BungeeCord 1.20+, Paper 1.21+. В сети серверов Sonar ставят на прокси, а не на каждый игровой сервер — так советует его документация.

Лимиты на прокси и сервере

  • Velocity: login-ratelimit в velocity.toml — минимальный промежуток в миллисекундах между подключениями с одного IP; 0 выключает лимит.
  • Paper без прокси: settings.connection-throttle в bukkit.yml — задержка между подключениями с одного IP, по умолчанию 4000 мс.
  • Paper: misc.max-joins-per-tick в config/paper-global.yml (по умолчанию 5) — сколько игроков входит за один тик; остальные ждут следующих тиков, их не кикает.
  • Paper: packet-limiter в том же файле — лимит пакетов от одного игрока: по умолчанию 500 за 7 секунд, затем кик; для отдельных пакетов задаются свои лимиты.
  • server.properties: rate-limit — сколько пакетов игрок может прислать до кика; 0 (по умолчанию) — выключено. На Paper гибче packet-limiter.

Спам в чате

Боты часто приходят ради спама. С версии 26.2 в server.properties есть chat-spam-threshold-seconds и command-spam-threshold-seconds (по умолчанию 10): сервер сам кикает того, кто шлёт слишком много сообщений или команд, а 0 это выключает. В Paper есть ещё spam-limiter против флуда таб-дополнением и рецептами.

Из плагинов спам в чате глушит, например, GriefPrevention — он известен приватами, но умеет и это: предупреждает, мутит, затем может кикнуть или забанить; блокирует рекламу IP-адресов, повторы, капс и спам входами-выходами.

Whitelist на время атаки

Если боты прорываются, временно закройте вход: добавьте своих командой /whitelist add Ник и включите список — /whitelist on. С enforce-whitelist=true в server.properties игроков не из списка выкинет, когда сервер перечитает список (/whitelist reload). Операторы входят в список автоматически. Когда атака закончится — /whitelist off.

На сервер без лицензии ботов напустить проще

При online-mode=true каждый клиент проходит проверку аккаунта Minecraft, и каждому боту нужен свой аккаунт. Сервер с online-mode=false пускает любой ник без проверки — для атакующего это бесплатные боты в любом количестве. Если ваш сервер пускает игроков без лицензии, антибот и плагин авторизации ему особенно нужны; подробнее — в статье сервер для пиратки.

DDoS: защищает только сеть

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

  • Защита у хостинга. У части хостингов и дата-центров есть фильтрация атак на их сети. Спросите провайдера, защищает ли он именно игровые серверы и что происходит с вашим сервером во время атаки. Как выбирать площадку — в статье хостинг или VPS.
  • Защищённый прокси. Например, TCPShield — сервис защиты от DDoS для серверов Minecraft: распределённая сеть прокси принимает игроков на себя, отсеивает мусорный трафик и передаёт честный на ваш сервер. Игроки заходят по вашему домену, который направлен на защищённый адрес TCPShield (CNAME), а не на IP сервера.

Чтобы сервер видел настоящие IP игроков, а не адреса прокси, TCPShield использует свой плагин или Proxy Protocol v2, который Paper и Velocity понимают сами. С плагином оставьте only-allow-proxy-connections: true — иначе, по документации TCPShield, вы не защищены и уязвимы для сканеров, которые находят IP бэкенда. Proxy Protocol не проверяет, что подключение пришло от TCPShield, поэтому с ним нужен файрвол, который пускает только их адреса.

Спрячьте настоящий IP

Защита сети бесполезна, если атакующий знает прямой адрес машины: он ударит мимо фильтра. Поэтому:

  • не публикуйте IP сервера — только домен, направленный на защиту;
  • если игроки раньше заходили по прямому IP или домен указывал прямо на машину, считайте адрес известным и после подключения защиты по возможности смените IP;
  • не держите на той же машине сайт и другие сервисы с открытым адресом — они выдают IP;
  • закройте игровые серверы за прокси файрволом. Документация Velocity настоятельно рекомендует файрвол и прямо пишет, что modern forwarding его не заменяет; если прокси и серверы на одной машине, привяжите серверы к server-ip=127.0.0.1. Подробно — в статье настройка Velocity.

Где здесь античит

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

Но часть злоупотреблений приходит именно от «игроков» — и это фронт DGuard. BadPackets — невозможные пакеты, на которых строятся эксплойты против сервера. BookBot — книги, которые пишет бот. AntiAFK — клиент, который изображает живого игрока у компьютера. BookBot и AntiAFK, по нашему сравнению, кроме DGuard полноценно не проверяет ни один из пяти популярных античитов.

ЧитDGuardGrimACVulcanPolarIntaveMatrix
BadPacketsневозможные пакеты
BookBotпишет книги ботомчастично: только невалидные книги, бот в пределах лимитов проходит
AntiAFKизображает игрока у компьютера
Злоупотребления на уровне пакетов: у кого из античитов есть полноценная проверкаВсе 47 видов читов — в сравнении

Если настраиваете файрвол, помните: DGuard нужен исходящий HTTPS к сайту DGuard — для лицензии, обновлений и облачной проверки аима и TriggerBot. Без связи защита работает до 72 часов на сохранённой лицензии, кроме правил облачной проверки. Остальное о защите от читеров — в гайде по защите сервера.

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

Защищает ли античит от DDoS?

Нет. Античит проверяет поведение игроков на сервере, а DDoS забивает канал ещё до Minecraft. От DDoS защищают фильтрация у хостинга и защищённые прокси, например TCPShield.

Какой антибот поставить на сервер Minecraft?

Например, Sonar — антибот с открытым кодом для Velocity, BungeeCord и Bukkit. Он проверяет новых игроков на фейковом сервере — гравитацией, столкновениями и протоколом — и блокирует IP после повторных провалов.

Что делать, если боты заходят прямо сейчас?

Добавьте своих игроков в whitelist и включите его командой /whitelist on, затем поставьте антибот. С enforce-whitelist=true игроков не из списка выкинет при перечитывании списка. Когда атака закончится, выключите whitelist.

Как скрыть IP сервера Minecraft?

Пускайте игроков только через домен, направленный на защищённый прокси, не публикуйте прямой адрес и закройте сервер файрволом, чтобы он принимал подключения только от прокси. Если старый IP уже светился, после подключения защиты смените его.

Почему на сервер без лицензии проще напустить ботов?

При online-mode=false сервер не проверяет аккаунт Minecraft, поэтому боту не нужен купленный аккаунт — можно запустить сколько угодно клиентов с любыми никами. Такому серверу антибот и плагин авторизации особенно нужны.

Источники

Все разделы
Прокси и сети7 минКак настроить Velocity: сеть серверов с лоббиСобираем сеть из прокси Velocity, лобби и режима выживания: velocity.toml, безопасная передача данных игроков, конфиги Paper на серверах и файрвол — без него в сеть можно зайти под чужим ником.ЧитатьСоздание сервера6 минСервер для пиратки (online-mode=false): риски и защитаС online-mode=false сервер не проверяет аккаунт игрока через Mojang: зайти можно под любым ником, в том числе под ником администратора. Держать такой сервер можно, но только с плагином авторизации, правами без OP и защитой от ботов. Разбираем, что именно меняется и что настроить.ЧитатьСоздание сервера7 минХостинг или VPS для сервера Minecraft: что выбратьИгровой хостинг — быстрый старт через панель, но с общими ресурсами и ограничениями. VPS или выделенный сервер — полный контроль, но систему, защиту и бэкапы настраиваете сами. В обоих случаях смотрите на однопоточную производительность процессора, гарантированную память, быстрый диск, защиту от DDoS и расстояние до игроков.Читать

Поставьте лучший античит для современного Minecraft

DGuard ловит все 47 видов читов из нашего сравнения — у ближайшего соперника, Intave, 27. Полная защита на любом тарифе, до 30 игроков онлайн — бесплатно.