Skip to content
Перейти к содержимому
Вернуться в блог
BungeeGuard: Безопасность вашей сети прокси Minecraft

BungeeGuard: Безопасность вашей сети прокси Minecraft

Alexandru Maftei
Alexandru Maftei
@ice
Обновлено
13 просмотров
TL;DR:BungeeGuard - плагин безопасности, предотвращающий обход прокси Minecraft и прямое подключение к серверам. Использует аутентификацию на основе токенов для BungeeCord и Velocity.

"Плагинное решение безопасности для BungeeCord и Velocity."

lucko/BungeeGuard, github.com
⭐ 225 звезд💻 Java📜 MIT

Если вы управляете многосерверной сетью Minecraft с прокси, вероятно, знаете, что BungeeCord по умолчанию не безопасен. Зловещие игроки могут обойти прокси и подключиться напрямую к серверам, присоединившись под любым именем или UUID. Это известная уязвимость, которая привела к падению многих крупных серверов.

Вот где приходит BungeeGuard. Это простой Java-плагин, добавляющий аутентификацию на основе токенов между прокси и серверами. Без сложных правил брандмауэра (или общего хостинга, где их нельзя использовать), BungeeGuard сам заботится об аутентификации.

Что делает этот проект

Идея BungeeGuard почти смешно проста. Ваш прокси добавляет секретный токен аутентификации в хендшейк подключения игрока. Ваши серверы проверяют токен перед допуском игрока. Всё.

Когда законный игрок подключается к вашему прокси (например, proxy.example.com), BungeeGuard в прокси встраивает предварительно поделённый секретный токен в данные подключения. Когда клиент игрока пытается присоединиться к серверу (например, 192.168.1.50:25565), копия BungeeGuard на сервере проверяет токен. Если он отсутствует или неверен, подключение сразу же отклоняется. Если кто-то пытается подключиться напрямую к серверу без прокси, токена нет, и они блокируются.

Это работает как на BungeeCord, так и на Velocity прокси, покрывая практически все крупные настройки сетей Minecraft.


Когда вам это нужно

Если вы управляете малой локальной сетью в LAN, вам, вероятно, не нужен BungeeGuard. Ваша локальная сеть, скорее всего, не под атакой. Но если ваши серверы доступны публично через интернет или некоторые серверы обслуживаются за пределами вашей LAN, вы уязвимы.

Это становится критичным, если ваша сеть зависит от прогресса игроков или экономики. Взлом аккаунтов, кража предметов, даже просто тролльские аккаунты с фальшивыми учетными данными могут испортить опыт для законных игроков. Чем больше ваша сеть, тем привлекательнее вы становитесь в качестве цели.

Вы, вероятно, находитесь на общем хостинге, где не можете настроить правила брандмауэра. BungeeGuard - ваша спасательная линия в этом сценарии.


Как установить BungeeGuard

Установка зависит от того, используете ли вы BungeeCord или Velocity. Процессы немного различаются.

Настройка BungeeCord

Сначала скачайте последний BungeeGuard.jar с страницы релизов. Текущая версия - v1.4.0, которая включает важный исправление безопасности, если вы обновляетесь с более старой версии. После обновления вращайте токен, чтобы кто-то не подобрал старый.

Поместите jar в папку плагинов BungeeCord:

bash
cp BungeeGuard.jar /path/to/bungeecord/plugins/
cd /path/to/bungeecord
java -jar BungeeCord.jar

После запуска BungeeCord создаст директорию `plugins/BungeeGuard/` с файлом `token.yml`. Откройте файл и скопируйте токен. Вам он понадобится для серверов.

Важно: убедитесь, что `ip_forward` установлен в `true` в вашем `config.yml` BungeeCord. Если забудете это, BungeeGuard не будет работать правильно.

Настройка Velocity

Если вы используете Velocity (а должны, если строите современную сеть), процесс ещё проще. Velocity 1.1.0 и новее включает BungeeGuard по умолчанию. Не нужно устанавливать плагин.

Просто отредактируйте `velocity.toml` и установите:

toml
player-info-forwarding-mode = "bungeeguard"

