Сигурност
Чеклист за засилване на сървър на 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 | Гласуване в кластера | Само между възлите на кластера. |
| 5432, 9000, 8080, 8066 | PostgreSQL, файлово хранилище, GIF услуга, пуш прокси | Никога. Файловете за compose ги държат на вътрешни мрежи без публикуван порт. |
Файлът за compose на сайта също изпълнява всеки контейнер с no-new-privileges, изпълнява Antimatter като непривилегирован потребител на образ без дистрибуция и изпълнява GIF услугата с само-четима файлова система. Базата данни, хранилището и GIF услугата са на мрежа без достъп до интернет.
Чеклист след инсталация
- Създайте първата администраторска сметка, преди някой друг да може да достигне до сървъра (Инсталиране).
- Сервирайте Antimatter само през HTTPS и задайте адреса на сайта на
https://адреса (Домен и HTTPS). - Дръжте
.env,config.jsonи TLS ключовете четими само от root (или потребителя на сървъра):chmod 600 .env. - Определете кой може да създава акаунти, оставете Разреши отворен сървър изключено, освен ако общността не е публична, и включете Изисква потвърждаване по ел.поща, след като електронната поща заработи (Влизане и акаунти).
- Включете мултифакторна автентикация и я наложете поне за сметките на администраторите, или използвайте тази на вашия доставчик на идентичност.
- Прегледайте външните връзки по-долу, в частност STUN сървъра, който Обажданията използват по подразбиране.
- Преди да добавите връзки към модели, задайте ключа за криптиране на AI (
AM_AI_ENCRYPTION_KEY) и го съхранявайте отделно от резервните копия на базата данни (AI). - Направете резервно копие и тествайте възстановяване (Резервни копия и ъпгрейди).
- Поддържайте образите или пакетите актуализирани: корекциите за сигурност идват с нови версии.
Ограничаване на честотата
Сървърът може да ограничава броя на 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) | Околна среда › Файлово хранилище | 100 MB. Запазете ограничението за размера на заявките на прокси поне толкова. |
Максимален размер на полезния товар (байтове) (ServiceSettings.MaximumPayloadSizeBytes) | Околна среда › Уеб сървър | 300000: най-голямата API заявка, освен качвания на файлове |
Разреши споделяне на файлове (FileSettings.EnableFileAttachments) | Конфигурация на сайта › Споделяне и изтегляне на файлове | включено |
| Разрешаване на качване на файлове от мобилни устройства, Разрешаване на изтегляния на файлове на мобилни устройства | Конфигурация на сайта › Споделяне и изтегляне на файлове | включено |
Разреши публични връзки към файлове (FileSettings.EnablePublicLink) | Конфигурация на сайта › Публични връзки | изключено: когато е включено, хората могат да споделят файл с връзка, която работи без вход |
Разрешаване на SVG (ServiceSettings.EnableSVGs) | Конфигурация на сайта › Публикации | изключено на нов сървър: когато е включено, SVG изображенията се показват в текстовия поток |
Активиране на търсенето на файлове (ServiceSettings.EnableFileSearch) | Конфигурация на сайта › Споделяне и изтегляне на файлове | включено: изключването скрива търсенето на файлове от раздела „Файлове“ в резултатите от търсенето както в класическето уеб приложение, така и във Fusion |
Активиране на индексирането на файлове (ElasticsearchSettings.EnableFileIndexing) | Средна среда › Elasticsearch, при настроен Elasticsearch или OpenSearch | включено: изключването спира индексирането на нови или променени файлове, но вече индексираните файлове остават достъпни за търсене |
Antimatter не сканира качванията за зловреден софтуер.
Настройки за поверителност
В Системна конзола › Конфигурация на сайта › Потребители и екипи:
| Настройка | Ключ | По подразбиране | Какво прави |
|---|---|---|---|
| Показване адреса за ел.поща | PrivacySettings.ShowEmailAddress | включено | Изключено, имейл адресите на членовете са скрити от всички, освен от администраторите. Изключете го на публичните сървъри. |
| Показване на пълното име | PrivacySettings.ShowFullName | включено | Изключено, пълните имена са скрити и вместо тях се показват потребителските имена. |
| Активиране на игнориране, блокиране и заявки за съобщения | PrivacySettings.EnableUserBlocking | включено | Вижте по-долу. |
| Разрешете на потребителите да отварят канали за директно съобщение с | TeamSettings.RestrictDirectMessage | Всякакви потребители на сървъра на Antimatter | Или Всеки член на екипа: само хора, които споделят общност. |
Игнориране, блокиране и заявки за съобщения
Когато опцията Активиране на игнориране, блокиране и заявки за съобщения е включена (по подразбиране), потребителите могат да игнорират и блокират един друг и да избират дали директните съобщения от непознати да пристигат нормално, да чакат като заявки за съобщения или да бъдат отказани напълно (отказан потребител не може да започне директно или групово съобщение с тях, нито да пише в такова, което все още не е прието); изборът може да бъде различен за всяка общност и се прилага най-ограничаващото правило от общностите, които потребителите споделят. Това е подходящо за публични общности. В работна среда, където колегите трябва винаги да могат да се достигнат, изключете тази опция (AM_PRIVACYSETTINGS_ENABLEUSERBLOCKING=false): тези избори за директни съобщения вече не се прилагат, но списъците и изборите, направени от потребителите, се запазват и отново се прилагат, ако функцията бъде включена отново. Кои детайли от профила виждат потребителите във всяка общност, се прилага независимо от тази настройка; системните администратори и самият потребител винаги виждат всичко.
Сесии и токени
- Продължителност на сесиите и таймаут при бездействие: вижте Вход и акаунти. По-късите сесии означават, че загубен лаптоп или телефон остава вписан за по-малко време.
- Разреши маркери за личен достъп (
ServiceSettings.EnableUserAccessTokens, изключено) позволява на потребителите да създават API маркери, а Максимален срок на валидност на личния достъпен токен (дни) ограничава срока им. И двете настройки се намират в Системна конзола › Интеграции › Управление на интеграциите. - За да излезете всички едновременно, например след предполагаемо нарушение: използвайте Отмени всички сесии в Системна конзола › Управление на потребители › Потребители.
- В интерфейса на Antimatter потребителите получават предупреждение за ново влизане в собствения си акаунт, докато са свързани, и могат сами да прекратят сесията (вижте Къде сте влезли). Системните администратори не получават известие за влизанията на други потребители.
Връзки с външни услуги
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 адрес на Marketplace | изключено, без зададен адрес |
| Имейл | вашият SMTP сървър | сървърът по подразбиране е localhost |
| Връзки към модели (преписване, резюмета, превод, четене на глас, агенти и приложения), собствени връзки към модели на администраторите на общността | доставчиците на изкуствен интелект, добавени в Системна конзола › Изкуствен интелект › Връзки с модели или в настройките на общност (Изкуствен интелект) | няма, докато някой не добави такава |
| Единично влизане (SSO), AI услугите на приложението за чат с AI, преобразуване на реч в текст и превод, изходящи webhooks и приложения като Mail, Calendar, GitHub, GitLab или Jira | услугите, които конфигурирате | изключено, докато не ги конфигурирате |
По подразбиране сървърът отказва да се свързва към частни и loopback адреси за тези функции (преглед на връзки, webhooks, приложения, връзки към модели на общността), така че съобщение или интеграция не могат да се използват за достигане до вашата вътрешна мрежа. Избройте вътрешните хостове, до които той може да достигне, в Разрешаване на ненадеждни вътрешни връзки към (ServiceSettings.AllowedUntrustedInternalConnections, в Системна конзола › Обкръжение › Разработчик); compose файлът на сайта посочва gifs там.
Докладване за уязвимост
Докладвайте за сигурностни проблеми поверително, както е обяснено в политиката за сигурност на Antimatter, а не в публични проблеми.