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

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

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

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

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

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

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

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

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

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

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

    sudo apt install ufw (sudo не обязательно)

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

    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 - плагин, генерирующий уникальный админ-пароль при каждом входе игрока на сервер и отправляет ему вам в ВК. Можно настроить права на проверку.

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

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

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

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

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

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

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

    1) Какое ядро лучше? Лучшее ядро на данный момент как для новых так и для старых версий - Paper (PaperSpigot). Стабильный, надежный, быстро исправляет свои косяки, если такие находятся.
    2) Как фиксить краш тенями? Краш тенями зафиксить можно используя ядро Papaya - форк пейпера. Также в файле paper.yml стоит поставить queue-light-updates: true. Если держите сервер на 1.8 - FlamePaper для вас. На версиях 1.13+ это исправлено.
    3) Как фиксить краш раздатчиками? Краш раздатчиками фиксится рядом плагинов. Можете юзать этот. Данный баг тоже исправлен в 1.13+ версиях.
    4) Крашат сервер какой-то командой и автокомплитом, что делать? Обновите свой плагин FAWE. В новой версии данный баг пофикшен.
    5) Крашат сервер командой /mv, как починить? Отнимите у игрока право multiverse.help, либо просто заблокируйте эту команду. В новых версиях плагина должен выйти фикс.
    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.
    7) По некоторой инфе Force-Op можно осуществить, если на сервере включены командные блоки, по этому проверьте, отключены ли они у вас. server.properties - строка enable-command-block должно быть false.
    8) Не качайте популярные платные плагины с левых источников. Там с вероятностью 99% есть бекдоры!

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

    minesborka - даже не заходите ей богу
    mineleak - забудьте о сливах от студий
    blackspigot - тут без слов понятно

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

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

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

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

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

    Блокировка команд bungee:
    Для блокировки команд на bungeecord нужно включить их в раздел disabled_commands: в конфиге банжикорда
    Команды которые СТОИТ заблокировать:
    - server
    - alert
    - greload
    - list
    - 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 scattercommand
    - brush scmd (позволяет выполнять команды от консоли, но не так как brush command, WorldEdit, FastAsyncWorlEdit)
    - wea (позволяет совершать любые действия worldedit-а,FastAsyncWorlEdit)

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

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

    В сущности тут я описал всё, что можно. Главное, чтобы у вас самих была голова на плечах и вы понимали, что делаете.
     
    Последнее редактирование: 2 дек 2021 в 19:21
  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 Новичок Пользователь

    Баллы:
    11
    Вообще никогда не надо запускать программы с рут, небезопасно, и это не только к майнкрафту относится.
    Я бы посоветовал подобные плагины не использовать вообще, а по человеческому рестартать сервер
     
  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 Новичок Пользователь

    Баллы:
    11
    Может быть, но все равно небезопасно это, по крайней мере для меня. Вместо этого лучше сделать авторестарт в 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
    А что-нибудь более существенное?
     

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