что такое bungeecord в майнкрафт
/alert
bungeecord.command.alert
Выдает предупреждение для всех пользователей, подключенных к BungeeCord. Цвет коды могут использоваться с &, специальный код &h скроет все форматирование по умолчанию, что позволяет полностью настроить сообщений.
/bungee
Код: [Выделить]
Показывает, какой версии BungeeCord настоящее время выполняется.
/glist
bungeecord.command.list
Показывает список всех игроков подключеных к BungeeCord.
/greload
Код: [Выделить]
bungeecord.command.reload
Заново загружает конфигурационный BungeeCord. Как Bukkit команду перезагрузки, это не предназначено для использования на регулярной основе, и может привести к неожиданному поведению, однако она будет перезагрузить все серверы
bungeecord.command.ip
Показывает IP адрес проигрывателя, подключенного к BungeeCord.
/perms
Показывает все разрешения, которые у вас есть, и все группы, которые вы посещаете
/send
bungeecord.command.send
Отправляет указанного игрока(игроков) на указанный сервер
/server [server]
bungeecord.command.server
При использовании с аргументом, переносит вас на указанный сервер. При использовании без параметров, отображает список серверов
BungeeCord и Minecraft: Проблемы безопасности и опасности
Коротко о Bungee
BungeeCord — прокси-сервер, позволяющий игровым проектам объединять несколько серверов Minecraft с возможностью быстрого переключения игроков между ними.
В этой статье я поделюсь опытом работы с ядром, расскажу о проблемах с безопасностью на использующих его серверах, а так же дам несколько простых советов, которые, возможно, помогут предотвратить взлом такого сервера.
Коротко, где чаще всего используется BungeeCord:
Наиболее распространенные уязвимости таких серверов:
Как это работает
Большинство проектов под управлением BungeeCord представляют из себя следующую цепочку серверов (которые могут располагаться хоть на одном IP с разными портами, хоть на машинах в разных частях мира).
Proxy
Первый этап — собственно, это и есть сам сервер, к которому подключаются игроки. Он не имеет точки спавна или игровых миров — его задача перенаправить подключившегося к следующему этапу.
Казалось бы, тут все просто — но нет.
Основную прелесть, а вместе с тем и проблему на этом этапе составляет само перенаправление — сервер не просто редиректит игрока к другому IP, а выполняет роль промежуточного сервера.
Проще говоря, все команды, которые игрок отправляет, все пакеты синхронизации, каждое сообщение в чате сначала обрабатывается именно тут.
Чем нам это грозит?
Объясню на гипотетическом примере: Наш разработчик Drygok, доблестно выполняя свою работу, имеет на серверах права, близкие к максимальным. Он прекрасно защитил свой аккаунт собственной системой авторизации — сложный пароль, двухфакторная аутентификация, да еще и привязка к конкретному диапазону IP-адресов его провайдера, после чего со спокойной душой выходит с сервера, но через 10 минут все игроки «вылетают», а сервера останавливаются потому что кто-то выполнил команду /end от его имени.
Что же произошло? Все просто: Неизвестный вошел в игру под никнеймом нашего разработчика и, игнорируя требования сервера авторизоваться, ввел команду, которая обрабатывается самим Прокси-сервером, а значит не может быть предотвращена даже для неавторизованных пользователей.
Как предотвратить?
Простейший способ предотвращения подобных ситуаций — отключение всех внутренних команд ядра и обнуление любых прав на этом этапе. Даже для разработчика. Тем более для разработчика.
Сервер авторизации
Второй этап в цепочке — сервер, на котором игрок регистрируется и авторизуется.
Именно тут наш пользователь впервые почувствует твердую кубическую землю под своими геометрическими ногами.
Чаще всего сервера этого этапа выглядят примерно так:
Основная проблема на этом этапе — чрезвычайные права для игроков. Редко кто-то занимается их настройкой, ведь воспользоваться ими сможет только авторизованный игрок, а при авторизации игрока сразу перенаправляет на следующий этап.
Чем нам это грозит?
В некоторых случаях игрок может предотвратить перенаправление на другой сервер после авторизации: Зачастую быстрые переподключения к игровому серверу предотвращаются ядром или плагинами того сервера. Так, при переподключении игрока сразу после успешной авторизации, сервер на следующем этапе может отклонить подключение и авторизованный игрок останется на сервере авторизации.
Далее игрок, имеющий повышенные права, спокойно узнает список установленных у нас плагинов (/plugins), а далее, узнавая их возможности с имеющимися у него правами, начинает свое темное дело.
Приведу два примера, которые встречал лично далеко не единожды.
Пример первый. Доступ к ASW.
AutoSaveWorld — крайне полезный, а вместе с тем и опасный плагин для любого сервера. Его возможности в моем пересказе, кратко:
Нет, это не ошибка. На огромном количестве серверов и правда стоит плагин, позволяющий запустить любой процесс, имея соответствующий доступ, который некоторые сервера предоставляют всем игрокам на этом этапе.
Пример второй. Безобидный SkinsRestorer.
SkinsRestorer — крайне популярный плагин, использующийся на огромном количестве серверов. В основном он используется для восстановления пропавших из-за использования прокси скинов, но так же имеет возможность установки собственных. Именно эта возможность и является потенциальной уязвимостью.
С помощью команды /skin можно не только загрузить скин другого игрока с его никнеймом, но и установить собственный, указав адрес изображения (/skin URL). Опасность этой команды заключается в том, что изначально доступ к ней предполагается для игроков (а не только при неправильной настройке прав, как в случае с ASW).
Как же это можно использовать? Загрузка изображения по указанному адресу — обычный GET-запрос. Запрос, выполняемый с самого сервера.
Вариантов дальнейшего использования множество — начиная с обращения к закрытому API (например, выдачи доната), доступ к которому предоставляется для определенных IP-адресов, заканчивая обычным флудом.
Как предотвратить?
Предотвратить подобное можно, ограничивая права игроков (что рекомендуется делать на любом сервере), блокировать все возможные команды кроме команд авторизации и регистрации, а так же запретить установку собственного скина по URL (рекомендую сделать это на всех серверах)
Hub — общее пространство, куда попадают игроки для выбора игрового сервера и режима
Чаще всего Хабы, как и основные игровые сервера, уникальны для каждого сервера, но некоторые проблемы безопасности для них едины.
Прямое подключение
Подключаясь к этому серверу напрямую (к его IP), игрок может миновать предыдущие этапы, в том числе авторизацию
Чем нам это грозит?
Пропустив этап авторизации, игрок может пользоваться всеми правами пользователя, никнейм которого использован для подключения
Как предотвратить?
Большинство ядер сервера имеет встроенную настройку, блокирующую подключение без использования BungeeCord. Например, Spigot в spigot.yml:
Если Вы используете эту настройку — обязательно прочитайте следующий пункт!
Подмена данных игрока
Практически все ядра серверов, блокирующие прямое подключение к серверу (в том числе Spigot), имеют активную уязвимость, связанную с подменой данных игрока через собственный BungeeCord-сервер: Игрок ставит свой прокси-сервер с перенаправлением подключений на наш основной игровой сервер, таким образом ядро игрового сервера определяет, что для подключения используется BungeeCord и доверяет всем данным, передаваемым с него (IP прокси на совпадение с IP сервера в таком случае не проверяется)
Чем нам это грозит?
Чаще всего таким образом подменяются: IP игрока (обход сессий и получение доступа к чужому аккаунту) и UUID (используется некоторыми плагинами и самим сервером для идентификации игрока, обход контроля прав и доступ к правам других игроков).
При использовании BungeeCord необходимо исправлять самостоятельно, иначе это может позволить злоумышленнику получить доступ не только к аккаунтам игроков, но и к возможностям администраторов!
Как предотвратить?
Предотвратить это проще всего закрытием лишних портов для сторонних подключений, а => любой возможности подключения к серверу в обход Proxy-сервера.
Рекомендуется закрытие для внешнего подключения всех портов всех серверов кроме основного BungeeCord-сервера!
Что такое BungeeCord?
Если вы играете в майнкрафт на современных серверах, то с вероятностью 99% вы уже видели BungeeCord в действии, хотя могли этого и не осознавать.
Как выглядит BungeeCord?
Так что же именно такое BungeeCord?
Игровая сеть BungeeCord.
Итак, банджи это лифт связывающий множество этажей, на каждом из которых что-то свое.
А он вам нужен?
Тут уж каждый решает для себя сам, но если вам нужны подсказки, то вот они:
Какие еще преимущества есть у банджи?
Позволяет держать в одной сети сервера разных версий.
Позволяет выдержать очень высокий онлайн.
Ни один одиночный сервер не способен выдержать онлайн выше 150 человек, за исключением случаев экстремальной оптимизации (когда геймплейные элементы и функционал сервера приносят в жертву ради емкости). Все сервера с онлайном 250+ используют BungeeCord, распределяя свой онлайн по множеству отдельных серверов внутри сети, например выживание alpha, beta, gamma или grief-1, grief-2 и т.п.
Позволяет использовать несколько хостингов
Большинство крупных игровых проектов, вроде Hypixel, арендуют одновременно десятки выделенных хостингов, на которых располагают свои игровые сервера. Это позволяет им выдержать онлайн в десятки тысяч игроков, которые подключаются по единому айпи адресу и уже потом распределяются по множеству хабов и лобби выбора режима.
Дополнительные возможности
До сих пор речь шла про то что банджи связывает множество отдельных серверов воедино. Но неужели им обязательно быть такими уж отдельными? На самом деле нет.
Сами переходы между серверами происходят очень гармонично — порталы, менюшки, таблички, голограммы, npc. Оформить прыжки между серверами можно как угодно, вас ограничивает лишь ваша фантазия.
Многие игровые аспекты не связаны между серверами изначально, но их с легкостью можно связать — экономика и балансы игроков, привилегии, чат, меню таб, инвентари и сундуки края, скиллы мсммо, кланы, расы, и много чего еще.. — все это с легкостью можно сделать общим между серверами, так что ваши игроки, прыгая из режима в режим могут и вовсе не заметить что играют на разных серверах.
Есть ли недостатки у BungeeCord?
Практически нет. Единственная причина по которой вам стоило бы отказаться от использования BungeeCord — это если вы открыли непубличный одиночный сервер для себя и друзей, либо вы просто новичок и хотели бы избежать лишних затрат на хостинг.
А что собственно с хостингом, нужен какой-то особенный?
Да. Вступление несколько долгое, чтобы перейти к сути листайте ниже.
Многие из вас привыкли к тому что достаточно арендовать простенький сервер по слотам на дешевых хостингах вроде MyArena или Zorotex. Так вот, для игровой сети BungeeCord такие не подойдут. Это хостинги самого низшего эшелона, предназначенные для абсолютных новичков которые даже не рассчитывают на какой-то успех, высокий онлайн или окупаемость. Такие хостинги либо вообще не поддерживают игровые сети банджи, либо очень плохо совместимы с ними.
Есть люди которые в силу своих убеждений не могут отказаться от простых дешевых хостингов (тех что продаются по формату 10 рублей за слот) — таким людям придется арендовать сразу несколько простеньких хостингов, а также смирится с тем что банджикорд будет запускаться через раз и вечно сорить ошибками в консоли. Ну и конечно же уязвимость, ведь закрыть определенные порты возможности у вас не будет, в итоге придется лишь ждать момента когда какой-то «хакер» обойдет вашу авторизацию и зальет спавн лавой под веселую музычку для ролика на ютубе.
Какой же тогда нужен хостинг? Если говорить про более доступные варианты, можем посоветовать тарифы MC Unlim на партнерском хостинге MajorCore
Эти тарифы создавались с консультациями наших мастеров и изначально затачивались под BungeeCord. За сумму от 845 рублей (на момент написания статьи) вы получаете возможность запуска от 4 серверов одновременно в рамках одного тарифа. Удобная панель MultiCraft позволит вам управлять всеми серверами одновременно в одном месте. Сервера будут изначально защищены от взлома, благодаря закрытым портам — никто не обойдет ваш сервер авторизации, не сможет использовать печально известную подмену uuid и прочие коварства аналогичной сути.
Важно! Для максимальной защищенности серверов обязательно поставьте галочку BungeeCord при оформлении заказа на MajorCore.
Если вы по какой-то причине предпочтете выбрать другой аналогичный хостинг, советуем вам ориентироваться на наличие панели MultiCraft, так уж исторически сложилось что эта панель наилучшим образом совместима с BungeeCord и практически гарантирует удобную и стабильную работу серверов.
Увы, на большинстве других хостингов вам придется покупать несколько простых хостингов для запуска своей игровой сети. На момент написания статьи лишь единицы среди хостингов рунета позволяют в рамках одного тарифа запускать более 1 сервера. MajorCore в их числе.
Хорошо, а если не экономить?
Какой хостинг можно считать самым лучшим? Самым надежным, защищенным, чтоб и онлайн высокий мог выдержать, и против ддос атак конкурентов выстоял. Вот если я серьезно настроен, намерен зарабатывать на сервере, и готов вложится, что брать?
OVH, Hetzner — это лучшие варианты.
Мировые лидеры хостинга готовые сдать вам в аренду самые мощные выделенные сервера, которые находятся в огромных, защищенных от всевозможных атак, датацентрах. Возможность выбора датацентра — чтобы выбрать ближайший к вам, для наименьшего пинга. Такие сервера обходятся не дешево, от 3000 рублей в месяц. Но если вы можете себе это позволить, то вряд ли пожалеете. Один выделенный сервер, при должных оптимизациях сборок, способен выдержать до 500 человек онлайна.
Итоги.
Как видим, BungeeCord это незаменимая вещь для владельцев современных серверов майнкрафта. Без нее могут обойтись лишь новички либо владельцы непубличных серверов. Банджикорд позволит вам выдержать высокий онлайн, объеденит множество серверов под одним айпи адресом, с удобной и приятной навигацией, и позволит поразить своих игроков многообразием режимов.
В статье опущены некоторые технические нюансы, она призвана быть максимально понятной рядовому читателю.
Надеемся эта статья оказалась полезна для вас! Не стесняйтесь задавать вопросы в сообщениях группы 🙂
База знаний
Что такое BungeeCord и как его настроить?
⭐️ ПРИВЕТСТВУЕМ НА HOSTING-MINECRAFT.RU ⭐️
✔️ Наша команда специалистов подготовила для Вас обучающий видео урок на тему: » Как настроить BungeeCord на сервере Майнкрафт? «.
Если у Вас есть 2 сервера, например мини-игры и еще какой-то мод, благодаря BungeeCord ядру, Вы можете сделать единый вход на сервера, вместо двух разных IP по которым нужно было бы подключаться. Мы заходим на BungeeCord и далее уже выбираем какой конкретно сервер нас интересует, выглядит это всё как переход между мирами. BungeeCord корректно работает с серверами на ядре Spigot при настройках в конфиге » bungeecord: true » и » online-mode=false «, за остальные ядра информации нет.
BungeeCord также служит как ядро с защитой от атаки ботами, так как имеет возможность фильтровать все входящие подключения (разумеется благодаря плагинам) никак не влияя на основной игровой сервер.
❗️ ❗️ На нашем хостинге, тариф BungeeCord стоит всего 35 рублей в месяц, на этом тарифе запрещено запускать любые другие ядра кроме BungeeCord, хоть это и является доступным, но никакое другое ядро сервера корректно работать не будет, панель не определит его как запущенный!
ЗАКРЫТИЕ ПОРТОВ НА СЕРВЕРЕ
Все наши ноды связаны локально и мы проводим процедуру выдачи » локальных » IP адресов, которые будут доступны только между нодами, т.е даже если сервер bungee и lobby на разных нодах, они будут доступны друг для друга, но lobby будет доступен только для bungee локально, а bungee будет доступен полностью для всех, что исключает возможность обхода авторизации. При этом RCON доступ возможно оставить доступным для lobby сервера, по обычному внешнему адресу, например для выдачи донатов.
Всё что требуется, это создать запрос в поддержку о необходимости локальных адресов для связи bungee.
После этого в config.yml сервера bungee указывайте полученные локальные IP адреса других серверов, вместо обычных.
Подробнее смотрите в видео ролике:
✅ ПОДПИШИСЬ НА НАШ YOUTUBE КАНАЛ ✅
ПРОМО-КОД НА СКИДКУ 15%: ready-steady-go
Поднимаем свой полноценный игровой Minecraft сервер с мини-играми. Часть 3. Устанавливаем мини-игры
Посмотреть, что в итоге получилось у меня: mc.piratebayserver.net
По любым вопросам пишите в Discord.
И так, лобби у нас готово, теперь нам нужно запустить сервера с мини-играми и прокси сервер.
Для этого нам понадобится такие плагины:
Так же создаем три новых папки в корневой папке сервера:
В папку BungeeCord копируем скачаный файл BungeeCord.jar, в MurderMystery и SkyBlock копируем paper-1.15.2.jar. Так же во все новые папки копируем файл start.sh из PirateBay.
Файл start.sh редактируем таким образом, что для каждого сервера у нас было своё название процесса для программы screen. Так же для BungeeCord будет другой jar файл, который мы скачали ранее. Я сделал это следующим образом.
Обратите внимание, суммарно теперь 4 сервера будут потреблять 3.5Gb ОЗУ, поэтому мне пришлось увеличить конфигурацию дроплета на хостинге до 4Gb.
По уже пройденному сценарию запускаем 3 новых сервера, не забывая редактировать файл eula.txt.
После первого запуска сервера BungeeCord, нам нужно в его конфигурации прописать 3 будущих сервера: PirateBay, MurderMystery, SkyBlock. Для этого в файле
/BungeeCord/config.yml добавляем следующие сервера, удалив тот, что был создан по умолчанию:
так же ставим ip_forward: true и не забываем поменять online_mode: true на false, если у вас не лицензионный Minecraft.
После первого запуска серверов MurderMystery и SkyBlock, а также для PirateBay правим их server.properties, выставив соответствующие порты из bungeecord. Так же нужно установить online-mode=false, что бы bungeecord мог проксировать наши сервера:
для PirateBay:
server-port=25565
query.port=25565
online-mode=false
для MurderMystery:
server-port=25566
query.port=25566
online-mode=false
для SkyBlock:
server-port=25567
query.port=25567
online-mode=false
Так же для того, что бы заработал Citizens Server Selector, нам нужно в файле spigot.yml для сервера PirateBay проставить параметр bungeecord: true
Перезапускаем все сервера.
Обратите внимание, что теперь у нас изменился порт для подключения в игровом клиенте, согласно конфигурации bungeecord теперь он 25577.
Теперь время настроить наш лобби-сервер. Для этого копируем скачанные плагины SuperLobbyDeluxe, Citizens, Citizens Server Selector, LuckPerms, ItemJoin и Chest Commands в папку плагинов нашего PirateBay сервера
/PirateBay/plugins. Перезапускаем сервер и подключаемся к нему из игры.
Первым делом выберем место на карте, где у нас должны появляться игроки и выполним команду:
Теперь выбираем место для npc, который будет перенаправлять нас на сервер мини-игры и выполняем команды:
Наш npc создался и если мы нажмем на него правой кнопкой мыши, нас перенаправит на сервер MurderMystery. Для перехода между серверами вы так же можете использовать команду /server:
Тоже самое проделываем и для SkyBlock:
У нас должно получиться следующее:
Теперь настроим меню игрока. Для этого нам нужно подправить конфигурацию плагина ItemJoin.
/PirateBay/plugins/ItemJoin/items.yml и заменяем содержимое нашим:
Перезапускаем сервер PirateBay. У нас должно появиться меню в виде компаса:
И при нажатии правой кнопки мыши вот такое игровое меню:
Но если мы заберем у нашего игрока роль оператора, выполнив команду
то при попытке открыть меню компаса, мы получим сообщение, что у нас нет прав на открытие файла example.yml. И тут нам на помощь приходит плагин LuckPerms. Он позволяет настроить права на выполнение определенных команд для определенных групп пользователей или даже конкретных игроков.
Возвращаем нашему пользователю роль оператора в консоли сервера:
предоставим нам права админа на все команды плагина LuckPerms.
Переходим в игру и выполняем команду:
которая сгенерирует ссылку на сайт плагина, по которой нам нужно перейти для дальнейшего редактировани прав:
Переходим по ссылке и на открывшейся странице добавляем дефолтной группе пользователей права chestcommands.open.example.yml:
Жмем Save в правом верхнем углу, копируем сгенерированную команду и выполняем ее в игре. Результатом будет следующее сообщение:
Снова забираем у себя права оператора и пробуем открыть игровое меню. Теперь это должно получиться и у простого пользователя:
Теперь можете перенести плагины ItemJoin и Command Chest c содержимым их папок на сервера мини-игр SkyBlock и MurderMystery, что бы не проделывать эти же действия повторно.
Так же копируем соответствующие плагины мини-игр. Для Murder Mystery так же копируем плагин Holographic Displays и SuperLobbyDelux. Перезапускаем сервера мини-игр.
Для LuckPerms плагина на обоих серверах повторяем действия, что бы предоставить игрокам доступ к меню.
И так, игра SkyBlock у нас готова, вы можете перейти на нее через npc либо меню. Что бы начать выживание, просто наберите команду /is или /island и выберите тип острова.
Если вы хотите, что бы для всех новых игроков остров создавался автоматически, поставьте в файле
/SkyBlock/plugins/BentoBox/addons/BSkyBlock/config.yml для параметра create-island-on-first-login свойство enable: true и перезапустите сервер.
Осталось за малым: подобрать и импортировать карту для мини-игры Murder Mystery, а так же настроить её.
Я скачал эту карту, распаковал архив и залил на сервер в папку
/MurderMystery. Незабудьте в файле
/MurderMystery/server.properties изменить значение свойства level-name=world на имя вашей папки с картами. Перегружаем сервер и переходим на карту MurderMystery:
Как настроить игру Murder Mystery, вы можете в этом видео
Поздравляю, мы закончили с установкой игрового сервера. Нам все еще осталось сделать некоторые косметические настройки, такие как приветственные и информационные надписи. Однако эти изменения уже выходят за рамки этого туториала, но я думаю, вы без проблем сможете разобраться в конфигурационных файлах плагина SuperLobbyDelux.