Безопасность

Чек-лист для укрепления сервера Antimatter: что открывать, какие лимиты и настройки конфиденциальности проверить, с какими внешними сервисами взаимодействует сервер и как сообщить о проблеме безопасности.

Что открывать

ПортСлужбаДоступность
443/tcp, 443/udp, 80/tcpВаш HTTPS-прокси (Caddy или nginx)Публичный: так пользователи получают доступ к Antimatter.
8443/udp и 8443/tcpМедиа для звонковПубличный, если звонки используются извне вашей сети.
8065/tcpВеб-сервер AntimatterТолько для прокси: опубликуйте его на 127.0.0.1 (HTTP_PORT=127.0.0.1:8065).
8067/tcpМетрикиТолько в закрытой сети, если включено. Без входа.
8074/tcp и udpGossip-протокол кластераТолько между узлами кластера.
5432, 9000, 8080, 8066PostgreSQL, файловое хранилище, GIF-сервис, push-проксиНикогда. Файлы compose оставляют их на внутренних сетях без опубликованных портов.

Файл compose сайта также запускает каждый контейнер с no-new-privileges, запускает Antimatter от непривилегированного пользователя на образе distroless, а GIF-сервис — с файловой системой только для чтения. База данных, хранилище и GIF-сервис находятся в сети без доступа в Интернет.

Чек-лист после установки

  1. Создайте первую учетную запись администратора до того, как кто-либо сможет получить доступ к серверу (Установка).
  2. Предоставляйте Antimatter только по HTTPS и установите URL сайта на адрес https:// (Домен и HTTPS).
  3. Обеспечьте, чтобы файлы .env, config.json и TLS-ключи были доступны только для чтения root (или пользователем сервера): chmod 600 .env.
  4. Определите, кто может создавать аккаунты. Оставьте Открытый сервер выключенным, если сообщество не является публичным, и включите Требовать подтверждение адреса электронной почты, когда почта заработает (Вход и аккаунты).
  5. Включите многофакторную аутентификацию и, как минимум, принудительно применяйте ее для учетных записей администраторов, либо используйте ее в вашем поставщике идентификации.
  6. Проверьте внешние соединения ниже, в частности STUN-сервер, который по умолчанию используется для звонков.
  7. Перед добавлением подключений к моделям задайте ключ шифрования ИИ (AM_AI_ENCRYPTION_KEY) и храните его копию отдельно от резервных копий базы данных (ИИ).
  8. Сделайте резервную копию и протестируйте восстановление (Резервные копии и обновления).
  9. Держите образы или пакеты в актуальном состоянии: исправления уязвимостей приходят с новыми версиями.

Ограничение частоты запросов

Сервер может ограничивать количество запросов к API, которые делает каждый клиент. По умолчанию эта функция выключена. В Системная консоль › Окружение › Ограничение скорости:

ПараметрКлючЗначение по умолчанию
Включить ограничение скоростиRateLimitSettings.Enableвыключено
Максимальное количество запросов в секундуRateLimitSettings.PerSec10
Максимальное превышение размера пакетаRateLimitSettings.MaxBurst100
Размер хранилища памятиRateLimitSettings.MemoryStoreSize10000 отслеживаемых клиентов
Изменять ограничение скорости по удаленному адресуRateLimitSettings.VaryByRemoteAddrвкл
Изменение ограничения скорости пользователяRateLimitSettings.VaryByUserвыключено
Изменять ограничение скорости по HTTP заголовкуRateLimitSettings.VaryByHeaderпусто

За прокси-сервером ограничения по адресу работают только в том случае, если сервер знает адрес каждого клиента (ServiceSettings.TrustedProxyIPHeader и ServiceSettings.TrustedProxyIPs, см. Адреса клиентов за прокси). Иначе все запросы выглядят как исходящие от прокси, и все пользователи делят один лимит. То же самое касается фильтрации по IP и адресов в журналах аудита.

Попытки входа ограничиваются отдельно: Максимальное количество попыток входа (10) блокирует аккаунт после такого количества неудачных попыток ввода пароля.

Фильтрация по IP

Системная консоль › Настройки сайта › IP-фильтрация ограничивает доступ к серверу по IP-адресу с помощью правил разрешения и запрета (адрес или диапазон CIDR). Если Включить фильтрацию IP-адресов включено, пользователи, чей адрес соответствует правилу запрета, или которым не соответствует ни одно правило разрешения (если такие правила есть), не могут получить доступ к серверу. Страница отклоняет правила, которые блокируют ваш собственный адрес. Если вы используете прокси, сначала настройте адреса клиентов (Адреса клиентов за прокси), иначе все запросы будут казаться исходящими от прокси.

Загрузка и обмен файлами

ПараметрГдеЗначение по умолчанию
Максимальный размер файла (FileSettings.MaxFileSize)Environment › File Storage100 МБ. Убедитесь, что лимит размера запросов прокси-сервера не меньше этого значения.
Максимальный размер полезной нагрузки (байты) (ServiceSettings.MaximumPayloadSizeBytes)Environment › Web Server300000: максимальный размер запроса к API, за исключением загрузки файлов
Разрешить общий доступ к файлам (FileSettings.EnableFileAttachments)Site Configuration › File Sharing and Downloadsвкл
Разрешить загрузку файлов на телефонах, Разрешить скачивать файлы на мобильныхSite Configuration › File Sharing and Downloadsвкл
Включить публичные ссылки на файлы (FileSettings.EnablePublicLink)Site Configuration › Public Linksвыключено: при включении пользователи могут делиться файлом по ссылке, которая работает без входа в систему
Включить SVG (ServiceSettings.EnableSVGs)Site Configuration › Postsвыключено на новом сервере: при включении изображения SVG отображаются в тексте

