Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Туториал Защита и безопасность сервера майнкрафт - 2022 | устранение уязвимостей/защита от взлома

unknown.png



Отныне лучший способ защиты от дюпов - переезд на 1.19.1
 
Воспользовался пунктом 2, сделал все ТОЧНО, как по инструкции, но при входе выдает ошибку. Либо я что-то не так сделал, либо инструкция старая
 
Воспользовался пунктом 2, сделал все ТОЧНО, как по инструкции, но при входе выдает ошибку. Либо я что-то не так сделал, либо инструкция старая
А что у тебя именно не так? Банжа у тебя или велосити?
 
Стоит банжа, еще раз повторюсь, все делал по инструкции
Ну вообще там на странице банжигвард написано, что если у вас сервер не 1.19+, то надо юзать пред-пред послежнюю версию
 
Ну вообще там на странице банжигвард написано, что если у вас сервер не 1.19+, то надо юзать пред-пред послежнюю версию
Окей, спасибо, и на всякий случай, напиши это в инструкции
 
7) Как фиксить краш песком+паутиной? Всё просто - отключаем физику блоков (в конфиге WorldGuard ставим no-physics-gravel: true no-physics-sand: true).
Есть какой то другой способ фикса, например как на туби тути:rolleyes:?

А то полностью отключать физику песка и гравия как-то не очень
 
Есть какой то другой способ фикса, например как на туби тути:rolleyes:?
Покупать плагины по 500 рублей, либо воровать патчи из новых версий. В 1.18.2 к примеру песок не падает бесконечно. По достижению какого-то лимита он перестаёт падать, если куча песка слишком велика.
 
Покупать плагины по 500 рублей, либо воровать патчи из новых версий. В 1.18.2 к примеру песок не падает бесконечно. По достижению какого-то лимита он перестаёт падать, если куча песка слишком велика.
Используем 1.19.2 и при 40к песка тпс упал в ноль.

UPD: На сервере стоит ядро Pufferfish последней версии
 
Используем 1.19.2 и при 40к песка тпс упал в ноль.

UPD: На сервере стоит ядро Pufferfish последней версии
Попробуй пурпур, может магия произойдет. У меня по какой-то причине он не падает сразу весь
 
Немного переписал статью и обновил ссылки.
 
Уж сколько раз твердили миру что нужно защищать проект...​

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

⦁ Пункт 1 - порты и зачем их закрывать

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

Для зарытия портов своих серверов советую UFW. Он НЕ сбрасывает установленные правила, после перезагрузки дедика/вдс.

Установка осуществляется следующей командой:

apt install ufw

Настройка портов выглядит следующим образом:

ufw allow 22 - разрешает порт SSH
ufw allow 21 - разрешает порт FTP
ufw allow *порт вашей банжи/велосити* - думаю понятно
ufw status - просмотр статуса UFW и установленных правил
ufw enable - включает UFW (пишем после того, как всё настроили)
ufw disable - отключает UFW


Обязательно проверяйте установленные правила, перед включением UFW. Закроете себе доступ - восстановить никак нельзя.

Расширенный гайд по UFW: https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-debian-9-ru

⦁ Пункт 2 - защита портов для "панелек"

Глупо отрицать, что панельные хостинги все еще пользуются популярностью. Однако на многих из них ты никак не можешь настроить порты, что подвергает их рискам. И как же защититься от прямого подключения в таком случае?

Для этого есть 1 полезный плагин.

Этот плагин - BungeeGuard.
Если у вас Bungeecord. Ставьте плагин на банжу. Он сгенерирует случайный ключ безопасности или же токен. Переходим в папку плагина, ищем там файл token.yml и копируем данный токен. Затем ставим этот плагин на свои основные сервера, после чего в конфиг вставляем скопированный ранее токен. Готово. Теперь никто не сможет присоединиться на ваш сервер через открытый порт или фейк банжу.
Если у вас Velocity. Сам плагин на прокси ставить не надо. Вам нужно всего лишь поставить в конфиге велосити (velocity.toml) player-info-forwarding-mode: bungeeguard и задать ключ в файле forwarding-secret. Теперь вставляйте созданный ключ в конфиги плагинов на сервере. Готово.

⦁ Пункт 3 - О запуске не от root:

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

Создаем пользователя minecraft. /bin/bash позволяем ему использовать терминал и заходить в putty. -m создает папку пользователя в каталоге /home
useradd -m -s /bin/bash minecraft

Меняем пароль для пользователя minecraft
passwd minecraft

Заходим под новым пользователем и загружаем сборку. Загружать - в /home/minecraft
Устанавливаем права на папку пользователя. 700 = полный доступ к папке.
У других пользователей кроме root, доступа нет
chmod 700 /home/minecraft

Меняем права у всех папок и файлов в директории /home/minecraft
chmod -R 700 /home/minecraft/

Устанавливаем всем файлам и папкам владельца и группу.
chown -R minecraft:minecraft /home/minecraft/

Теперь действия по серверу делаем от этого юзера!

