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

Уж сколько раз твердили миру что нужно защищать проект...​

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

⦁ Пункт 1 - методы защиты при работе с VDS/Dedicated

Данный пункт невероятно огромен. Если вы используете ВДС или дедик, на котором запущен ваш сервер майнкрафта, то вам настоятельно рекомендуется ознакомиться с моей статьёй по этой ссылке: https://rubukkit.org/threads/rabota...s-zaschita-servera-i-t-p.184357/#post-1708303

Вы найдете там достаточно много полезной информации. Закрытие портов, защита от брутфорса, запуск без опаски вирусов - там есть всё, что нужно.

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

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

Для этого есть плагин: BungeeGuard.

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

⦁ Пункт 3 - Защита сервера, игроков и админов

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

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

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

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

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

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

Тут есть 1 важный пункт, который требует пояснения.
Log4Shell - эксплоит, при помощи которого можно выполнять вредоносный код на устройстве, которое использует устаревшую версию библиотеки log4j. Работает так: игрок пишет в чат на сервере, а майнкрафт воспринимает это сообщение так, что выполняет код, который указан в сообщении. Таким образом можно взломать и сервер и игроков сервера!

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

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

!!! ВАЖНО !!!
! Если вы делаете сервер 1.16.5 !
Если вы делаете сервер на версии 1.16.5 - не используйте ядро purpur и иные форки. Либо Paper, либо Patina. Только эти ядра имеют фикс данной проблемы.

2) Как фиксить краш тенями? - Краш тенями (или же частым их обновлением) "зафиксить" можно используя ядро Dionysus - форк пейпера. В файле paper.yml также стоит поставить queue-light-updates: true. На версиях 1.13+ исправлено.

3) Как фиксить краш раздатчиками? - Это фиксится плагинами. К примеру вот. Исправлено в 1.13+ версиях и форках пейпера, упомянутых ранее.

4) Как чинить краш сервера командой из WorldEdit? - Установите плагин FAWE последней версии (для версии сервера). Там встроен фикс.

5) Как исправить краш сервера командой /mv? - Самое простое решение это просто её заблокировать, либо отнять право mv.help. Для новых версий плагина вышел фикс, но работает только для версий 1.13+

6) Сервер не запускается на ядре пейпер, что делать? - Скорее всего - это заражение "вирусом". С ним справились в этой теме.

7) Как фиксить лаги песком+паутиной? - Всё просто - отключаем физику блоков (в конфиге WorldGuard ставим no-physics-gravel: true no-physics-sand: true).

8) Как исправить кучу ошибок "Could not pass InventoryClickEvent" и вылет сервера от этого? - Это не проблема плагинов, это Error-crash. Самый простой способ его исправить - установить ExploitFixer. На версиях 1.18.2 и выше исправлено.

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

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

2) Используйте FAWE, если даете донатерам //set. Для чего? Поясняю. WorldEdit стандартный имеет некоторые огрехи и недочеты. К примеру возможность сетать запрещенными блоками. FAWE данные уязвимости устраняет.

3) Для фикса ряда эксплоитов, связанных с пакетами и т.п. крашами, к использованию рекомендуются следующие плагины:
IllegalStack - содержит фиксыв дюпов и ряда лаг машин
ViaVersion - помимо того, что добавляет вход с новых версий, имеет в себе лимитёр пакетов, который поможет защититься от пакетных крашей. (По умолчанию слаб, требуется настройка. В конфиге рекомендуется выставить tracking-period: 5 и max-pps: 600)
ExploitFixer - включает себя ряд фиксов пакет-крашей, но имеет ложные срабатывания.
LPX - множество фиксов пакет-крашей, которые могут доставить проблемы на старых версиях игры. (не качайте сливы!)
Примечание: Плагины выше не рекомендуется ставить на сервер версии 1.18.2 и выше! Там все фиксы уже встроены.
Для большей защищенности на этих версиях можете прочесть следующую статью с настройками для paper-global.yml - https://github.com/YouHaveTrouble/minecraft-exploits-and-how-to-fix-them

4) Рекомендую скрывать список плагинов от постороннего взора. Зачем? Банально для того, чтобы у вас не воровали идеи 😁
Для этого выдайте группе игрока отрицательные права bukkit.command.plugins, bukkit.command.version и bukkit.command.help.
Будет лучше для вас, если плагины останутся в тайне.

