Туториал Защита и безопасность сервера майнкрафт - 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% защита. Стоит отбирать права на данные команды, если хотите действительно предотвратить их использование.

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

В сущности тут я описал всё, что можно. Главное, чтобы у вас самих была голова на плечах и вы понимали, что делаете.
 
Последнее редактирование:
А теперь вспоминаем 2017 год и сервера где людям дают * или оп за 1000 рублей (и даже без обмана) и понимаем, что тут не обойтись без доп.привязки, т.к. игроки - тупые и ставят на серверах одинаковые пароли, сколько не говори им.
А также вспоминаем необходимость нанимать на сервер STAFF, чтобы они регулярно следили за чатом. Ну не будет у них доступа к сету, к спавну итд. А толку? У них всё еще есть доступ к бану и муту. Они всё еще способны сделать массовый бан всего живого на сервере, а если их взломают так это неизбежно.
От массовых банов можно прикрутить какой-то алгоритм, который будет понимать, что если игрок начинает слишком много банить, то ему запрещать делать это на ближайшее время, а также, неплохо было бы разбанить всех игроков, которых он забанил. Не помню уже как эти алгоритмы называются, но они используются для анализа Ddos атак. Когда-то поверхностно изучал эту тему... Помню что-то было связано с энтропией в Ddos атаках)

От взлома можно ввести систему PIN-кодов. Если игрок пытается воспользоваться командой, которая может навредить серверу (тот же бан/мут), то попросить его один раз ввести PIN-код. Я когда-то делал такую защиту на своем сервере, чтобы даже если взломают админов, то никто ничего не сможет сделать серверу.
 
От массовых банов можно прикрутить какой-то алгоритм, который будет понимать, что если игрок начинает слишком много банить, то ему запрещать делать это на ближайшее время, а также, неплохо было бы разбанить всех игроков, которых он забанил. Не помню уже как эти алгоритмы называются, но они используются для анализа Ddos атак. Когда-то поверхностно изучал эту тему... Помню что-то было связано с энтропией в Ddos атаках)

От взлома можно ввести систему PIN-кодов. Если игрок пытается воспользоваться командой, которая может навредить серверу (тот же бан/мут), то попросить его один раз ввести PIN-код. Я когда-то делал такую защиту на своем сервере, чтобы даже если взломают админов, то никто ничего не сможет сделать серверу.
Система со скриптом довольно сложная, хотя я видел, что она применяется на ряде серверов. В принципе будь это общедоступным - можно было бы использовать, но разработать самому... у меня даже идей нет как это сделать.

А пин коды... а админ пароль не из этого разряда?
 
Система со скриптом довольно сложная, хотя я видел, что она применяется на ряде серверов. В принципе будь это общедоступным - можно было бы использовать, но разработать самому... у меня даже идей нет как это сделать.

А пин коды... а админ пароль не из этого разряда?
У меня в универе одногруппник делал курсовую по анализу Ddos атак. Что-то там у него вышло) Вот эту штуку думаю как-то можно прикрутить и в Minecraft. Главное найти код рабочий.

Админ пароль - да, из этого ряда. Я просто такие плагины не искал, поэтому не сильно в них шарю) Когда свой сервер создавал, то и сделал такой простенький плагин сам на защиту.
 
Важное замечание для всех, кто создавал по данному гайду себе кастомные плейсхолдеры. Блокируйте команду jsexp, jsexpansion и javascriptexpansion! Ни при каких обстоятельствах НИКТО кроме консоли не должен иметь доступа к данной команде!
 
Последнее редактирование:
В догонку добавил информацию про блокировку команд Velocity, а также убрал упоминание AAP, т.к. автор судя по всему забросил разработку, а жаль.
 
необходимость нанимать на сервер STAFF, чтобы они регулярно следили за чатом.
Мне кажется ты скорее о школопомойках каких-то говоришь, где конечно даже элементарного плагина на защиту от рекламы нет, не говоря уж о возможности удалённо следить за ним (Не через консоль). Поигрывал я на одном сервере, название которого я говорить не буду с целях собственной безопасности: Так вот там была возможность этому STAFF'у прямо с сервера в Discord следить за логируемыми действиями игроков, и если что наказывать парой движений. Вот это я понимаю, да - то, к чему надо стремиться. А вот помогать помойкам, оставшимся в 2017 году, с их скачанными сборками, * и опками за 1000 рублей смысла вижу немного.

