Securitate
O listă de verificare pentru întărirea unui server Antimatter: ce să expui, limitele și setările de confidențialitate de verificat, serviciile externe cu care serverul comunică și cum să raportezi o problemă de securitate.
Ce să expui
| Port | Serviciu | Expoziție |
|---|---|---|
| 443/tcp, 443/udp, 80/tcp | Proxy-ul HTTPS (Caddy sau nginx) | Public: așa ajung oamenii la Antimatter. |
| 8443/udp și 8443/tcp | Media apelurilor | Public, dacă oamenii folosesc apeluri din afara rețelei tale. |
| 8065/tcp | Serverul web Antimatter | Doar către proxy: publică-l pe 127.0.0.1 (HTTP_PORT=127.0.0.1:8065). |
| 8067/tcp | Metrice | Doar în rețeaua privată, când este activat. Fără autentificare. |
| 8074/tcp și udp | Gossip al clusterului | Doar între nodurile clusterului. |
| 5432, 9000, 8080, 8066 | PostgreSQL, stocarea fișierelor, serviciul GIF, proxy-ul de notificări push | Niciodată. Fișierele compose le păstrează pe rețele interne, fără port publicat. |
Fișierul compose al site-ului rulează, de asemenea, fiecare container cu no-new-privileges, rulează Antimatter ca un utilizator neprivilegiat pe o imagine distroless și rulează serviciul GIF cu un sistem de fișiere în mod de doar-lectură. Baza de date, stocarea și serviciul GIF se află pe o rețea fără acces la Internet.
Listă de verificare după instalare
- Creează primul cont de administrator înainte ca oricine altcineva să poată accesa serverul (Instalare).
- Servește Antimatter doar prin HTTPS și setează URL-ul site-ului pe adresa
https://(Domeniu și HTTPS). - Păstrează
.env,config.jsonși cheile TLS citibile doar de root (sau de utilizatorul serverului):chmod 600 .env. - Decideți cine poate crea conturi, lăsați Activați serverul deschis dezactivat, cu excepția cazului în care comunitatea este publică, și activați Necesită verificarea e-mail odată ce e-mailul funcționează (Autentificare și conturi).
- Activează autentificarea cu factori multipli și impune-o cel puțin pentru conturile de administrator, sau folosește cea a furnizorului tău de identitate.
- Verifică conexiunile externe de mai jos, în special serverul STUN folosit implicit de Apeluri.
- Înainte de a adăuga conexiuni la modele, configurați cheia de criptare AI (
AM_AI_ENCRYPTION_KEY) și păstrați o copie separată de copiile de rezervă ale bazei de date (AI). - Fă o copie de rezervă și testează o restaurare (Copii de rezervă și actualizări).
- Păstrați imaginile sau pachetele actualizate: corecțiile de securitate ajung odată cu versiunile noi.
Limitarea ratei
Serverul poate limita numărul de cereri API pe care fiecare client le face. Este dezactivat implicit. În Consola de sistem › Mediu › Evaluați setările de limită:
| Setare | Cheie | Implicit |
|---|---|---|
| Activați limitarea ratei | RateLimitSettings.Enable | dezactivat |
| Interogări maxime pe secundă | RateLimitSettings.PerSec | 10 |
| Dimensiunea maximă de rupere | RateLimitSettings.MaxBurst | 100 |
| Dimensiunea magazinului de memorie | RateLimitSettings.MemoryStoreSize | 10000 de clienți urmăriți |
| Limita de rată a limitei prin adresa la distanță | RateLimitSettings.VaryByRemoteAddr | activat |
| Limita de rată a limitelor de utilizator | RateLimitSettings.VaryByUser | dezactivat |
| Variație a ratei variabile de către antetul HTTP | RateLimitSettings.VaryByHeader | gol |
În spatele unui proxy, limitarea după adresă funcționează doar dacă serverul cunoaște adresa fiecărui client (ServiceSettings.TrustedProxyIPHeader și ServiceSettings.TrustedProxyIPs, vezi Adresele clientului în spatele unui proxy). În caz contrar, toate cererile par a veni de la proxy, iar toți utilizatorii împart aceeași limită. Același lucru se aplică și filtrării IP și adreselor din jurnalele de audit.
Încercările de autentificare sunt limitate separat: Încercări de conectare maximă (10) blochează un cont după atât de multe parole eșuate.
Filtrare IP
Consola de sistem › Configurația site-ului › Filtrare IP limitează accesul la serverul prin adresa IP, cu reguli de permitere și respingere (o adresă sau o gamă CIDR fiecare). Cu Activează filtrarea IP activat, persoanele ale căror adrese se potrivesc cu o regulă de respingere, sau nu au nicio regulă de permitere atunci când există reguli de permitere, nu pot ajunge la server. Pagina refuză regulile care ar bloca propria dvs. adresă. În spatele unui proxy, configurați mai întâi adresele client (Adresele client în spatele unui proxy): altfel, fiecare cerere pare să vină de la proxy.
Încărcări și partajare de fișiere
| Setare | Unde | Implicit |
|---|---|---|
Dimensiunea maximă a fișierului (FileSettings.MaxFileSize) | Mediu › Stocare fișiere | 100 MB. Păstrați limita de dimensiune a cererii proxy cel puțin la această valoare. |
Dimensiunea maximă a încărcăturii (octeți) (ServiceSettings.MaximumPayloadSizeBytes) | Mediu › Server web | 300000: cea mai mare cerere API, în afară de încărcările de fișiere |
Permiteți partajarea fișierelor (FileSettings.EnableFileAttachments) | Configurare site › Partajare și descărcare fișiere | activat |
| Permiteți încărcarea fișierelor pe mobil, Permiteți descărcarea fișierelor pe mobil | Configurare site › Partajare și descărcare fișiere | activat |
Activați legăturile publice de fișiere (FileSettings.EnablePublicLink) | Configurare site › Linkuri publice | dezactivat: când este activat, persoanele pot partaja un fișier cu un link care funcționează fără autentificare |
Activați SVG-uri (ServiceSettings.EnableSVGs) | Configurare site › Mesaje | dezactivat pe un server nou: când este activat, imaginile SVG sunt afișate inline |
Antimatter nu scanează încărcările în căutarea de malware.
Setări de confidențialitate
În Consola de sistem › Configurația site-ului › Utilizatori și echipe:
| Setare | Cheie | Implicit | Ce face |
|---|---|---|---|
| Arată adresa de e-mail | PrivacySettings.ShowEmailAddress | activat | Dezactivat, adresele de e-mail ale membrilor sunt ascunse de toți, cu excepția administratorilor. Dezactivați această opțiune pe serverele publice. |
| Afișați numele complet | PrivacySettings.ShowFullName | activat | Dezactivat, numele complete sunt ascunse și se afișează în schimb numele de utilizator. |
| Activați ignorarea, blocarea și cererile de mesaj | PrivacySettings.EnableUserBlocking | activat | Consultați mai jos. |
| Permiteți utilizatorilor să deschidă canale Direct Message cu | TeamSettings.RestrictDirectMessage | Orice utilizator de pe serverul Antimatter | Sau Orice membru al echipei: doar persoanele care împărtășesc o comunitate. |
Ignorare, blocare și cereri de mesaj
Cu Activați ignorarea, blocarea și cererile de mesaj activat (valoare implicită), utilizatorii pot ignora și bloca unii pe alții și pot alege să primească mesajele directe de la persoane necunoscute sub forma cererilor de mesaj, care nu îi notifică până nu sunt acceptate. Acest lucru este potrivit pentru comunitățile publice. Într-un mediu de lucru în care colegii trebuie să poată fi contactați în orice moment, dezactivați această opțiune (AM_PRIVACYSETTINGS_ENABLEUSERBLOCKING=false): niciuna dintre reguli nu mai este aplicată, dar listele și opțiunile alese de utilizatori sunt păstrate și se reaplică dacă reactivați funcția.
Sesiuni și tokeni
- Durata sesiunilor și timeout-ul de inactivitate: consultați Autentificare și conturi. Sesiunile mai scurte înseamnă că un laptop sau telefon pierdut rămâne autentificat pentru un timp mai scurt.
- Activați jetoanele de acces personal (
ServiceSettings.EnableUserAccessTokens, dezactivat) permite utilizatorilor să creeze jetoane API; Durata maximă de validitate a tokenului de acces personal (zile) le limitează. Ambele se găsesc în Consola de sistem › Integrări › Managementul integrării. - Pentru a deconecta toți utilizatorii simultan, de exemplu după o încălcare de securitate suspectată: Revocați toate sesiunile din Consola de sistem › Gestionarea utilizatorilor › Utilizatori.
Conexiuni la servicii externe
Antimatter nu contactează niciun serviciu operat de Mattermost, Inc. Nu trimite telemetrie, rapoarte de eroare sau verificări de actualizări de securitate și nu preia nicio notificare de produs. O configurație preluată din Mattermost care menționează încă unul dintre serviciile Mattermost (serviciile sale de push, magazinul său de aplicații, notificările sale sau serverul STUN pentru apeluri) nu face ca serverul să le contacteze: acele adrese sunt ignorate.
Serverul și aplicațiile se conectează la alte servicii externe doar pentru funcțiile care le necesită și la serviciile pe care le configurați:
| Funcție | Contacte | Implicit |
|---|---|---|
| Apeluri: găsirea adreselor publice cu STUN. Serverul și fiecare persoană care participă la un apel trimit o cerere, care îi arată serverului STUN adresa IP și portul. | Serverul STUN public Cloudflare, stun.cloudflare.com | activ, în timp ce aplicația Calls este activată. Pentru a o modifica, consultați Calls. |
Previzualizări de link-uri: serverul preia paginile la care se face referință în mesaje (Activați Previzualizările de link-uri, ServiceSettings.EnableLinkPreviews) | site-urile web la care se face link | activ. Dezactivați cu AM_SERVICESETTINGS_ENABLELINKPREVIEWS=false. |
| Notificări push către aplicația mobilă | propriul proxy push (Notificări push) | inactiv până când configurați adresa sa |
Piața de aplicații remote (PluginSettings.EnableRemoteMarketplace) | adresa URL a pieței configurată (Adresa URL a pieței) | inactiv, și fără adresă |
| serverul SMTP | serverul implicit este localhost | |
| conexiunile la modele (rescriere, rezumate, traducere, citire vocală și aplicații), conexiunile proprii la modele ale administratorilor comunității | furnizorii de AI adăugați în Consola de sistem › AI › Conexiuni la modele sau în setările unei comunități (AI) | niciunul, până când cineva adaugă unul |
| autentificarea unică, serviciile AI ale aplicației Agents, transcrierea din vorbire și traducerea, webhook-urile de ieșire și aplicații precum Mail, Calendar, GitHub, GitLab sau Jira | serviciile pe care le configurați | inactiv până când le configurați |
În mod implicit, serverul refuză să se conecteze la adrese private și de loopback pentru aceste elemente (previzualizări de link-uri, webhook-uri, aplicații, conexiuni la modele ale comunității), astfel încât un mesaj sau o integrare nu poate fi folosit pentru a accesa rețeaua internă. Enumerați gazdele interne la care este permisă accesul în Permiteți conexiunile interne de neîncrederi la (ServiceSettings.AllowedUntrustedInternalConnections, în Consola de sistem › Mediu › Dezvoltator); fișierul de compunere al site-ului listează gifs aici.
Raportarea unei vulnerabilități
Raportați problemele de securitate în mod privat, așa cum este explicat în política de securitate Antimatter, nu în probleme publice.