5) В spigot.yml есть раздел spam-exclusions: и там прописана одна команда - /skill. Она ни за что не отвечает, но если её прописывать быстро - ядро не кикнет тебя за спам. Будет лучше убрать эту команду оттуда, оставив раздел пустым. Должно это выглядеть как spam-exclusions: []

6) Если используете PlugMan или его аналоги - запрещайте отгружать важные плагины. Зайдите в конфиг PlugMan и вносите в ignored-plugins всё важное. К таким относятся блокираторы, античиты, плагины на регистрацию, права и особенно BungeeGuard.

7) Рекомендую проверять список своих плагинов, если вы когда-либо качали плагины с неофициальных источников, или вовсе от левых пользователей. Даже если вы доверяете им, иногда они могут на этом сыграть и нарочно вшить в плагин заразу.
Если вы обнаружите в своём списке плагинов следующие плагины, то пересобирайте сборку с нуля:
PluginMetrics.jar (он же EssentialsBackup в /pl)- довольно баянистый малварь, но тем не менее, всё еще попадается. Вроде как уже не выполняет прямого назначения, но вот заражать может, что не есть хорошо.
ProtocolMeneger.jar - НН малварь, передающий данные сервер пропертиз и логи команд (среди которых /l, /login и /pas) на левый сайт.
PacketFixer.jar - еще 1 старый хак плагин, который ничего не фиксит, но сообщает данные от ркон игроку по команде.
PayloadFixer.jar - из той же серии, что и предыдущий, но выдаёт данные не по команде, а через сообщение в чат
Список может пополняться
И даже если этих плагинов нет, не забывайте о том, что

7) Не качайте платные плагины с источников. Там с вероятностью 99% есть бекдоры!

Доверять в 95% случаях можно сайтам:
spigot.org
dev.bukkit.org
curseforge.com
modrinth.com
"Доверяй, но проверяй" относится к сайтам:
rubukkit.org
вычеркнут из истории

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

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

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

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

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

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

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

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

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

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

В сущности тут я описал всё, что можно. Главное, чтобы у вас самих была голова на плечах и вы понимали, что делаете.
 
Последнее редактирование:
Обновил информацию по эксплоиту log4j.
Поместил его на видное место, чтоб точно увидели, а то я людей знаю

В угоду ограничению по лимиту символов убрал инфу про force-op, но она объективно никому уже не нужна
 
Добавляю разрешающий порт 3306. Запускаю. Но, не даёт зайти в БД phpmyadmin.
Как можно исправить?
 
Добавляю разрешающий порт 3306. Запускаю. Но, не даёт зайти в БД phpmyadmin.
Как можно исправить?
С phpmyadmin я не дружу вот вообще. Иди к экспертам.
(но если ты про сам сайт - тут тебе порт 80 надо открыть)
 
Последнее редактирование:
Сегодня 1... умный ютубер по 2b2t спалил способ краша через карты.
Добавлять в статью или нет - подумаю, способ не выглядит так уж ужасно, т.к. игрокам будет скорее лень выполнять эти рутинные действия на сервере без креатива.
По поводу самого способа, если вы имеете сервер с креативом - будет лучше просто заблокировать карты)
 
Сегодня 1... умный ютубер по 2b2t спалил способ краша через карты.
Добавлять в статью или нет - подумаю, способ не выглядит так уж ужасно, т.к. игрокам будет скорее лень выполнять эти рутинные действия на сервере без креатива.
По поводу самого способа, если вы имеете сервер с креативом - будет лучше просто заблокировать карты)
А что за действия хоть если вкратце?

Лень не лень, возможность есть а значит надо фиксить.
 
А что за действия хоть если вкратце?

Лень не лень, возможность есть а значит надо фиксить.
В ядре Dionysis уже есть встроенный фикс кстати говоря)

В общем на старых версиях есть такая херня, что эти вот метки на карте накладываются друг на друга, и если их станет много и таких карт игроки поместят тоже много - у тебя будут лаги
A_GFUpCCxzI.jpg
 
В ядре Dionysis уже есть встроенный фикс кстати говоря)