⦁ Пункт 4 - защита непосредственно сервера

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

а) Для защиты аккаунта вы можете использовать плагины на авторизацию со встроенной 2-факторной аутентификацией. Банальный пример такого - MC-Auth fork. Привязка к ВК спасет вас от пробива по базам данных прочих серверов. Даже если они узнают ваш пароль - не зайдут. Не ставьте одинаковые пароли на разных серверах!
Если привязка к вк это не ваше - для вас есть плагин для привязки к дискорду - DiscordUtils и для привязки к гуглу - 2FA.

б) Для защиты от тех, кто каким-то магическим образом получает себе админ-права можно использовать следующий плагин:
Моё чудо, UltimateServerProtector, позволяет установить игрокам с админ-правами дополнительный пароль для защиты. Также присутствует Op-Whitelist и прочие приколюхи.

в) Для того, чтобы обезопасить себя от донатеров с доступом в регионы качаем плагин - WorldGuardRegionProtect, который является продвинутым аналогом OPSRegion.
Если же вам нужно ограничить игроков с креативом от глупостей - можете использовать CreativeManager. Как по мне - лучший плагин на креатив-контроль.
Однако не всегда вас спасут какие-то плагины, по этому, если вы даете игроку * в каком-либо плагине, убедитесь, что вы заблокировали опасные команды оттуда.
Лучшим решением будет не давать * ни при каких обстоятельствах, выдавая права на команды по отдельности!

Также не стоит забывать о блокировке команд, но о ней ниже.

⦁ Пункт 5 - избавляемся от уязвимостей

Тут я соберу ряд полезных советов и ответов на ряд вопросов, которые часто видел в темах раздела "помощь"

Ряд известных уязвимостей, требующих пояснения:

1) UUID spoof - подмена своего UUID на UUID администратора. Если какие-то плагины используют UUID как способ хранения информации об игроке, то заменив свой UUID на админский, взломщик заполучит его права.
2) BungeeHack - создание левого банжикорда для захода на сервер в обход авторизации. Не закрыли порт/не установили банжигвард - на сервер смогут зайти через локальную банжу.
3) Log4Shell - эксплоит, при помощи которого можно выполнять вредоносный код на устройстве, которое использует устаревшую версию библиотеки log4j. Работает так: игрок пишет в чат на сервере, а майнкрафт воспринимает это сообщение так, что выполняет код, который указан в сообщении. Таким образом можно взломать и сервер и игроков сервера!

Ответы на вопросы по устранению уязвимостей:

1) Важно! Необходимо избавиться от log4j эксплоита. Всегда обновляйте свои ядра до последних версий (речь о релизах, не о версиях майнкрафта). Желательно установить данный флаг в скрипт запуска:
-Dlog4j2.formatMsgNoLookups=true
Также, чтобы обезопасить игроков стоит использовать плагин Log4jFix

2) Как фиксить краш тенями? Краш тенями "зафиксить" можно используя ядро Dionysus - форк пейпера. В файле paper.yml также стоит поставить queue-light-updates: true. Если держите сервер на 1.8 - FlamePaper для вас. На версиях 1.13+ исправлено.
3) Как фиксить краш раздатчиками? Это фиксится плагинами. Можете юзать этот. Исправлено в 1.13+ версиях и форках пейпера, упомянутых ранее.
4) Как чинить краш сервера командой из WorldEdit? Установите плагин FAWE последней версии. Там встроен фикс.
5) Как исправить краш сервера командой /mv? Вы можете просто её заблокировать, но для новых версий плагина вышел фикс.
6) Сервер не запускается на ядре пейпер, что сделать? Скорее всего - это заражение "вирусом". С ним справились в этой теме.
7) Как фиксить краш песком+паутиной? Всё просто - отключаем физику блоков (в конфиге WorldGuard ставим no-physics-gravel: true no-physics-sand: true).

Советы по данному делу:

1) В качестве для сервера используйте Paper или его форки. Оно является самым производительным на данный момент и имеет в себе большинство фиксов связанных с механикой майнкрафта! Если вы используете спигот - просто замените его на Paper.
Все плагины на нём будут работать!

2) Используйте FAWE, если даете донатерам //set. Для чего? Поясняю. WorldEdit стандартный имеет некоторые огрехи и недочеты. К примеру возможность сетать запрещенными блоками. FAWE данные уязвимости устраняет.
3) Если вы используете mycommand, изменяйте строку конфига USE_UUID_FOR_PLAYERDATA: на false. UUID-hack, все дела. Думаю понимаете.
4) Для фикса ряда эксплоитов, связанных с пакетами и т.п. крашами, к использованию рекомендуются следующие плагины:
ExploitFixer - ряд фиксов пакет-крашей
IllegalStack - содержит фиксыв дюпов и ряда лаг машин
Примечание: Эти плагины не рекомендуется ставить на сервер версии 1.18.2 и выше! Там все фиксы уже встроены.
5) Рекомендую скрывать список плагинов от постороннего взора. Для этого выдайте группе игрока отрицательные права bukkit.command.version и bukkit.command.help. Будет лучше для вас, если плагины останутся в тайне.
6) Если используете PlugMan или его аналоги - запрещайте отгружать важные плагины. Зайдите в конфиг PlugMan и вносите в ignored-plugins всё важное. К таким относятся блокираторы, античиты, плагины на регистрацию, права и особенно BungeeGuard.
7) Не качайте платные плагины с источников. Там с вероятностью 99% есть бекдоры!

