Большинство серверов Minecraft, которые «взломали», на самом деле никто не взламывал. Кто-то зашёл под именем оператора на сервер в офлайн-режиме, воспользовался плагином, который выполнял консольные команды для кого угодно, подобрал пароль RCON или поставил слитый премиум-плагин с бэкдором внутри. Чек-лист, который предотвращает почти всё это, короткий: держите online-mode=true (или правильно настройте forwarding прокси), включайте вайтлист на приватных серверах, почти никому не давайте оператора и используйте вместо этого плагин прав, оставляйте RCON и query выключенными, если они ничему не нужны, ставьте плагины только от их авторов, держите серверное ПО актуальным и защищайте аккаунт панели, который всем этим управляет. Остальная часть статьи объясняет каждый пункт и как его проверить.
Поймите, от чего вы защищаетесь#
Разные угрозы требуют разной защиты, и их полезно назвать:
| Угроза | Как это выглядит | Основная защита |
|---|---|---|
| Выдача себя за другого | Кто-то заходит под именем администратора | online-mode, forwarding прокси |
| Случайные гриферы | Приходят незнакомцы и ломают постройки | Вайтлист, приваты, логирование |
| Злоупотребление правами | Модератор или плагин делает слишком много | LuckPerms, никаких прав-шаблонов |
| Удалённый доступ | Захват RCON или веб-панели | Выключено по умолчанию, сильные секреты |
| Вредоносные плагины | Бэкдор в jar | Только надёжные источники |
| Уязвимости ПО | Эксплойты, роняющие сервер или выполняющие код | Актуальные сборки Paper |
| Захват аккаунта | Украден ваш аккаунт панели или Mojang | 2FA, отдельные пароли |
Защита от гриферства в игровом смысле - приваты, откаты, анти-иксрей - описана в статье защита от гриферов и античит. Здесь речь о самом сервере.
online-mode и опасность офлайн-режима#
online-mode=trueenforce-secure-profile=trueonline-mode=true заставляет сервер проверять вход каждого игрока через сессионные серверы Mojang. Тогда имя и UUID, с которыми приходит игрок, доказанно принадлежат ему.
При online-mode=false сервер верит игроку на слово. Кто угодно может зайти как Notch, под вашим именем или под именем любого оператора из ops.json, и сервер выдаст ему права оператора - офлайн-UUID вычисляется из имени, поэтому одно и то же имя всегда даёт один и тот же офлайн-UUID. На публичном сервере в офлайн-режиме ваш список операторов - это список имён, которые может ввести кто угодно.
Законная причина запускать online-mode=false ровно одна: бэкенд-сервер за прокси, который сам выполняет аутентификацию и передаёт проверенные личности. Это безопасно, только если forwarding настроен так, что бэкенд отклоняет соединения, пришедшие не через прокси, - modern forwarding в Velocity на Paper так и делает, а для BungeeCord нужен BungeeGuard или файрвол. Почему эта разница - вопрос безопасности, объясняется в статье BungeeCord или Velocity.
«Пиратские» серверы, пускающие игроков без купленного аккаунта, полагаются на офлайн-режим плюс плагин авторизации, который заставляет игроков регистрировать пароль в игре. Так ваша безопасность переезжает из системы аккаунтов Microsoft в плагин и в пароли, которые выбирают игроки, а каждый офлайн-сервер - мишень именно для такой подмены. Если вы держите такой сервер, понимайте, что выбрали более трудную задачу.
Вайтлист и кто может зайти#
Для приватного сервера вайтлист - самая сильная отдельная настройка из всех, что у вас есть:
white-list=trueenforce-whitelist=trueДва ключа делают разную работу:
white-list=trueне пускает никого, кого нет вwhitelist.json.enforce-whitelist=trueпри перезагрузке вайтлиста кикает игроков, которые в сети, но не в списке, - так удаление человека срабатывает сразу, а не при его следующем входе.
Используйте whitelist add <name> и whitelist remove <name> из консоли, а не правьте JSON вручную: сервер сам сопоставит имена с UUID.
Зачем это серверу, о котором никто не знает: публичные сканеры постоянно прочёсывают интернет в поисках серверов Minecraft и публикуют найденное, включая версию, число игроков и включён ли вайтлист. Группы используют эти списки, чтобы находить открытые серверы и гриферить их, иногда в течение нескольких часов после первого запуска сервера. Неизвестность - не защита. Сервер «только для друзей» без вайтлиста - это публичный сервер, который просто ещё не нашли.
На публичных серверах вайтлист заменяют приваты, логирование и модерация - но пункты о подмене личности и правах ниже для них ещё важнее. Механика целиком описана в руководстве по вайтлисту и правам.
Операторы и права#
Статус оператора - грубый инструмент. Уровень 4, который op выдаёт по умолчанию, может выполнять любую команду, включая stop, op и всё, что плагин регистрирует для операторов. Многие плагины по умолчанию выдают все свои права операторам.
op-permission-level=4function-permission-level=2Чек-лист:
- Только владельцы. Оператор - у одного-двух человек. Все остальные - модераторы, строители, помощники - получают группу LuckPerms ровно с теми правами, которые нужны для их работы.
- **Никакого права
*.** Выдать группе*- это оператор под другим именем, включая то, о чём вы не подумали, например права плагинов на выполнение консольных команд. - Следите за правами на выполнение команд. Плагины, которые выполняют команды от имени консоли (команды в стиле
/sudo, командные таблички, действия по клику на NPC, плагины меню), в чужих руках так же сильны, как оператор. Их узлы прав - только для владельцев. - Время от времени просматривайте `ops.json`. Имена там накапливаются. Аккаунт бывшего сотрудника, у которого всё ещё есть оператор, - риск, если его аккаунт Minecraft когда-нибудь украдут.
- Логируйте действия персонала. CoreProtect записывает блоки и контейнеры; большинство плагинов модерации записывают наказания. Подотчётность больше сдерживает, чем выявляет.
Плагин прав, который стоит использовать, - LuckPerms, и в его руководстве показана лестница групп, где никому ниже владельца оператор не нужен ни для чего.
RCON, query и пинг статуса#
Рядом с игровым портом могут работать три сетевые службы. Каждая должна быть выключена, если ею ничто не пользуется.
enable-rcon=falsercon.port=25575rcon.password=broadcast-rcon-to-ops=trueenable-query=falsequery.port=25565enable-status=truehide-online-players=falseRCON даёт полный доступ к консоли любому, у кого есть пароль, по протоколу, который передаёт этот пароль открытым текстом. Если у вас нет инструмента, которому он нужен, оставьте enable-rcon=false. Если есть, используйте длинный случайный пароль, не открывайте порт шире, чем требуется, и никогда нигде не используйте этот пароль повторно. Большинству людей RCON заменяет консоль панели. Протокол и правила подробно разобраны в статье RCON без риска.
Query (enable-query) отвечает на запросы в стиле GameSpy списком игроков, плагинов и версией сервера по UDP. Им пользуются сайты-мониторинги серверов. Он раскрывает список ваших плагинов - карту для всякого, кто ищет уязвимый плагин. Включайте его, только если этого требует мониторинг, которым вы пользуетесь.
Статус (enable-status) - обычный пинг из списка серверов. Если его выключить, сервер будет показан выключенным в списке серверов у клиентов, и игроков это раздражает сильнее, чем замедляет сканеры. hide-online-players=true скрывает ники игроков во всплывающем списке - разумный выбор ради приватности для небольшого сервера.
Источники плагинов и слитые плагины#
Каждый установленный плагин работает со всеми полномочиями процесса сервера: он может читать любой файл, открывать сетевые соединения, выполнять консольные команды и скачивать дополнительный код. Плагин - не функция, а программа, которой вы полностью доверяете.
- Скачивайте со страницы самого автора. Hangar (PaperMC), Modrinth, SpigotMC и релизы автора на GitHub. Не перезаливы, не сайты-«зеркала», не файлы, которые пересылают в Discord.
- Никогда не используйте слитые или «nulled» премиум-плагины. Платные плагины, бесплатно распространяемые третьими лицами, - главный способ доставки jar с бэкдорами. Типичная начинка выдаёт определённому игроку оператора по команде, выполняет удалённые команды, крадёт файлы или распространяется на все остальные jar в папке
plugins. Плагин работает нормально - в этом и смысл. - Предпочитайте поддерживаемые плагины. Заброшенный плагин никто не исправит, когда в нём найдут уязвимость.
- Смотрите, что плагин просит. Плагин косметики, которому нужен собственный порт веб-сервера или который скачивает обновления с какого-то случайного домена, заслуживает второго взгляда.
- Ведите список. Знайте, что лежит в вашей папке
pluginsи зачем. Всё, что вы не можете объяснить, должно уйти.
Если вы подозреваете заражённый jar - появился оператор, которого никто не выдавал, неизвестные jar или файлы, консольные команды, которые никто не вводил, - считайте скомпрометированным весь сервер. Бэкдор, который распространяется между jar-файлами, означает, что удалить один плагин недостаточно. Как локализовать проблему, описано в статье что делать, если сервер взломали, а привычки, которые это предотвращают, - в статье как держать модовый сервер чистым.
Держите серверное ПО актуальным#
В Minecraft бывали серьёзные уязвимости, самая известная - Log4Shell (CVE-2021-44228) в декабре 2021 года: сообщение в чате могло заставить незалатанный сервер или клиент скачать и выполнить код. Ванильные версии 1.18.1 и новее содержат исправление, а более старым версиям для безопасности нужен был флаг JVM или исправленный конфиг. Серверы, которые до сих пор работают на старых незалатанных версиях, по-прежнему уязвимы.
Помимо громких уязвимостей, сборки Paper регулярно исправляют эксплойты, роняющие сервер, - некорректные пакеты, слишком большие книги или предметы, трюки с chunk ban, - которые позволяют одному игроку отключить сервер или сделать чанки незагружаемыми. Их исправляют тихо и постоянно.
- Запускайте актуальную сборку Paper для своей версии Minecraft.
- Регулярно обновляйте сборки, а не только версии. Обновление сборки в пределах той же версии Minecraft несёт мало риска.
- Если приходится держать старую версию ради совместимости, понимайте, что вы принимаете незакрытые баги, и ограничьте круг тех, кто может зайти.
Как обновиться, не сломав мир, описано в статье обновление версии Minecraft.
Защита сети и чего она не покрывает#
Некоторые атаки направлены на сеть, а не на игру. Поток трафика на ваш порт может сделать сервер недоступным, как бы он ни был настроен, а флуд подключений - тысячи фальшивых входов - может занять обработку логинов на сервере.
В Paper и Velocity есть встроенные ограничения частоты подключений и входов, а rate-limit в server.properties ограничивает число пакетов в секунду на игрока (0 отключает). В RE:NODE есть вышестоящая фильтрация, которая отбрасывает явные объёмные флуды, а также отражённый и некорректный трафик; атаки, которые выглядят как настоящие игроки, не фильтруются, и ни один хостер не может честно пообещать обратное. Честная версия этой фразы - в статье что мы делаем с атаками.
Защищайте и собственный адрес. IP сервера публичен по своей природе, а ваш домашний IP - нет: не запускайте инструменты и плагины, которые показывают IP игроков другим игрокам, и следите за тем, что персонал выкладывает на скриншотах консоли, где виден IP каждого входящего игрока.
Защитите панель и аккаунты вокруг неё#
Сервер защищён ровно настолько, насколько защищены аккаунты, которые им управляют:
- Ваш аккаунт в панели хостинга. Он может остановить сервер, прочитать любой файл, скачать любой бэкап. Используйте уникальный пароль и двухфакторную аутентификацию. В RE:NODE 2FA работает с кодами из любого приложения-аутентификатора плюс одноразовые коды восстановления - храните коды восстановления где-нибудь офлайн, потому что аккаунт, потерявший и то и другое, восстановить нельзя. Пошаговая инструкция - в статье двухфакторная аутентификация для аккаунта панели.
- Доступ персонала. Давайте персоналу субпользователей ровно с тем, что им нужно, - только консоль, только файлы, без оплаты, - а не свой логин. RE:NODE ведёт журнал действий по каждому серверу, так что видно, кто что сделал. Как это спроектировать, описано в статье субпользователи и минимальные привилегии.
- Реквизиты SFTP. Они свои у каждого сервера; не вставляйте их в Discord.
- Ваш аккаунт Minecraft. Владелец, у которого украли аккаунт Microsoft, отдаёт атакующему оператора на каждом своём сервере. Защитите и его через 2FA.
- Интеграции. Discord-боты с каналами консоли, веб-панели, плагины магазинов - каждая из них ещё один вход. Канал консоли DiscordSRV - это доступ к консоли для всех, кто может в нём писать.
Чек-лист#
Скопируйте его и пройдитесь по нему перед запуском и затем каждые несколько месяцев:
[ ] online-mode=true on every server players reach directly[ ] proxy backends reject direct connections (tested from outside)[ ] white-list=true and enforce-whitelist=true on private servers[ ] ops.json holds only owners[ ] no group has the * permission[ ] command-running plugin permissions held by owners only[ ] enable-rcon=false, or a long unique password and limited exposure[ ] enable-query=false unless a listing site needs it[ ] every plugin downloaded from its author, none leaked[ ] Paper on a current build[ ] panel account with 2FA and recovery codes stored offline[ ] staff on subusers or roles, not shared logins[ ] backups scheduled, and one restore actually testedПоследняя строка - не для красоты. Каждый пункт выше уменьшает шанс плохого дня; работающая резервная копия - то, что его заканчивает. В RE:NODE слоты резервных копий входят в каждый тариф Minecraft, хранятся не на той машине, которую защищают, и могут быть заблокированы, чтобы ротация не удалила копию, сделанную перед инцидентом. Почему важна проверка, объясняется в статье резервные копии, которые действительно восстанавливаются.
FAQ#
Безопасен ли сервер Minecraft в офлайн-режиме?
Нет, если игроки могут достучаться до него напрямую. Без online mode кто угодно может зайти под любым именем, включая имена операторов. Единственный безопасный вариант - бэкенд за правильно настроенным прокси, который отклоняет прямые подключения.
Нужен ли вайтлист, если адрес сервера секретный?
Да. Сканеры находят серверы Minecraft по всему интернету за считаные часы и делятся списками. Сервер, которого нет в списках, - ещё не скрытый сервер. Только вайтлист сохраняет приватный сервер приватным.
Стоит ли давать модераторам оператора?
Нет. Дайте им группу прав с нужными командами. Оператор даёт всё, включая то, что плагины по умолчанию выдают операторам, и превращает украденный аккаунт модератора в украденный сервер.
Безопасно ли использовать бесплатные копии платных плагинов?
Нет. Слитые премиум-плагины - самый частый источник бэкдоров на серверах Minecraft. Плагин будет работать, и скрытый код, который отдаёт управление кому-то другому, тоже.
Как понять, что мой сервер скомпрометирован?
Необъяснимые операторы, команды в логе, которые никто не вводил, новые или изменённые jar в plugins, неизвестные файлы или задачи по расписанию. Считайте любое из этого компрометацией всего сервера, восстановитесь из заведомо чистой резервной копии и смените все учётные данные.




Комментарии
Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.