От ботов защищает антибот-плагин (например, 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 полноценно не проверяет ни один из пяти популярных античитов.
| Чит | DGuard | GrimAC | Vulcan | Polar | Intave | Matrix |
|---|---|---|---|---|---|---|
| BadPacketsневозможные пакеты | ||||||
| BookBotпишет книги ботом | частично: только невалидные книги, бот в пределах лимитов проходит | |||||
| AntiAFKизображает игрока у компьютера |
Если настраиваете файрвол, помните: 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, поэтому боту не нужен купленный аккаунт — можно запустить сколько угодно клиентов с любыми никами. Такому серверу антибот и плагин авторизации особенно нужны.
Источники
- Sonar: исходный код
- Sonar: поддерживаемые версии
- Sonar: настройка проверки
- Sonar: подключение базы
- Sonar на Modrinth
- Velocity: конфигурация
- Velocity: защита серверов
- Paper: paper-global.yml
- Paper: bukkit.yml
- Minecraft Wiki: server.properties
- TCPShield: документация
- TCPShield: плагин
- TCPShield: плагин или Proxy Protocol
- TCPShield: настройка DNS (CNAME)
- GriefPrevention Legacy: возможности
- DGuard — лучший античит для современного сервера Minecraft: сравнение проверок с GrimAC, Vulcan, Polar, Intave и Matrix
- DGuard: установка, требования и решение проблем
- DGuard: поддерживаемые версии Paper и Leaf