1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем Overwrite, 4 сен 2021.

  1. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    artcart
    Уж сколько раз твердили миру что нужно защищать проект...

    И до сих пор большинство не хотят сделать свой проект более защищенным. Ошибки, которые совершались даже 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. Закроете себе доступ - восстановить никак нельзя.
    Также на ВСЕХ ваших серверах вы будете должны в файлике spigot.yml поставить значение bungeecord на true.


    Расширенный гайд по 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 и копируем данный токен. Затем ставим данный плагин на свои основные сервера, после чего в конфиг вставляем скопированный ранее токен. Готово. Теперь никто не сможет присоединиться на ваш сервер через открытый порт или фейк банжу.

    Пункт 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. Привязка к ВК спасет вас от пробива по базам данных прочих серверов. Даже если они узнают ваш пароль - не зайдут.
    Не ставьте одинаковые пароли на разных серверах.
    Если привязка к вк это не ваше - ставьте в лобби (не авторизации) плагин 2FA или аналоги

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

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

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

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

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

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

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

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

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

    Также, чтобы обезопасить игроков стоит использовать плагин Log4jFix

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

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

    1) Используйте FAWE, если даете донатерам //set. Для чего? Поясняю. WorldEdit стандартный имеет некоторые огрехи и недочеты. К примеру возможность сетать блоки за пределами своего региона или же сетать запрещенными блоками. FAWE данные уязвимости устраняет.
    1.1 - Блокируйте сет ряда блоков. Множество серверов страдали от того, что, ряд сетнутых блоков могли положить сервер. К таким блокам относятся ВСЕ, которые не являются полноценными, по типу редстоуна, а также те, которые обновляются со временем, такие как блок грядки или спавнера.
    2) Не используйте плагин AutoSaveWorld. Взлом FTP через него - дело 2 команд. Просто не используйте. Все его функции есть в ядре.
    3) Если вы используете mycommand, ОБЯЗАТЕЛЬНО изменяйте строку конфига USE_UUID_FOR_PLAYERDATA: на false. UUID-hack все дела. Много кто погорел на этом.
    4) Для фикса ряда интересных эксплоитов, по типу UUID-hack-а использовать советую ExploitFixer.
    Примечание: Настроить его не всегда просто, а будучи не настроенным он может мешать игрокам, имейте это в виду.
    5) Не пренебрегайте плагинами-фиксами, но и не переусердствуйте. Не стоит качать плагины, которые в сущности делают одно и то же. К таким могу отнести PacketBookFix и FiguresFix. FiguresFix в одиночку справляется со всем необходимым.
    6) Если используете PlugMan или его аналоги - запрещайте отгружать важные плагины. Зайдите в конфиг PlugMan и вносите в ignored-plugins всё важное. К таким относятся блокираторы команд, античиты, плагины на разрешения и особенно BungeeGuard.
    8) Не качайте платные плагины с левых источников. Там с вероятностью 99% есть бекдоры!

    Доверять в 95% случаях можно следующим сайтам:
    spigot.org
    dev.bukkit.org
    "Доверяй, но проверяй" относится к следующим сайтам:
    rubukkit.org
    тут должнен был быть и ру-спигот
    black-minecraft.com
    К источникам, с которых вам ТОЧНО не рекомендуется качать плагины (ссылок не будет):
    minesborka - даже не заходите ей богу
    mineleak - я думаю все в курсе

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

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

    Если по какой то причине бофильтр - не ваше, можно дать 2LS AntiBot. Заблокает различную шелуху, предназначенную положить сервер.

    Также помимо BungeeCord есть еще один proxy сервер. Velocity. Он является более производительным аналогом банжи. На него тоже есть ряд анти-бот плагинов. Самая на данный момент эффективная - защита Limbo. Плагин на авторизацию прилагается.

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

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

    Блокировка команд на самом сервере не является важной частью. Можно просто назначить проверку на право на их использование в описанных выше плагинах, но на всякий случай обмолвиться стоит.
    Для блокировки команд с : как обычно используем BlockSyntax.
    Для блокировки обычных команд на сервере используются за частую 2 следующих плагина:
    NoCheatPlus и AntiCmds.
    У каждого из них есть определенные недостатки о которых стоит рассказать.
    Недостатки NoCheatPlus:
    1) Не блокирует синтаксис в ряде плагинов, как PlugMan или Citizens. Таким образом приходится блокировать их вместе с синтаксисом, а в некоторых случаях и это не спасает
    Недостатки AntiCmds:
    1) Не блокирует алиасы команд, прописанные в plugin.yml. Вам придется указывать их все, если захотите заблокировать.
    2) Автоматически де-опает игрока, написавшего команду из списка запрещенных. Для меня это было жестким минусом.

    Выбирайте что из этого использовать сами, я же расскажу, какие команды стоит заблокировать:
    - op
    - deop
    - sudo и алиасы (выполнение команд от имени игрока, Essentials)
    - execute (то же что и sudo, только можно и от имени прочих ентити)
    - packet (ProtocolLib)
    - ncp delay (выполнение команд от имени консоли)
    - mycmd-runas (выполнение команд от консоли,MyCommand)
    - npc create (Citizens)
    - npc cmd (добавляет НПС команду,Citizens)
    - npc cmdadd (добавляет НПС команду,Citizens)
    - npc addcmd (добавляет НПС команду,Citizens)
    - npcmd (CitizensCMD)
    - holograms create и алиасы (HolographicDisplays)
    - region redefine (пересоздает уже созданный регион,WorldGuard)
    - brush cmd и алиасы команды brush
    - brush command (позволяет выполнять команды от консоли,WorldEdit, FAWE)
    - brush scmd (позволяет выполнять команды от консоли, но не так как brush command, WorldEdit,FAWE)

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

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

    В сущности тут я описал всё, что можно. Главное, чтобы у вас самих была голова на плечах и вы понимали, что делаете.
     
    Последнее редактирование: 16 янв 2022 в 07:13
  2. Быстрая раскрутка сервера Minecraft
  3. yellowakyloff

    yellowakyloff Новичок Пользователь

    Баллы:
    21
  4. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Неплохо, но много недосказанности, да структура хромает.
    Порты должны быть одним пунктом, рут отдельно. "Зачем закрывать порты?" - вполне логичный вопрос для новичка; следует немного рассказать про UUID-спуфинг. Плюс следует упомянуть, что этот пункт бесполезен при отсуствии прокси-сервера (а также посоветовать использовать таковой). Алсо, если ставить Velocity и настроить его, BungeeGuard не понадобится - там есть такая же фича секретного ключа.
    Объяснений новичк также требует создание дополнительного юзера.
    Хочу упомянуть, что одним из лучших вариантов защиты аккаунтов будет использование лицензии, а там уже защитой аккаунта займется Microsoft. Да, я знаю - мы в СНГ, и абсолютное большинство здесь под черным флагом Весёлого Роджера, но, на мой взгляд, достойно упоминания.
    Самый важный совет - обновляться. Хост, сервер, плагины. Обновления очень важны для безопасности всей системы, и игнорирование этого - в какой-то мере грешно. Большинство проблем пункта, как можно заметить, можно решить именно этим.
    Ну, и пароли как можно строже. Часто проблема именно в этом.
    Акстись.
    Уже давно просто Paper.
    Стоит упомянуть сетап Velocity+какой-нибудь антибот.
    Стоит упомянуть, что "правые" источники - https://dev.bukkit.org/, https://spigotmc.org/, и в ближайший год появится вариант от papermc (вероятно будет https://hangar.papermc.io/ или вроде того). В какой-то мере mc-market, но там сплошной оверпрайс за мусор (не без исключений, конечно).
     
  5. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    artcart
    Дополню :good:
    Но насчет того что такое UUID-spoof говорить стремно, еще сами попробуют. (хотя пофиг)
     
    Последнее редактирование: 4 сен 2021
  6. Gru2303

    Gru2303 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Gru2303
    Одно не понятно почему не рекомендуется запускать сервер от рут?
     
  7. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    artcart
    Если ВДРУГ каким-то образом ты скачаешь вредоносный плуг, у него не будет возможности проникнуть глубже, чем в юзера.
    Проникновение в рута ни к чему хорошему не ведет.
     
  8. Demrenus

    Demrenus Новичок Пользователь

    Баллы:
    21
    Вообще никогда не надо запускать программы с рут, небезопасно, и это не только к майнкрафту относится.
    Я бы посоветовал подобные плагины не использовать вообще, а по человеческому рестартать сервер
     
  9. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    artcart
    Рестартать сервер не всегда удобно, когда у тебя 100 онлайн. Вернутся 70. А если надо делать что-то быстро - самое то. Главное заблокать отгрузку полезных плагинов
     
  10. Npc093

    Npc093 Новичок

    Баллы:
    16
    Вот всё решает
    https://www.spigotmc.org/resources/two-factor-authentication.85594/ (Ставить на HUB )
    А не ваш вконтакте..
    Кто там еще сидит в том ВК?
     
  11. Demrenus

    Demrenus Новичок Пользователь

    Баллы:
    21
    Может быть, но все равно небезопасно это, по крайней мере для меня. Вместо этого лучше сделать авторестарт в 12 ночи со всеми нужными фиксами и плагинами, а еще лучше - проверять все на тест сервере
    97 млн человек
     
  12. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    artcart
    Гугловская 2фашка... ну можно. Видал. Не вставил в гайд, пушто она не особо удобная. Проще уже тогда использовать ряд платных плагинов на авторизацию в GUI меню
     
  13. Npc093

    Npc093 Новичок

    Баллы:
    16
    Здесь не об удобствах говорят. А о защите акка. И да стати можно чисто на Адм Акк этот право кинуть и все.
    Типа об узера не смогут поставить. А вот Админ себе кинул и все.
     
  14. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    artcart
    Для этого у меня уже припасен UltimateServerProtector. Тут тоже не имеющий пасса войти не сможет
     
  15. Methodikal

    Methodikal Активный участник

    Баллы:
    61
    Имя в Minecraft:
    Methodikal
    В USP устанавливается определенный пароль, что не совсем безопасно, когда как гугл каждый раз генерирует новый.
     
  16. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    artcart
    Тоже верно. Я бы сюда еще 1 плагин на это всунул но он работает только с вк

    Хотя думаю прямо сейчас засуну туда предложения.
     
    Последнее редактирование: 5 сен 2021
  17. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Зачем гугл, когда 2fa реализован прям в authme?
     
  18. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    artcart
    Аучми щас уступает 1 другому интересному плагину. LoginSecurity, в котором такого нема
     
  19. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    А чем уступает то?
     
  20. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    artcart
    Ну типа позициями. Не так часто теперь ауч ставят
     
  21. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    А что-нибудь более существенное?
     

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