Ключ online-mode в server.properties по умолчанию true: сервер пускает только игроков, чей аккаунт подтвердили серверы Mojang. При false проверки нет вообще — сервер верит нику, который прислал клиент. Так можно пустить игроков без лицензии, но вместе с ними — любого, кто назовётся вашим ником.
Что меняется при online-mode=false
| online-mode=true | online-mode=false | |
|---|---|---|
| Проверка аккаунта | Через серверы Mojang при каждом входе | Нет: ник — то, что прислал клиент |
| UUID игрока | UUID аккаунта, не зависит от ника | Вычисляется из ника: UUID версии 3 от строки OfflinePlayer:<ник> |
| Белый список | Работает | Бесполезен: ник из списка может взять кто угодно |
| OP и права | Привязаны к аккаунту | Привязаны к UUID, а значит — к нику |
| Новый аккаунт | Нужен купленный аккаунт | Любой ник, бесплатно и сколько угодно |
Главный риск — чужой ник
Раз UUID получается из ника, тот, кто зайдёт под ником Admin, получит тот же UUID, что и настоящий администратор. А вместе с ним — его инвентарь, его дома, его группу в плагине прав и его OP из ops.json. Без плагина авторизации это не уязвимость, а открытая дверь.
Minecraft Wiki прямо пишет, что при online-mode=false к серверу могут подключиться злоумышленники с поддельными аккаунтами. Защита строится в три слоя: авторизация закрывает ник паролем, права выдаются только после входа, а боты отсекаются до того, как забьют сервер.
Плагин авторизации — обязательный минимум
Плагин авторизации просит игрока при первом входе придумать пароль (/register), а дальше — вводить его (/login). Пока игрок не вошёл, он не может двигаться, ставить блоки, писать команды и открывать инвентарь. Распространённый вариант — AuthMe Reloaded (GPL-3.0): отдельные сборки для Paper, Spigot и Folia, плагины для прокси BungeeCord и Velocity, хранение в MySQL, MariaDB, PostgreSQL или SQLite. Есть и другие плагины авторизации — AuthMe умеет переносить аккаунты из LibreLogin, nLogin, LimboAuth и ещё нескольких.
- 1
Поставьте плагин авторизации
Как любой плагин — jar в
plugins/и перезапуск, подробно — в статье как установить плагин. На сети серверов выберите сборку под свою схему: у AuthMe есть отдельные плагины для прокси. - 2
Выберите хранилище
Для одного сервера хватит SQLite. Если серверов несколько или нужна связь с сайтом — MySQL или MariaDB. Базу аккаунтов обязательно включите в резервные копии.
- 3
Закройте аккаунты команды первыми
Зарегистрируйте ники администраторов и модераторов до открытия сервера, с длинными уникальными паролями. AuthMe поддерживает двухфакторную защиту и умеет привязать ник к IP-адресу (restricted users) — для аккаунтов с правами это стоит сделать.
- 4
Пустите лицензию без пароля, если нужно
В AuthMe есть premium bypass: владелец аккаунта Mojang включает его командой
/premium, после чего проходит проверку через сервер сессий и не вводит пароль. Без прокси для этого нужен PacketEvents — он у вас уже стоит, если сервер защищает DGuard.
Права — только после входа
Не раздавайте команде OP. OP привязан к UUID, то есть к нику, и даёт всё сразу. Выдавайте права группами через плагин прав — см. LuckPerms, — а самые опасные команды (/op, управление правами, остановка сервера) оставьте консоли.
Проверьте плагины, которые что-то делают при входе: выдают полёт или режим игры, кладут предметы, телепортируют. Плагин авторизации блокирует действия игрока, но не чужие плагины. Если такой плагин сработает до /login, его бонусом воспользуется тот, кто зашёл под чужим ником.
Серверы за прокси — это другое
На сети с Velocity игровые серверы Paper всегда работают с online-mode=false — и это не «пиратский» режим. Игрока проверяет прокси, а UUID и остальные данные игрока передаёт серверам через modern forwarding: в config/paper-global.yml включают proxies.velocity.enabled, задают secret и online-mode — такие же, как на прокси. Сам прокси при этом может проверять лицензию.
Но порт такого сервера нельзя оставлять открытым. Документация Velocity предупреждает: кто достучится до игрового сервера в обход прокси, сможет выдать себя за любого игрока, а modern forwarding — не замена фаерволу. Наружу смотрит только порт прокси, подробнее — в статьях IP и порт и настройка Velocity.
Боты и обход банов
Без проверки Mojang войти тысячей ников ничего не стоит. Поэтому оффлайн-серверы чаще страдают от ботов: волны входов, флуд в чате, массовая регистрация аккаунтов. Что помогает:
- Встроенный AntiBot плагина авторизации (есть у AuthMe Reloaded).
connection-throttleвbukkit.yml— задержка между подключениями с одного IP, по умолчанию 4000 мс.- Антибот на прокси и защита от DDoS у хостинга — разбор вариантов в статье боты и DDoS.
Та же простота работает против банов: забаненный по нику читер просто заходит под новым. Бан по IP (/ban-ip) помогает лишь отчасти — IP меняются. Значит, ловить читеров нужно быстро и на каждом новом нике заново.
Античит на оффлайн-сервере
Авторизация защищает ник, но не мир и не бой. KillAura, Fly, Scaffold или Nuker работают одинаково на лицензионном и нелицензионном клиенте, и ловить их нужно одинаково — по поведению и пакетам, а не по аккаунту.
DGuard проверяет именно поведение и пакеты, поэтому тип аккаунта ему не важен: любой клиент проходит те же проверки на всех фронтах — бой, движение, постройка, инвентарь, пакеты. Новый ник не делает читера невидимым: на новом аккаунте его ловят те же проверки. Сравнение проверок с другими античитами — на главной.
Частые вопросы
Что делает online-mode=false?
Выключает проверку аккаунта через Mojang: сервер пускает игрока под любым ником, который прислал клиент. UUID такого игрока вычисляется из ника, поэтому без плагина авторизации кто угодно может зайти под чужим именем.
Какой плагин авторизации поставить на пиратский сервер?
Например, AuthMe Reloaded: регистрация и вход по паролю, блокировка действий до входа, сессии, двухфакторная защита, сборки для Paper и плагины для прокси. Есть и другие, например LibreLogin и nLogin.
Работает ли белый список при online-mode=false?
Формально да, но толку мало: ник из списка может взять любой. На оффлайн-сервере защищает плагин авторизации, а не белый список.
Сохранятся ли вещи игроков, если включить online-mode?
Без переноса — нет. UUID игроков сменятся, и данные, записанные под старыми UUID, сервер не найдёт; их можно перенести только отдельной миграцией.
Нужен ли online-mode=false на серверах за Velocity?
Да, игровые серверы за прокси работают в оффлайн-режиме, а игроков проверяет сам прокси. При этом их порты должны быть закрыты фаерволом для всех, кроме прокси.
Работает ли античит на сервере без лицензии?
Да. DGuard проверяет поведение и пакеты, а не аккаунт, поэтому лицензионные и нелицензионные клиенты проходят одни и те же проверки.
Источники
- Minecraft Wiki: server.properties (online-mode)
- Minecraft Wiki: UUID
- Minecraft Wiki: настройка сервера, рекомендации по безопасности
- AuthMe Reloaded на GitHub
- Velocity: безопасность серверов за прокси
- Velocity: передача данных игрока (modern forwarding)
- Paper: bukkit.yml (connection-throttle)
- DGuard — лучший античит для современного сервера Minecraft: сравнение проверок с GrimAC, Vulcan, Polar, Intave и Matrix
- DGuard: установка, требования и решение проблем
- DGuard: поддерживаемые версии Paper и Leaf