Безпека
Перелік дій для захисту сервера 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 та udp | Кластерний gossip | Лише між вузлами кластера. |
| 5432, 9000, 8080, 8066 | PostgreSQL, сховище файлів, служба GIF, проксі push-сповіщень | Ніколи. Файли compose тримають їх на внутрішніх мережах без опублікованих портів. |
Файл compose сайту також запускає всі контейнери з no-new-privileges, запускає Antimatter від імені непривілейованого користувача на образі distroless, а службу GIF — на файловій системі лише для читання. База даних, сховище та служба GIF перебувають у мережі без доступу в Інтернет.
Перевірка після встановлення
- Створіть акаунт першого адміністратора, перш ніж хтось інший зможе отримати доступ до сервера (Встановлення).
- Надавайте Antimatter лише через HTTPS і встановіть URL сайту на адресу
https://(Домен і HTTPS). - Забезпечте доступ до
.env,config.jsonта TLS-ключів лише для root (або користувача сервера):chmod 600 .env. - Визначте, хто може створювати акаунти, тримайте Увімкнути відкритий сервер вимкненим, якщо спільнота не є публічною, і увімкніть Вимагати підтвердження адреси електронної пошти, коли електронна пошта запрацює (Увійти та акаунти).
- Ввімкніть багатоканальну автентифікацію та застосуйте її щонайменше для акаунтів адміністраторів, або використовуйте автентифікацію вашого провайдера ідентичності.
- Перевірте зовнішні з'єднання нижче, зокрема STUN-сервер, який за замовчуванням використовують дзвінки.
- Перед додаванням з'єднань із моделями встановіть ключ шифрування ШІ (
AM_AI_ENCRYPTION_KEY) та зберігайте його окремо від резервних копій бази даних (ШІ). - Робіть резервні копії та перевіряйте відновлення (Резервне копіювання та оновлення).
- Тримайте образи або пакети в актуальному стані: виправлення вразливостей надходять разом із новими версіями.
Обмеження частоти
Сервер може обмежувати кількість запитів API, які надсилає кожен клієнт. За замовчуванням ця функція вимкнена. У Системна консоль › Середовище › Обмеження швидкості:
| Налаштування | Ключ | Типове значення |
|---|---|---|
| Увімкнути обмеження швидкості | RateLimitSettings.Enable | Вимкнено |
| Максимальна кількість запитів в секунду | RateLimitSettings.PerSec | 10 |
| Максимальний розмір пакета | RateLimitSettings.MaxBurst | 100 |
| Розмір сховища пам'яті | RateLimitSettings.MemoryStoreSize | 10000 відстежуваних клієнтів |
| Змінюйте ліміт швидкості за віддаленою адресою | RateLimitSettings.VaryByRemoteAddr | увімкнено |
| Змінюйте ліміт швидкості для кожного користувача | RateLimitSettings.VaryByUser | Вимкнено |
| Змінюйте обмеження швидкості за допомогою HTTP-заголовка | RateLimitSettings.VaryByHeader | порожньо |
За проксі-сервером обмеження за адресою працюють лише тоді, коли сервер знає адресу кожного клієнта (ServiceSettings.TrustedProxyIPHeader та ServiceSettings.TrustedProxyIPs, див. Адреси клієнтів за проксі-сервером). Інакше всі запити, здавалося б, надходять від проксі-сервера, і всі користуються одним і тим самим обмеженням. Те саме стосується фільтрації за IP та адрес у журналах аудиту.
Спроби входу обмежуються окремо: Максимальна кількість спроб входу (10) блокує обліковий запис після такої кількості невдалих спроб введення пароля.
Фільтрація за IP
Системна консоль › Конфігурація сайту › Фільтрування IP-адрес обмежує доступ до сервера за IP-адресою за допомогою правил дозволу та заборони (кожна з них — адреса або діапазон CIDR). Якщо Увімкнути фільтрацію IP-адрес увімкнено, користувачі, чиї адреси відповідають правилу заборони, або не відповідають жодному правилу дозволу (якщо такі правила існують), не зможуть отримати доступ до сервера. Система відхиляє правила, які блокують вашу власну адресу. Якщо сервер працює за проксі, спочатку налаштуйте адреси клієнтів (Адреси клієнтів за проксі); інакше всі запити здаватимуться надісланими з проксі.
Завантаження та спільне використання файлів
| Налаштування | Де | Типове значення |
|---|---|---|
Максимальний розмір файлу (FileSettings.MaxFileSize) | Environment › File Storage | 100 МБ. Зберігайте обмеження на розмір запиту проксі-сервера не меншим за це значення. |
Максимальний розмір корисного навантаження (байт) (ServiceSettings.MaximumPayloadSizeBytes) | Environment › Web Server | 300000: найбільший запит 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 не сканує завантажені файли на наявність шкідливого ПЗ.
Налаштування конфіденційності
У Системна консоль › Конфігурація сайту › Користувачі та команди:
| Налаштування | Ключ | Типове значення | Призначення |
|---|---|---|---|
| Показати електронну адресу | PrivacySettings.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. |
| Штовхальні сповіщення у мобільний додаток | ваш власний проксі-сервер штовхальних сповіщень (Штовхальні сповіщення) | вимкнено, доки ви не вкажете його адресу |
Віддалений маркетплейс додатків (PluginSettings.EnableRemoteMarketplace) | URL-адреса магазину плагінів, яку ви встановили | вимкнено, адреса не вказана |
| Електронна пошта | ваш SMTP-сервер | за замовчуванням сервер — localhost |
| з'єднання з моделями (перефразування, стислі підсумки, переклад, озвучування та додатки), власні з'єднання з моделями адміністраторів спільнот | провайдери ШІ, додані в Системна консоль › ШІ › З'єднання з моделями або в налаштуваннях спільноти (ШІ) | жодного, доки хтось не додасть |
| автентифікація за допомогою єдиного входу, сервіси ШІ додатка «Агенти», розпізнавання мовлення та переклад, вихідні вебхуки, а також додатки, такі як Mail, Calendar, GitHub, GitLab або Jira | послуги, які ви налаштуєте | вимкнено, доки ви їх не налаштуєте |
Типово сервер відмовляє у з'єднанні з приватними та петльбек-адресами для цих (попередні перегляди посилань, вебхуки, додатки, з'єднання з моделями спільнот), щоб повідомлення чи інтеграцію не можна було використати для доступу до вашої внутрішньої мережі. Перелік внутрішніх хостів, до яких дозволено доступ, вказуйте в Дозволити ненадійні внутрішні з'єднання (ServiceSettings.AllowedUntrustedInternalConnections, у Системна консоль › Середовище › Розробник); у compose-файлі сайту там вказано gifs.
Повідомлення про вразливість
Повідомляйте про проблеми безпеки приватно, як описано у політиці безпеки Antimatter, а не у публічних записках.