От массовых банов можно прикрутить какой-то алгоритм, который будет понимать, что если игрок начинает слишком много банить, то ему запрещать делать это на ближайшее время
Вот уж не знаю, зачем тут алгоритм какой-то нужен: Достаточно просто задержку на команду бана прикрутить большую - такое на большинстве серверов сейчас (Или вообще сделать её динамической, чтобы при каждом новом бане задержка становилась больше (Первый бан - минута, к примеру, второй бан уже 10 минут)). Я просто не понимаю, какую касту игроков можно ТАК МНОГО и ТАК ЧАСТО банить, чтобы выдать, ну, там, хотя бы 5 банов за час на одного модератора. Читеров должен банить античит, спамеров антиспам. Будто у каждого тут средний онлайн под сотню, и нарушителей правил (Помимо всяких вычурных уровня оскорблений в чате, за них обычно мутят а не банят) найдётся минимум с десяток. А вообще я бы и право на вечный бан не давал никому.
 
Последнее редактирование:
Так вот там была возможность этому STAFF'у прямо с сервера в Discord следить за логируемыми действиями игроков, и если что наказывать парой движений.
Обычный DiscordSRV, ничего необычного. На самом деле мыслишка то хорошая, но кое-кто не учел 1 момент. STAFF то нужОн не только для чата, но и для (ну допустим) ответов на вопросы игроков, разрешения конфликтов, слежки за действиями игроков (теми же читерами)
А защита от пиара не спасает от слова совсем. На личном опыте убедился как же это не просто заблокать всё что можно. Заблокируешь .ru - они сделают .ру, заблокаешь это - скажут точка ру итд, так что никто кроме живого человека пиар нормально не отследит.

А вот помогать помойкам, оставшимся в 2017 году, с их скачанными сборками, * и опками за 1000 рублей смысла вижу немного.
На их смену пришли тупорылые грифы, а там - их знаменитое качество. И вроде и век не прошлый, а один хер деградация даже по сравнению с теми выживалками.

Я просто не понимаю, какую касту игроков можно ТАК МНОГО и ТАК ЧАСТО банить, чтобы выдать, ну, там, хотя бы 5 банов за час на одного модератора.
К примеру если обнаружилась группа читеров-тимеров. Ну или другие рецедевисты, коих с моими строгими на сервере правилами к примеру может быть больше 3х за раз.

Читеров должен банить античит, спамеров антиспам.
Привет ложным срабатываниям или же иной стороне - неработающему античиту. Не секрет, что нынешние читы без труда обходят большинство русских платных читов, а бесплатные уже подавно. Сделаешь АЧ строгим - пострадают простые игроки. Сделаешь АЧ сильным - даёшь разгул читерам, которым не жаль отдать 500 рублей разрабу чита, нежели покупать у тебя донат.
Про антиспам говорил выше. Нельзя просто так взять и отследить рекламщика, который может вставить в свой текст английские/русские буквы (к примеру беря домен aboba.host тут уже можно сделать тысячи вариаций из сочетаний русских/англ букв, а также не забываем о пробелах, точках и прочих символах, которые могут встать на их место).
 
Про антиспам говорил выше. Нельзя просто так взять и отследить рекламщика, который может вставить в свой текст английские/русские буквы (к примеру беря домен aboba.host тут уже можно сделать тысячи вариаций из сочетаний русских/англ букв, а также не забываем о пробелах, точках и прочих символах, которые могут встать на их место).
Самое время делать нейронку, которая сможет отслеживать эти рекламные штучки 😁

С одной стороны, если игрок сделает вариацию из домена, например добавит русские символы, пробелы и т.д., то этот домен становится не рабочим и врядли игрок захочет переписывать этот домен в поисковик и искать рекламируемый проект... Это мне так кажется. Игрокам нужна сразу готовая ссылка, чтобы скопировать и вставить.
 
надеюсь что разработчики многих плагинов на баны додумались до такой функции
Ага, хер! Только в лайтбанс осталась, а он платный, а щас мы не можем купить ничего со спигота
 
