Bezpieczeństwo
Checklist wzmacniania serwera Antimatter: co udostępnić, jakie limity i ustawienia prywatności należy sprawdzić, z jakich zewnętrznych usług korzysta serwer oraz jak zgłosić problem bezpieczeństwa.
Co udostępnić
| Port | Usługa | Dostępność |
|---|---|---|
| 443/tcp, 443/udp, 80/tcp | Twój proxy HTTPS (Caddy lub nginx) | Publiczna: to w ten sposób użytkownicy uzyskują dostęp do Antimatter. |
| 8443/udp i 8443/tcp | Media do rozmów | Publiczna, jeśli użytkownicy korzystają z rozmów spoza Twojej sieci. |
| 8065/tcp | Serwer WWW Antimatter | Tylko dla proxy: udostępnij go na adresie 127.0.0.1 (HTTP_PORT=127.0.0.1:8065). |
| 8067/tcp | Metryki | Tylko w sieci prywatnej, gdy jest włączony. Bez logowania. |
| 8074/tcp i udp | Gossip klastra | Tylko między węzłami klastra. |
| 5432, 9000, 8080, 8066 | PostgreSQL, magazyn plików, usługa GIF, proxy push | Nigdy. Pliki compose utrzymują je na wewnętrznych sieciach bez udostępnionych portów. |
Plik compose witryny uruchamia również każdy kontener z opcją no-new-privileges, uruchamia Antimatter jako użytkownika bez przywilejów na obrazie distroless oraz uruchamia usługę GIF z tylko do odczytu systemem plików. Baza danych, magazyn i usługa GIF znajdują się w sieci bez dostępu do Internetu.
Checklist po instalacji
- Utwórz pierwsze konto administratora, zanim ktokolwiek inny uzyska dostęp do serwera (Instalacja).
- Serwuj Antimatter wyłącznie przez HTTPS i ustaw adres witryny na adres
https://(Domena i HTTPS). - Utrzymuj pliki
.env,config.jsoni klucze TLS jako czytelne tylko dla roota (lub użytkownika serwera):chmod 600 .env. - Określ, kto może tworzyć konta, i wyłącz Włącz Open Server, chyba że społeczność jest publiczna. Włącz Wymagaj weryfikacji e-mail, gdy tylko konfiguracja poczty e-mail będzie działać (Logowanie i konta).
- Włącz uwierzytelnianie wieloskładnikowe i wymuś je co najmniej dla kont administratorów, lub użyj tego dostarczanego przez dostawcę tożsamości.
- Przeglądaj poniższe połączenia zewnętrzne, w szczególności serwer STUN, którego domyślnie używają Rozmowy.
- Zanim dodasz połączenia z modelami, ustaw klucz szyfrowania AI (
AM_AI_ENCRYPTION_KEY) i przechowuj jego kopię osobno od kopii zapasowych bazy danych (AI). - Twórz kopie zapasowe i testuj przywracanie (Kopie zapasowe i aktualizacje).
- Utrzymuj obrazy lub pakiety w aktualności: poprawki bezpieczeństwa pojawiają się w nowych wersjach.
Limitowanie żądań
Serwer może ograniczać liczbę żądań API wysyłanych przez każdego klienta. Funkcja jest domyślnie wyłączona. W Konsola systemu › Środowisko › Ograniczenia Prędkości:
| Ustawienie | Klucz | Domyślnie |
|---|---|---|
| Włącz Ograniczenie Prędkości | RateLimitSettings.Enable | Wyłączone |
| Maksymalna ilość zapytań na sekundę | RateLimitSettings.PerSec | 10 |
| Maksymalny rozmiar pakietu | RateLimitSettings.MaxBurst | 100 |
| Rozmiar magazynu pamięci | RateLimitSettings.MemoryStoreSize | 10000 śledzonych klientów |
| Zmieniaj limit szybkości według adresu zdalnego | RateLimitSettings.VaryByRemoteAddr | włączone |
| Zmieniaj limit szybkości według użytkownika | RateLimitSettings.VaryByUser | Wyłączone |
| Ograniczenie prędkości według nagłówka HTTP | RateLimitSettings.VaryByHeader | pusta |
Za proxy ograniczenia według adresu działają tylko wtedy, gdy serwer zna adres każdego klienta (ServiceSettings.TrustedProxyIPHeader i ServiceSettings.TrustedProxyIPs, zob. Adresy klientów za proxy). W przeciwnym razie każde żądanie wydaje się pochodzić z proxy, a wszyscy dzielą jeden limit. Dotyczy to również filtrowania IP oraz adresów w dziennikach audytu.
Próby logowania są ograniczane osobno: Maksymalna liczba prób logowania (10) blokuje konto po tylu nieudanych hasłach.
Filtrowanie IP
Konsola systemu › Konfiguracja strony › Filtrowanie adresów IP umożliwia ograniczanie dostępu do serwera na podstawie adresu IP za pomocą reguł zezwalających i blokujących (każda reguła dotyczy pojedynczego adresu lub zakresu CIDR). Gdy Włącz filtrowanie adresów IP jest włączone, osoby, których adres pasuje do reguły blokującej, lub które nie pasują do żadnej reguły zezwalającej (jeśli takie istnieją), nie mogą uzyskać dostępu do serwera. Strona odrzuca reguły, które zablokowałyby Twój własny adres. W przypadku pracy za proxy najpierw skonfiguruj adresy klientów (Adresy klientów za proxy); w przeciwnym razie każde żądanie będzie wydawać się przychodzące z proxy.
Przesyłanie i udostępnianie plików
| Ustawienie | Gdzie | Domyślnie |
|---|---|---|
Maksymalny rozmiar pliku (FileSettings.MaxFileSize) | Środowisko › Magazyn plików | 100 MB. Utrzymuj limit rozmiaru żądań proxy na poziomie co najmniej tym. |
Maksymalny rozmiar ładunku (bajty) (ServiceSettings.MaximumPayloadSizeBytes) | Środowisko › Serwer WWW | 300000: największe żądanie API inne niż przesyłanie plików |
Zezwól na udostępnianie plików (FileSettings.EnableFileAttachments) | Konfiguracja witryny › Udostępnianie i pobieranie plików | włączone |
| Zezwalaj na przesyłanie plików na urządzeniach mobilnych, Zezwalaj na pobieranie plików na urządzenia mobilne | Konfiguracja witryny › Udostępnianie i pobieranie plików | włączone |
Włącz publiczne linki do plików (FileSettings.EnablePublicLink) | Konfiguracja witryny › Linki publiczne | wyłączone: gdy włączone, osoby mogą udostępniać plik za pomocą linku, który działa bez logowania |
Włącz SVGs (ServiceSettings.EnableSVGs) | Konfiguracja witryny › Posty | wyłączone na nowym serwerze: gdy włączone, obrazy SVG są wyświetlane inline |
Antimatter nie skanuje przesyłanych plików pod kątem złośliwego oprogramowania.
Ustawienia prywatności
W Konsola systemu › Konfiguracja strony › Użytkownicy i zespoły:
| Ustawienie | Klucz | Domyślnie | Opis |
|---|---|---|---|
| Pokaż adres e-mail | PrivacySettings.ShowEmailAddress | włączone | Wyłączona, adresy e-mail członków są ukryte przed wszystkimi, z wyjątkiem administratorów. Wyłącz tę opcję na serwerach publicznych. |
| Pokaż pełną nazwę | PrivacySettings.ShowFullName | włączone | Wyłączona, pełne imiona i nazwiska są ukryte, a zamiast nich wyświetlane są nazwy użytkowników. |
| Włącz ignorowanie, blokowanie i prośby o wiadomość | PrivacySettings.EnableUserBlocking | włączone | Zobacz poniżej. |
| Zezwalaj użytkownikom na otwieranie kanałów prywatnych wiadomości z | TeamSettings.RestrictDirectMessage | Dowolnym użytkownikiem na serwerze Antimatter | Lub Dowolny uczestnik zespołu: tylko osoby należące do tej samej społeczności. |
Ignorowanie, blokowanie i żądania wiadomości
Gdy Włącz ignorowanie, blokowanie i prośby o wiadomość jest włączone (ustawienie domyślne), użytkownicy mogą ignorować i blokować innych oraz wybrać, aby otrzymywać wiadomości bezpośrednie od nieznanych osób jako prośby o wiadomość, które nie generują powiadomień, dopóki nie zostaną zaakceptowane. Jest to odpowiednie dla publicznych społeczności. W miejscu pracy, gdzie współpracownicy muszą zawsze mieć możliwość nawiązania kontaktu, wyłącz tę opcję (AM_PRIVACYSETTINGS_ENABLEUSERBLOCKING=false): żadne z tych mechanizmów nie będzie już egzekwowane, ale listy i wybory dokonane przez użytkowników zostaną zachowane i będą ponownie obowiązywać po ponownym włączeniu opcji.
Sesje i tokeny
- Czas trwania sesji i limit bezczynności: zobacz Logowanie i konta. Krótsze sesje oznaczają, że zgubiony laptop lub telefon pozostanie zalogowany przez krótszy czas.
- Włącz osobiste tokeny dostępu (
ServiceSettings.EnableUserAccessTokens, domyślnie wyłączone) pozwala użytkownikom tworzyć tokeny API, a Maksymalny okres ważności osobistego tokenu dostępu (dni) ogranicza ich czas ważności. Oba ustawienia znajdują się w Konsola systemu › Integracje › Zarządzanie Integracjami. - Aby wylogować wszystkich naraz, na przykład po podejrzeniu naruszenia bezpieczeństwa: Odwołaj wszystkie sesje w Konsola systemu › Zarządzanie użytkownikiem › Użytkownicy.
Połączenia z zewnętrznymi usługami
Antimatter nie kontaktuje się z żadną usługą prowadzoną przez Mattermost, Inc. Nie wysyła telemetrii, raportów o awariach ani nie sprawdza aktualizacji bezpieczeństwa, a także nie pobiera powiadomień produktowych. Konfiguracja przeniesiona z Mattermosta, która nadal odwołuje się do jednej z usług Mattermosta (usługi push, marketplace aplikacji, powiadomienia lub serwer STUN do rozmów), nie powoduje, aby serwer nawiązywał z nimi kontakt: te adresy są ignorowane.
Serwer i aplikacje łączą się z innymi zewnętrznymi usługami tylko w zakresie funkcji, które tego wymagają, oraz z usługami, które skonfigurujesz:
| Funkcja | Kontakty | Domyślnie |
|---|---|---|
| Rozmowy: znajdowanie adresów publicznych za pomocą STUN. Serwer oraz każda osoba dołączająca do rozmowy wysyłają żądanie, które pokazuje serwerowi STUN jej adres IP i port. | Publiczny serwer STUN firmy Cloudflare, stun.cloudflare.com | włączone, gdy aplikacja Rozmowy jest włączona. Aby to zmienić, zobacz Rozmowy. |
Podgląd linków: serwer pobiera strony powiązane z wiadomościami (Włącz podgląd linków do stron internetowych, ServiceSettings.EnableLinkPreviews) | witryny, do których ludzie dodają linki | włączone. Wyłącz za pomocą AM_SERVICESETTINGS_ENABLELINKPREVIEWS=false. |
| Powiadomienia push do aplikacji mobilnej | własny serwer pośredniczący w powiadomieniach push (Powiadomienia push) | wyłączone, dopóki nie ustawisz jego adresu |
Zdalny sklep z aplikacjami (PluginSettings.EnableRemoteMarketplace) | ustawiony przez Ciebie Adres URL sklepu z wtyczkami | wyłączone, bez adresu |
| Poczta e-mail | serwer SMTP | domyślnym serwerem jest localhost |
| Połączenia z modelami (przepisywanie, podsumowania, tłumaczenie, odczyt na głos i aplikacje), własne połączenia z modelami administratorów społeczności | dostawcy AI dodani w Konsola systemu › AI › Połączenia z modelami lub w ustawieniach społeczności (AI) | żadne, dopóki ktoś ich nie doda |
| Logowanie jednokrotne (SSO), usługi AI aplikacji Agents, transkrypcja mowy i tłumaczenie, wychodzące webhooks oraz aplikacje, takie jak Mail, Kalendarz, GitHub, GitLab czy Jira | usługi, które skonfigurujesz | wyłączone, dopóki ich nie skonfigurujesz |
Domyślnie serwer odmawia nawiązywania połączeń z adresami prywatnymi i pętli dla tych elementów (podglądy linków, webhooks, aplikacje, połączenia z modelami społeczności), dzięki czemu wiadomość lub integracja nie może zostać wykorzystana do uzyskania dostępu do wewnętrznej sieci. W polu Pozwól na niezaufane połączenia wewnętrzne do (ServiceSettings.AllowedUntrustedInternalConnections, w Konsola systemu › Środowisko › Programista) wymień wewnętrzne hosty, do których może nawiązywać połączenia; w pliku compose witryny znajduje się tam wpis gifs.
Zgłaszanie podatności
Zgłaszaj problemy bezpieczeństwa prywatnie, zgodnie z instrukcjami w polityce bezpieczeństwa Antimatter, a nie w publicznych zgłoszeniach (issues).