RE:NODE

Безопасность и приватность сервера Valheim: как его закрыть

Автор Команда RE:NODE
10 мин чтения


Сервер Valheim для группы друзей защищают четыре вещи: -public 0, чтобы он не рекламировался, пароль, не содержащий ни одного слова из названия сервера, список разрешённых в permittedlist.txt, чтобы заходили только названные игроки, и как можно меньше администраторов. Это закрывает почти все реальные проблемы небольшого сервера: посторонних, гриферов и пароль, утёкший не в тот Discord. Всё остальное - ваш IP-адрес, моды, исполняющие код, аккаунт панели, управляющий сервером, и флуд - важнее по мере того, как сервер растёт и становится публичнее. Собственные инструменты Valheim просты, и совет здесь в основном в том, чтобы использовать их все вместе, а не полагаться на один.

От чего вы на самом деле защищаетесь#

Стоит честно оценить угрозы, потому что реальные меньше и обыденнее тех, которых обычно боятся.

УгрозаНасколько вероятна для сервера друзейЧто её останавливает
Посторонний находит мир и заходитУмеренно, если сервер в спискеПароль, список разрешённых, -public 0
Пароль слишком широко разошёлсяВысоко со временемСписок разрешённых, смена пароля
Игрок грифит или воруетОт низкой до умереннойОбереги, список банов, бэкапы
Админ злоупотребляет правамиНизкаяМеньше админов, бэкапы
Мод содержит вредоносный кодНизкая, но серьёзнаяТолько доверенные источники
Кто-то захватывает аккаунт хостингаНизкая, но полная2FA, отдельные учётные записи
Флуд выводит сервер из строяНизкая, если нет публичности или личной враждыСеть хостинга, а не ваш конфиг

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

Публичный или приватный: -public и список сообществ#

-public 1 вносит сервер в браузер сообществ внутри игры; -public 0 скрывает его. Скрыть сервер - первый шаг для любой закрытой группы: сервер в списке видят все, кто листает его, а короткий или очевидный пароль рано или поздно подберут.

Что -public 0 делает и чего не делает:

  • Он убирает сервер из списка сообществ, так что случайные посетители его не видят.
  • Он не мешает зайти по IP тому, кто знает адрес. Скрытый сервер - не закрытый.
  • Он не мешает серверу отвечать на запросы Steam на порту запросов. Инструменты, сканирующие адреса, всё равно могут его обнаружить.
  • На crossplay-сервере игроки с актуальным кодом подключения всё равно могут зайти. Код меняется при каждом перезапуске, что помогает, но он есть у любого в вашем групповом чате.

Так что считайте -public 0 способом уменьшить шум, а не контролем доступа. Контроль доступа - это пароль и список разрешённых. Связанные параметры с их значениями по умолчанию перечислены в статье параметры запуска Valheim.

Гигиена паролей#

У пароля сервера Valheim два правила, оба проверяются при запуске: он должен быть не короче пяти символов и не должен содержать название сервера (и не должен иметь общих слов с названием мира). Сервер, нарушающий любое из них, не запускается, а причину в логе легко пропустить. Крайние случаи разобраны в статье правила пароля сервера.

Помимо правил:

  1. Делайте его длинным и не связанным ни с чем. Три случайных слова с числом легко набрать на геймпаде и трудно угадать. Не используйте пароль от чего-то другого: он известен всем игрокам, и никто не считает его секретом.
  2. Сообщайте его в одном месте. Закреплённое сообщение в закрытом канале Discord, а не в публичном и не в названии или описании сервера.
  3. Меняйте его, когда люди уходят. Пароль - групповой секрет. Если кто-то ушёл со скандалом или пароль всплыл там, где не должен, смените его и сообщите оставшимся игрокам.
  4. Не полагайтесь только на него. Пароли расходятся. Друг делится с другом, тот - со стримом. У списка разрешённых такой проблемы нет.

Смена пароля означает изменение параметра запуска и перезапуск. На панельном хостинге это поле пароля на вкладке Startup; на собственной машине - скрипт запуска. Игроки получат запрос нового пароля при следующем входе.

bash
# Before-name "Longship Crew" -world "Midgard" -password "herring-barrel-42" -public 0# After a leak: new password, restart the server-name "Longship Crew" -world "Midgard" -password "salted-cod-1187" -public 0

Список разрешённых, список банов и список админов#