Обычный DiscordSRV, ничего необычного. На самом деле мыслишка то хорошая, но кое-кто не учел 1 момент. STAFF то нужОн не только для чата, но и для (ну допустим) ответов на вопросы игроков, разрешения конфликтов, слежки за действиями игроков (теми же читерами)
А защита от пиара не спасает от слова совсем. На личном опыте убедился как же это не просто заблокать всё что можно. Заблокируешь .ru - они сделают .ру, заблокаешь это - скажут точка ру итд, так что никто кроме живого человека пиар нормально не отследит.
На их смену пришли тупорылые грифы, а там - их знаменитое качество. И вроде и век не прошлый, а один хер деградация даже по сравнению с теми выживалками.
К примеру если обнаружилась группа читеров-тимеров. Ну или другие рецедевисты, коих с моими строгими на сервере правилами к примеру может быть больше 3х за раз.
Привет ложным срабатываниям или же иной стороне - неработающему античиту. Не секрет, что нынешние читы без труда обходят большинство русских платных читов, а бесплатные уже подавно. Сделаешь АЧ строгим - пострадают простые игроки. Сделаешь АЧ сильным - даёшь разгул читерам, которым не жаль отдать 500 рублей разрабу чита, нежели покупать у тебя донат.
Про антиспам говорил выше. Нельзя просто так взять и отследить рекламщика, который может вставить в свой текст английские/русские буквы (к примеру беря домен aboba.host тут уже можно сделать тысячи вариаций из сочетаний русских/англ букв, а также не забываем о пробелах, точках и прочих символах, которые могут встать на их место).
Ну знаешь... на большую часть этого можно ответить просто - а не проще ли просто забить? Выше NuaN правильно подметил, что не каждый удосужится расшифровать что там за домен в рекламе и оперировать им дальше. Нет никакого смысла в такой рекламе... Да и тем более - а что такого плохого в этой рекламе-то? Будто сильно онлайн пострадает... хотя если он и пострадает, то это будет лишь вина администратора - раз уж даже удержать онлайн ему невмоготу. Насчёт слежки за игроками и античитов расскажу одну историю: Был у меня один хороший знакомый, ник его был test. Держал он сервер для одного известного в узких кругах на тот момент форума - держал долго, и на сервер почти никогда не заходил. Так вот хитрость была его в двух вещах: Первая - на сервер доступ был только через лаунчер. Все инжекты в него были отрезаны на корню, никоим образом свой подлый читерский инструментарий встроить было невозможно. А второе - он очень хитро владел логируемыми данными, и даже не заходя на сервер мог понять, что кто-то дюпает или пытается считерить. Консоль, так-то, очень полезная штука. Хотя мне и поныне не до конца известно, как он так искусно владел этой хитростью.
Насчёт тупорылых грифов - всё-таки не понимаю я, зачем стараться ради помоек людей, которым вообще может прийти в голову сборку на сервер поставить? Это же полнейший бред - если человек не может самостоятельно плагины собрать и настроить (А тем более написать), то зачем ему вообще какие-то наставления.
Ну и про STAFF - опять же, а зачем простому помощнику нужна опка и возможность бана? Пусть сидит на вопросы отвечает, в режиме наблюдателя следит за игроками и если что рапортует кому-то, у кого уже есть доступ к консоли. А доступ к консоли, кстати, от аккаунта в игре-то и не зависит. Если нужно забанить кого-то - не обязательно вводить команды бана в чат: Можно просто открыть какой-нибудь RCON (Или панель управления, если сервер не на VDS. Хотя не уверен в существовании хостингов, где есть возможность как на Атерносе выдать отдельно к чему-то доступ), например на втором мониторе, и банить уже оттуда.
 
хостингмайнкрафт какаха, так что можно не переживать по поводу качества рекламируемого сервера
Так весь прикол в том что именно тупые бандерлоги которые тока на сервере 5 плагинов поставили уже бегут к тебе пиариться
 
Последнее редактирование:
Исходный код уязвимости выше для тех, кому лень искать:
https://pastebin.com/bQ05zfrJ

Новый эксплоит на серверах с 1.18.2. Работает на Paper и большинстве форков.

Недофикс - https://www.spigotmc.org/resources/nolecterncrash.101160/
Оперативненько. Один вопрос - почему фикс поддерживает все версии, начиная с 1.7, если кафедру добавили в 1.14?
 
Исходный код уязвимости выше для тех, кому лень искать:
https://pastebin.com/bQ05zfrJ


Оперативненько. Один вопрос - почему фикс поддерживает все версии, начиная с 1.7, если кафедру добавили в 1.14?
я видел плагин который работает с версии 1.7 до 1.12, но для его работы нужна библиотека которая работает только на 1.15 xD
 
Новый эксплоит на серверах с 1.18.2. Работает на Paper и большинстве форков.

Недофикс - https://www.spigotmc.org/resources/nolecterncrash.101160/
unknown.png
 
Назад
Верх Низ