Ваш секрет передачи информации игрока уже в том же конфиге. Это и есть ваш токен BungeeGuard.

Серверы бэкэнда

Теперь установите BungeeGuard.jar в папку плагинов каждого сервера Spigot/Paper:

bash
cp BungeeGuard.jar /path/to/spigot/plugins/
cd /path/to/spigot
java -jar spigot.jar nogui

Перезапустите сервер. BungeeGuard создаст свою директорию конфига и сгенерирует `token.yml`. Откройте и вставьте токен из прокси. Каждый сервер бэкэнда нуждается в том же токене.

Если вы используете несколько прокси (чувствительный настройка для балансировки нагрузки), они все делят один токен.


Ключевые особенности, которые важны

Аутентификация на основе токенов - ядро функциональности, но под капотом происходит больше.

BungeeGuard проверяет информацию игрока, передаваемую от прокси к серверу. Это не только проверка существования токена, но и валидация того, что токен правильный и данные хендшейка не изменены. Это предотвращает более сложные атаки, где кто-то может подделать данные хендшейка.

Плагин также обрабатывает современный режим передачи информации игрока в Velocity, который является более чистым способом передачи данных игрока в новых настройках. Если вы строите сеть с нуля, Velocity с встроенным BungeeGuard - правильный выбор.

Полезный деталь: BungeeGuard невероятно лёгкий. Он не добавляет заметную нагрузку, что важно при поддержке тысяч одновременных игроков на нескольких серверах.


Безопасность и ловушки

Ваш токен - буквально безопасность всей вашей сети. Относитесь к нему как к паролю. Если кто-то получит ваш токен, они могут создавать видимые законные подключения к вашим серверам бэкэнда и имитировать любого.

Храните файлы `token.yml` безопасно. Не коммитите их в версионный контроль. Не публикуйте в Discord. Просто не делайте этого.

При обновлении до v1.4.0 (что вы должны сделать сразу), разработчик рекомендует вращать токен после обновления затронутых настроек BungeeCord. Это очищает старые токены, которые могли быть скомпрометированы. Настройки Velocity с встроенным BungeeGuard не затрагиваются этой уязвимостью.

Вы также хотите правила брандмауэра в дополнение к BungeeGuard, а не вместо них. Настройте брандмауэр для блокировки прямых подключений к серверам бэкэнда из интернета. BungeeGuard - отличный второй слой защиты, но не должен быть единственным. Если можете настроить правила iptables, сделайте это. Затем добавьте BungeeGuard сверху.

Тестируйте настройку перед запуском. Попробуйте подключиться напрямую к серверу бэкэнда без прокси. Должно быть отображено «Подключение отклонено» или таймаут. Если видите экран входа, что-то не так с вашей установкой BungeeGuard.


Аналогичные проекты и альтернативы

Правила брандмауэра (iptables, ufw) технически являются альтернативой, но требуют доступа к системе и склонны к ошибкам. Большинство серверов, использующих BungeeGuard, делают и то, и другое.

Некоторые провайдеры хостинга предлагают управляемые решения прокси, которые обрабатывают аутентификацию за вас. Но если вы управляете своей инфраструктурой или находитесь на общем хостинге без этой функции, BungeeGuard действительно ваш лучший вариант. Он был протестирован на сетях с тысячами игроков.

Сам проект солиден и активно поддерживается. Он лицензирован под MIT (225 звёзд на GitHub, основан на Java), и разработчик относится к безопасности серьёзно, как это видно по最近 исправлению уязвимости и ответственному процессу раскрытия.

Если вы управляете данными игроков с помощью сложного белого списка или кастомной аутентификации, инструменты вроде создателя белого списка Minecraft работают хорошо вместе с BungeeGuard. А для администрирования сервера, инструменты поиска блоков помогут, когда вам нужно аудит мира на подозрительные структуры.

Об авторе
Alexandru Maftei
Alexandru MafteiВедущий автор

Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.

Поделитесь с друзьями!

Комментарии

Пока нет комментариев. Станьте первым, кто поделится своим мнением!

We use cookies to improve your experience. By continuing to use this site, you agree to our use of cookies. Read our Privacy Policy