В каталоге сохранений у Valheim три текстовых файла: adminlist.txt, bannedlist.txt и permittedlist.txt. В каждом хранятся идентификаторы игроков, по одному в строке. Сервер перечитывает их во время работы, поэтому большинство изменений не требуют перезапуска.

`permittedlist.txt` - самый сильный инструмент из имеющихся. Если в нём есть хотя бы один идентификатор, зайти могут только эти игроки; всем остальным отказывают даже с правильным паролем. Для сервера друзей именно эта настройка делает утёкший пароль безвредным.

permittedlist.txt
// Steam-only server: SteamID647656119801234567876561198087654321// Crossplay server: platform-prefixed IDsSteam_76561198012345678Xbox_2535412345678901

На чём часто попадаются:

  • Формат идентификатора зависит от crossplay. Сервер только для Steam использует обычный 17-значный SteamID64. Crossplay-сервер использует идентификаторы с префиксом платформы. Список, написанный для одного, не работает для другого.
  • Берите идентификаторы из лога. Пусть каждый игрок зайдёт один раз (до включения списка разрешённых) и скопируйте его идентификатор из лога сервера, где он появляется именно в том виде, который ждёт сервер.
  • Новых игроков нужно добавить заранее. Когда список включён, приглашённому другу отказывают, пока вы его не добавите. В этом и смысл, но предупредите его, иначе он решит, что сервер сломан.

bannedlist.txt нужен для удаления конкретного человека. Администратор может выполнить ban игрока прямо в игре, что добавляет его в файл; бан по идентификатору надёжнее, чем по имени. При наличии списка разрешённых список банов менее важен, потому что игроки вне списка и так не зайдут, но это по-прежнему способ убрать того, кто в списке есть.

adminlist.txt выдаёт права администратора: выгонять, банить, принудительно сохранять. Ограничьте его одним-двумя людьми. Администратор на чистом сервере не может создавать предметы или летать, но мод вроде ServerDevcommands расширяет возможности админов, и тогда права администратора становятся гораздо более серьёзным даром. Все детали формата описаны в статье три файла списков.

Ваш IP-адрес и что он раскрывает#

Каждый игрок, подключающийся к серверу напрямую, узнаёт его IP-адрес. Для арендованного сервера это адрес хостинга, и он никому ничего личного не говорит. Для сервера, размещённого дома, из игры или выделенного, это адрес вашего дома.

IP-адрес раскрывает в основном примерное местоположение, часто только до города или региона, и провайдера. Доступа к вашим устройствам он не даёт. Реальный риск - не взлом, а отключение: человек с претензиями и вашим домашним адресом может устроить флуд и оставить без интернета весь ваш дом. Ваш роутер этого не остановит, и провайдер, возможно, тоже.

Если вы хостите дома:

  • Держите сервер приватным и со списком разрешённых, чтобы адрес узнавали только знакомые вам люди.
  • Не публикуйте адрес. Если хотите что-то удобнее для ввода, игроки могут заходить по доменному имени - это описано в статье подключение домена к игровому серверу, хотя имя не скрывает адрес за собой.
  • Рассмотрите crossplay-коды подключения для игроков, которых вы знаете не очень хорошо. Их трафик идёт через relay, а не прямо к вам, но считайте это удобством, а не гарантией приватности.

Запуск чего-либо публичного из дома - момент, когда аренда сервера становится решением не только о производительности, но и о приватности. Подробнее - в статьях утечки IP и доксинг для владельцев серверов и домашний хостинг или арендованный сервер Valheim.

Реалии DDoS для небольших серверов#

Небольшой сервер Valheim атакуют редко. Флуд чего-то стоит атакующему, и никто не платит, чтобы уронить мир на десять игроков, если у него нет причины. На практике причины личные: забаненный игрок, ссора, конкурирующее сообщество. Поэтому приватные серверы со списком разрешённых атакуют так редко, а публичные с большим сообществом - чаще.

Что помогает, в порядке ценности:

  1. Не хостить публичный сервер дома. Флуд против домашнего подключения роняет всё в доме.
  2. Быть труднонаходимым. -public 0, никаких адресов в публичных каналах, небольшая группа.
  3. Хостинг, фильтрующий на границе сети. Никакая настройка самого игрового сервера не поглотит флуд; его нужно отбросить до того, как он дойдёт.
  4. Перезапуски, после которых всё чисто восстанавливается. Когда атака заканчивается, сервер должен вернуться сам, с неповреждённым миром.