В общем на старых версиях есть такая херня, что эти вот метки на карте накладываются друг на друга, и если их станет много и таких карт игроки поместят тоже много - у тебя будут лаги
A_GFUpCCxzI.jpg
Что значит на старых версиях? То есть с какой версии уже пофиксили?
 
2б2т не перестает удивлять своими чертями
 
Последнее редактирование:
Поменяй год в названии темы, уже ведь 2022 все-таки. А так полезно. 👍
 
Время идёт и одни способы устаревают а другие становятся лучше. По этому было решено обновить инфу

> Убрал из статьи инфу про 2LS AntiBot, вместо него добавил информацию про FlameCord. За последние пару месяцев они прикрутили антибот систему, повысили производительность и улучшили систему антикраша (ну или хотя бы попытались). 2LS AntiBot, как показал опыт, слишком сильно нагружает систему и пропускает ботов без особых проблем. Лично я рекомендую оставаться на ботфильтре, однако за год без обновлений он может перестать быть хоть сколько-то актуальным, что печально. (ИНФОРМАЦИЯ НЕ АКТУАЛЬНАЯ НА МОМЕНТ 2.11.22)
> Упомянул, что ExploitFixer необходим лишь для версий до 1.16.5. Версия 1.16.5 и все последующие уже имеют в себе защиту от большинства способов краша пакетами. (Особенно касается 1.17.1). Где не справляется Paper - на помощь придёт Tunity (если речь про 1.16.5) или PurPur (если речь про 1.17.1). (ИНФОРМАЦИЯ НЕ АКТУАЛЬНАЯ НА МОМЕНТ 2.11.22)
> Обновил ссылку на FiguresFix. Дело в том, что появился новый способ положить сервера с креативом (ему уже как год, но для вас он будет новый, ок?) и для тех, кто выдаёт донатерам креатив, будет необходимо установить лимит на открытие сундука в минуту.
> Добавил инфу о плагине на "креатив контроль". В наше время появилось множество серверов, где креатив - нечто инородное. По этому ограничивать его использование - здравое решение, ведь хелперы и прочий STAFF, в большинстве случаев имеет креатив, ведь он необходим для тех или иных задач, а контролировать каждого - нереально.
 
Последнее редактирование:
Троллей не спрашивали
Не, в целом-то он действительно прав. На кой бегать с админкой зазря? Многие админы вообще на сервер даже не заходят, а всё через консоль отсматривают или через специальные логи в какое-нибудь удобное место типа ВКонтакте или в Дискорд.
Даже если ты какой-нибудь тех. админ, которому важно следить за игроками, чтобы искать баги и прочее - выдавать админку всё равно не нужно. Максимум - это доступ к режиму творчества/наблюдателя, какой-нибудь ваниш и командам самого плагина, баги которого тебя интересуют. Ходить с админкой имеет смысл только если тебе надо в приватах чем-то промышлять для дебага, но и на это есть (Должно быть) отдельное право в WorldGuard.
 
Не, в целом-то он действительно прав. На кой бегать с админкой зазря? Многие админы вообще на сервер даже не заходят, а всё через консоль отсматривают или через специальные логи в какое-нибудь удобное место типа ВКонтакте или в Дискорд.
Даже если ты какой-нибудь тех. админ, которому важно следить за игроками, чтобы искать баги и прочее - выдавать админку всё равно не нужно. Максимум - это доступ к режиму творчества/наблюдателя, какой-нибудь ваниш и командам самого плагина, баги которого тебя интересуют. Ходить с админкой имеет смысл только если тебе надо в приватах чем-то промышлять для дебага, но и на это есть (Должно быть) отдельное право в WorldGuard.
А теперь вспоминаем 2017 год и сервера где людям дают * или оп за 1000 рублей (и даже без обмана) и понимаем, что тут не обойтись без доп.привязки, т.к. игроки - тупые и ставят на серверах одинаковые пароли, сколько не говори им.
А также вспоминаем необходимость нанимать на сервер STAFF, чтобы они регулярно следили за чатом. Ну не будет у них доступа к сету, к спавну итд. А толку? У них всё еще есть доступ к бану и муту. Они всё еще способны сделать массовый бан всего живого на сервере, а если их взломают так это неизбежно.
 
Назад
Верх Низ