Привет, Habr!
Недавно я решил заново поиграть в Minecraft. Устроив компанию, мы решили изучать игру вместе на личном сервере. Однако, не всё пошло гладко.

Что произошло
Первый день был замечательным. Мы построили домик у реки, посадили пшеницу и завели коров. Всё выглядело как дома, пока сервер не был замечен грифером. Они вошли под моим персонажем, начали все разрушать и заспамили чат ссылками на их Discord. К счастью, я успел отключить сервер, и наш мир остался целым.
Я был удивлён, что кто-то нашёл наш сервер, ведь я не распространял его адрес. Оказалось, нас нашли с помощью сканера серверов.
Сканер серверов
Если вы запускаете сервер Minecraft, особенно с отключенной проверкой лицензий (online-mode=false
), стоит быть в курсе сканеров серверов.
Сканеры — это специализированные скрипты или боты, которые автоматически перебирают IP-адреса и открытые порты в интернете в поисках доступных серверов Minecraft. Как только они находят сервер, особенно без авторизации, его адрес может попасть в общедоступные базы данных, Telegram-каналы или Discord-чаты с гриферами.
Именно это и случилось с нашим сервером. Далее расскажу, как защититься от таких атак.
Настройки для защиты от незваных гостей
Этот метод подходит для сервера без проверки лицензий (online-mode=false
) и с открытым доступом из сети.
Вот список конфигураций для защиты от сканеров, а затем я подробнее объясню каждую:
-
Изменение стандартного порта сервера
-
Введение white-list
-
Отключение отображения списка игроков
-
Настройка плагина авторизации AuthMe
Изменение стандартного порта сервера
Чтобы скрыться от сканеров, которые проверяют только стандартный порт, в файле server.properties
нужно сменить порт 25565
на другой.
Введение white-list
Необходимо установить white-list=true
в файле настроек server.properties
.
Затем добавьте игроков, с которыми вы хотите играть, в белый список с помощью команды whitelist add НИК_ИГРОКА
.
Важно! Эта настройка не защитит от входа злоумышленников, если отключена проверка лицензий (установлен online-mode=false
), поскольку любой может зайти под любым ником. В разделе настройки плагина AuthMe будет объяснена защита от этой проблемы.
Отключение отображения имен игроков
По умолчанию сервер показывает информацию о логинах игроков, присутствующих на сервере. Это может позволить злоумышленникам узнать ники из white-list
. Чтобы усложнить им задачу, установите hide-online-players=true
в файле server.properties
.
Проверьте, работает ли настройка, через сервисы мониторинга серверов. Я использовал https://mcstatus.io/


Настройка плагина авторизации AuthMe
Уязвимость серверов без проверки лицензий заключается в том, что любой может зайти под любым ником. Так грифер и смог войти под моим именем, что выкинуло меня из игры.
Для защиты ников без лицензий можно использовать плагины для авторизации. Для нашего сервера был выбран плагин AuthMe.
Для добавления плагина скачайте его по ссылке и разместите в папке plugins. Запустите сервер, чтобы был создан конфиг config.yml
. Внесите следующие настройки:
# Другие настройки скрыты
settings:
restrictions:
# Могут ли пользователи использовать чат до авторизации?
# Если false, то до авторизации будут доступны только команды из списка ниже
allowChat: false
# Разрешенные команды для неавторизованных игроков
allowCommands:
– /login
# Запрещает заходить на сервер с занятым ником
ForceSingleSession: true
# Кик при вводе неправильного пароля
kickOnWrongPassword: true
# Могут ли игроки двигаться до ввода пароля?
allowMovement: false
# Время на ввод пароля до кика
timeout: 30
# Защита инвентаря до ввода пароля
ProtectInventoryBeforeLogIn: true
security:
registration:
# Отключение регистрации
enabled: false
Теперь зарегистрируйте игроков через консоль сервера с помощью команды:
authme register test_name test_password

Теперь сервер защищен. Даже если злоумышленники найдут сервер и угадают логин в white-list
, их остановит плагин. Игрок не сможет выполнять действия, пока не введет /login `пароль от аккаунта в плагине`
.
Кроме того, теперь нельзя зайти под ником, который уже занят другим игроком. Плагин сообщит об ошибке.

Теперь в логах сервера будет фиксироваться информация о попытках подключения. Я установил AuthMe до смены порта и увидел логи с попытками от сканера. После смены порта, сканеры пока не возвращались.

Заключение
Если вы запускаете сервер Minecraft с сетью, важно понимать, что он уязвим для атак. Даже если вы не делитесь IP-адресом, его всё равно могут обнаружить сканеры. К счастью, простые меры могут эффективно защитить от атак.
Теперь наш сервер снова стал уютным и безопасным местом для игры. Эти настройки помогли защитить мой сервер, и я надеюсь, что эта статья убережет вас от нежелательных сюрпризов.
Приятной игры!