Antimatter не сканирует загруженные файлы на наличие вредоносного ПО.

Параметры конфиденциальности

В Системная консоль › Настройки сайта › Пользователи и команды:

ПараметрКлючЗначение по умолчаниюНазначение
Показать EmailPrivacySettings.ShowEmailAddressвклВыкл. Адреса электронной почты участников скрыты от всех, кроме администраторов. Отключите этот параметр на публичных серверах.
Показать полное имяPrivacySettings.ShowFullNameвклВыкл. Полные имена скрыты, вместо них отображаются имена пользователей.
Включить игнорирование, блокировку и запросы сообщенийPrivacySettings.EnableUserBlockingвклСм. ниже.
Разрешить пользователям писать личные сообщения сTeamSettings.RestrictDirectMessageЛюбым пользователем на сервере AntimatterИли Все участники команды: только те, кто принадлежит к одному сообществу.

Игнорирование, блокировка и запросы на сообщения

Если Включить игнорирование, блокировку и запросы сообщений включено (по умолчанию), пользователи могут игнорировать и блокировать друг друга, а также могут настроить получение личных сообщений от незнакомых людей в виде запросов, которые не отправляют уведомлений до их принятия. Это подходит для публичных сообществ. На рабочем месте, где коллеги должны всегда иметь возможность связаться друг с другом, отключите эту функцию (AM_PRIVACYSETTINGS_ENABLEUSERBLOCKING=false): ни одно из этих правил больше не будет применяться, но списки и сделанные пользователем выбор сохранятся и снова вступят в силу, если вы включите функцию обратно.

Сессии и токены

  • Длительность сессий и тайм-аут бездействия: см. Вход и учетные записи. Более короткие сессии означают, что украденный ноутбук или телефон останется в состоянии входа меньшее время.
  • Включить Персональные токены доступа (ServiceSettings.EnableUserAccessTokens, выключено) позволяет пользователям создавать токены API; Максимальный срок действия персонального токена доступа (дней) ограничивает их срок действия. Обе настройки находятся в Системная консоль › Интеграции › Управление интеграцией.
  • Чтобы разом завершить все сеансы, например после предполагаемого нарушения безопасности: Сбросить все сеансы в Системная консоль › Управление пользователями › Пользователи.

Соединения с внешними службами

Antimatter не связывается ни с одной службой, управляемой Mattermost, Inc. Он не отправляет телеметрию, отчеты об ошибках или запросы проверки обновлений безопасности, а также не получает уведомления о продукте. Конфигурация, перенесенная из Mattermost, которая все еще содержит ссылки на службы Mattermost (службы push-уведомлений, маркетплейс приложений, уведомления или STUN-сервер для звонков), не приводит к тому, что сервер будет с ними связываться: эти адреса игнорируются.

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

ФункцияСвязиПо умолчанию
Звонки: поиск публичных адресов с помощью STUN. Сервер и каждый участник звонка отправляют запрос, который показывает STUN-серверу их IP-адрес и порт.Публичный STUN-сервер Cloudflare, stun.cloudflare.comвключён, если приложение «Звонки» активно. Чтобы изменить это, см. Звонки.
Предпросмотр ссылок: сервер запрашивает страницы, на которые ссылаются сообщения (Включить предпросмотр веб-ссылок, ServiceSettings.EnableLinkPreviews)веб-сайты, на которые ссылаются пользователивключён. Отключите с помощью AM_SERVICESETTINGS_ENABLELINKPREVIEWS=false.
Push-уведомления в мобильное приложениеваш собственный push-прокси (Push-уведомления)выключен, пока вы не укажете его адрес
Удалённый маркетплейс приложений (PluginSettings.EnableRemoteMarketplace)указанный вами URL магазина плагиноввыключен, адрес не задан
Электронная почтаваш SMTP-серверпо умолчанию используется сервер localhost
Подключения к моделям (переписывание, краткие изложения, перевод, озвучивание и приложения), собственные подключения к моделям администраторов сообществпровайдеры ИИ, добавленные в Системная консоль › ИИ › Подключения к моделям или в настройках сообщества (ИИ)пока никто не добавит
Единый вход, службы ИИ приложения «Агенты», распознавание речи и перевод, исходящие вебхуки, а также приложения, такие как Почта, Календарь, GitHub, GitLab или Jiraуслуги, которые вы настроитевыключены, пока вы их не настроите

По умолчанию сервер отказывается устанавливать соединения с внутренними и loopback-адресами для этих целей (предпросмотр ссылок, вебхуки, приложения, подключения к моделям сообществ), чтобы сообщение или интеграция не могли быть использованы для доступа к вашей внутренней сети. Перечислите внутренние хосты, к которым разрешено подключение, в Разрешить недоверенные внутренние соединения для (ServiceSettings.AllowedUntrustedInternalConnections, в Системная консоль › Окружение › Разработчик); в compose-файле сайта там указан gifs.

Сообщение об уязвимости

Сообщайте о проблемах безопасности конфиденциально, как описано в политике безопасности Antimatter, а не в публичных issues.