Доверять в 95% случаях можно сайтам:
spigot.org
dev.bukkit.org
"Доверяй, но проверяй" относится к сайтам:
rubukkit.org
spigotmc,ru
black-minecraft.com

К источникам, с которых ТОЧНО не рекомендуется качать что либо:
minesborka - нет модерации, мусор
mineleak/directleaks/blackspigot - посмотрите выше

⦁ Пункт 6 - защищаемся от ботов

Наверное самое простое из всего что вы тут увидите, но не обмолвиться об этом нельзя.
Для защиты от ботов чаще всего используют наш BungeeCord+BotFilter. Обязательно устанавливаем каптчу при входе на сервер!
Делается это так:
В файле config.yml в папке BotFilter разделе protection ставим либо 0 либо 1.
Важно также поставить лимит игроков на сервере, чтобы к вам не зашло 30МЛН ботов. Для этого в конфиге банжи и ставим в поле player_limit необходимое число игроков.

Помимо BungeeCord есть еще и Velocity. Он является более современным аналогом банжи без уязвимостей, которые есть в последней. Гайд по данному прокси можно найти тут. На него тоже есть ряд анти-бот плагинов. Самая на данный момент эффективная защита - LimboFilter.
В отличие от BotFilter, при помощи него вы сможете полностью кастомизировать каптчу. Для начала включите её, выставив в конфиге значение check-state-non-toggled: на "CAPTCHA_POSITION", а после делайте всё что захотите при помощи настроек из раздела captcha-generator:

⦁ Пункт 7 - блокируем команды

Блокировка команд прокси:
Для блокировки команд на bungeecord нужно включить их в раздел disabled_commands: в конфиге банжи.
Для блокировки команд прокси сервера Velocity потребуется использовать либо плагин, либо отнять права на их использование при помощи LuckPermsVelocity.
Команды которые СТОИТ заблокировать:
- server
- alert
- greload
- glist
- end

Блокировка команд на самом сервере не является важной частью. Можно просто отнять права на их использование, но обмолвиться стоит. Вы можете использовать любой блокиратор, но я порекомендую свой UniversalBlocker. Со всеми функциями ознакомиться сможете на странице с описанием плагина.

Итак, какие команды стоит заблокировать:
- op
- deop
- sudo и алиасы (выполнение команд от имени игрока,Essentials)
- execute (то же что и sudo)
- packet (ProtocolLib)
- ncp delay (выполнение команд от имени консоли)
- mycmd-runas (выполнение команд от консоли,MyCommand)
- npc create (Citizens)
- npc cmd (добавляет НПС команду,Citizens)
- npc cmdadd (добавляет НПС команду,Citizens)
- npcmd (CitizensCMD)
- /cs (выполнение скриптов,WorldEdit)
- jsexp
- jsexpansion
- javascriptexpansion
- brush command (позволяет выполнять команды от консоли,WorldEdit)

Опять же напомню, блокировка - не 100% защита. Стоит отбирать права на данные команды, если хотите действительно предотвратить их использование.

⦁ Заключение.

В сущности тут я описал всё, что можно. Главное, чтобы у вас самих была голова на плечах и вы понимали, что делаете.
Здравствуй OverWrite! У меня появилась такая проблема, У меня панелька, в Bungeefilter в плагинах есть Bungeeguard, собственно и токен, я токен ввел в папку bungeeguard на гриф сервере, но в банджике есть еще сервер лобби, а с лобби токен видимо другой, чем на ботфильтре, и не подключается, что делать?
 
Здравствуй OverWrite! У меня появилась такая проблема, У меня панелька, в Bungeefilter в плагинах есть Bungeeguard, собственно и токен, я токен ввел в папку bungeeguard на гриф сервере, но в банджике есть еще сервер лобби, а с лобби токен видимо другой, чем на ботфильтре, и не подключается, что делать?
Используй пред-пред последнюю версию, либо дев ботфильтра. Должно сработать
 
Здравствуйте, не подскажите как убрать команды в tab-complete плагинов Velocity? Все команды самого сервера убрал, использовав настройку в конфиге spigot.yml, где есть tab-complete: -1, а вот от Velocity остались. Хотелось бы их тоже убрать. Я уже понял, что отключить их надо как-то на самом прокси, а вот как - для меня стало задачей, уже пару часов сижу, не могу найти ничего.
 

Вложения:

  • Velocity commands.PNG
    Velocity commands.PNG
    Размер файла
    50,4 КБ
    Просмотров
    14

Поделиться этой страницей

Назад
Верх