Будьте осторожны с абсолютными обещаниями. Хостинг, заявляющий, что никакая атака никогда не выведет вас из строя, преувеличивает то, что вообще возможно. На RE:NODE формулировка точная: фильтрация на входе, отбрасывающая очевидные объёмные флуды, а также отражённый и некорректный трафик. Атаки, похожие на настоящих игроков, не фильтруются. Подробности - в статьях DDoS-атаки на игровые серверы: объяснение и что мы делаем с атаками.

Моды - это код: относитесь к ним так#

Моды BepInEx - это файлы .dll, работающие с теми же правами, что и процесс сервера. Вредоносный мод может читать файлы, открывать соединения и делать всё, что может пользователь сервера. На домашней машине это ваша машина. В арендованном контейнере ущерб ограничен этим сервером, но мод всё равно может повредить мир или утечь всё, что есть в его файлах.

Разумные привычки:

  • Устанавливайте с Thunderstore или со страницы автора. Избегайте перезалитых версий из случайных каналов Discord и "исправленных" версий от незнакомых людей.
  • Предпочитайте известные моды с активными авторами. Популярность - не доказательство безопасности, но мод, которым пользуются тысячи и у которого есть публичный репозиторий, несёт другой риск, чем мод без истории.
  • Не запускайте сервер от имени администратора или root на своей машине. Отдельный пользователь с доступом только к папке сервера ограничивает ущерб.
  • Делайте бэкап перед добавлением чего-либо. Если мод испортит мир, исправит ситуацию бэкап.

Что обычно делают плохие моды и как их заметить - в статье вредоносные плагины и моды.

Аккаунт, который управляет сервером#

На арендованном сервере тот, кто входит в панель хостинга, может остановить сервер, скачать мир, сменить пароль и удалить всё. Этот вход важнее любой внутриигровой настройки.

  • Включите двухфакторную аутентификацию. Приложение-аутентификатор на аккаунте панели не даёт повторно использованному паролю быть достаточным. Храните резервные коды в надёжном месте. Настройка описана в статье двухфакторная аутентификация в аккаунте панели.
  • Давайте соадминистраторам отдельный доступ. Не делитесь своим логином. На RE:NODE субпользователям можно выдать только то, что им нужно - только консоль или только файлы, без доступа к оплате, - доступ можно ограничить по времени, а действия записываются в журнал активности каждого сервера. Подход описан в статье субпользователи и принцип минимальных привилегий.
  • Храните бэкапы вне машины. Бэкапы RE:NODE хранятся вне машины, которую защищают, и могут быть заблокированы от ротации, так что неудачный день не перезапишет последнюю хорошую копию. Учтите, что удаление сервера удаляет и его бэкапы, в том числе заблокированные, поэтому скачайте один, прежде чем что-то удалять.

Грифинг внутри мира - отдельная проблема. Обереги останавливают многое на PvE-серверах, а бэкапы исправляют остальное; что обереги предотвращают, а что нет, описано в статье обереги и грифинг.

FAQ#

Приватный ли сервер Valheim с -public 0?

Он скрыт, но не приватен. Он больше не появляется в списке сообществ, но любой, кто знает адрес, всё равно может попробовать зайти по IP. Сочетайте его с паролем и списком разрешённых в permittedlist.txt, чтобы сервер действительно был закрытым.

Заменяет ли список разрешённых пароль?

Нет, действуют оба. Игрок должен быть в списке разрешённых и знать пароль. Всё равно оставьте пароль - он всё ещё защищает сервер в тот день, когда кто-то по ошибке опустошит список, - но именно список разрешённых делает утёкший пароль безвредным.

Могут ли игроки увидеть мой IP-адрес, если я размещаю Valheim дома?

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

Стоит ли беспокоиться о DDoS-атаках на небольшой сервер Valheim?

Обычно нет. Небольшие приватные серверы атакуют редко, а когда атакуют, это почти всегда кто-то с личной обидой. Приватный сервер, отказ от публичного сервера дома и хостинг, фильтрующий флуд на входе, закрывают реальные случаи.

Как убрать игрока, который знает пароль?

Забаньте его по идентификатору командой ban или добавьте его идентификатор в bannedlist.txt, уберите его из permittedlist.txt, если пользуетесь им, и смените пароль, если он может им поделиться. Файлы списков перечитываются, пока сервер работает.