Sicherheit

Eine Checkliste zur Härtung eines Antimatter-Servers: Was freigegeben wird, welche Limits und Datenschutz-Einstellungen überprüft werden sollten, welche externen Dienste der Server kontaktiert und wie ein Sicherheitsproblem gemeldet wird.

Was freigegeben wird

PortDienstFreigabe
443/tcp, 443/udp, 80/tcpIhr HTTPS-Proxy (Caddy oder nginx)Öffentlich: So erreichen die Leute Antimatter.
8443/udp und 8443/tcpMediendaten für AnrufeÖffentlich, wenn Anrufe von außerhalb Ihres Netzwerks genutzt werden.
8065/tcpWebserver von AntimatterNur für den Proxy: Veröffentlichen Sie ihn unter 127.0.0.1 (HTTP_PORT=127.0.0.1:8065).
8067/tcpMetrikenNur im internen Netzwerk, wenn aktiviert. Keine Anmeldung erforderlich.
8074/tcp und udpCluster-GossipNur zwischen den Knoten des Clusters.
5432, 9000, 8080, 8066PostgreSQL, Dateispeicher, GIF-Dienst, Push-ProxyNiemals. Die Compose-Dateien halten sie auf internen Netzwerken ohne veröffentlichten Port.

Die Compose-Datei der Website führt außerdem jeden Container mit no-new-privileges aus, führt Antimatter als nicht privilegierten Benutzer auf einem Distroless-Image aus und führt den GIF-Dienst mit einem schreibgeschützten Dateisystem aus. Datenbank, Speicher und GIF-Dienst befinden sich auf einem Netzwerk ohne Internetzugang.

Checkliste nach der Installation

  1. Erstellen Sie das erste Administratorkonto, bevor jemand anderes den Server erreichen kann (Installation).
  2. Bereitstellen Sie Antimatter ausschließlich über HTTPS und setzen Sie die Website-URL auf die https://-Adresse (Domain und HTTPS).
  3. Halten Sie .env, config.json und die TLS-Schlüssel nur für root (oder den Benutzer des Servers) lesbar: chmod 600 .env.
  4. Entscheiden Sie, wer Konten erstellen kann. Lassen Sie Aktiviere offenen Server deaktiviert, es sei denn, die Community ist öffentlich, und aktivieren Sie Erzwinge E-Mail-Bestätigung, sobald die E-Mail-Funktion einwandfrei funktioniert (Anmeldung und Konten).
  5. Aktivieren Sie die Zwei-Faktor-Authentifizierung und erzwingen Sie sie mindestens für die Konten der Administratoren, oder nutzen Sie die Ihres Identitätsanbieters.
  6. Überprüfen Sie die externen Verbindungen unten, insbesondere den STUN-Server, den Anrufe standardmäßig verwenden.
  7. Legen Sie vor dem Hinzufügen von Modellverbindungen den KI-Verschlüsselungsschlüssel (AM_AI_ENCRYPTION_KEY) fest und bewahren Sie eine Kopie getrennt von den Datenbank-Backups auf (KI).
  8. Erstellen Sie Backups und testen Sie eine Wiederherstellung (Backups und Upgrades).
  9. Halten Sie die Images oder Pakete aktuell: Sicherheitsupdates werden mit neuen Versionen bereitgestellt.

Ratenbegrenzung

Der Server kann die Anzahl der API-Anfragen begrenzen, die jeder Client stellt. Standardmäßig ist diese Funktion deaktiviert. In Systemkonsole › Umgebung › Geschwindigkeitsbegrenzung:

EinstellungSchlüsselStandard
Aktiviere AnfragendrosselungRateLimitSettings.Enableaus
Maximale Anfragen pro SekundeRateLimitSettings.PerSec10
Maximale Burst-SizeRateLimitSettings.MaxBurst100
SpeichergrößeRateLimitSettings.MemoryStoreSize10000 Clients werden erfasst
Mittels Absender-Adresse drosselnRateLimitSettings.VaryByRemoteAddran
Anfragenbegrenzung pro Benutzer variierenRateLimitSettings.VaryByUseraus
Mittels HTTP Header drosselnRateLimitSettings.VaryByHeaderleer

Hinter einem Proxy funktionieren Limits nach Adresse nur, wenn der Server die Adresse jedes Clients kennt (ServiceSettings.TrustedProxyIPHeader und ServiceSettings.TrustedProxyIPs, siehe Client-Adressen hinter einem Proxy). Andernfalls scheinen alle Anfragen vom Proxy zu kommen, und alle teilen sich ein gemeinsames Limit. Das Gleiche gilt für die IP-Filterung und für die Adressen in den Audit-Logs.

Anmeldeversuche werden separat begrenzt: Max. Anmeldeversuche (10) sperrt ein Konto nach dieser Anzahl fehlerhafter Passwörter.

IP-Filterung

Systemkonsole › Systemkonfiguration › IP-Filterung begrenzt den Zugriff auf den Server anhand der IP-Adresse, mit erlaubenden und verweigernden Regeln (jeweils eine Adresse oder ein CIDR-Bereich). Wenn IP-Filterung einschalten aktiviert ist, können Personen, deren Adresse einer Verweigerungsregel entspricht oder – wenn es erlaubende Regeln gibt – keiner erlaubenden Regel, den Server nicht erreichen. Die Seite lehnt Regeln ab, die Ihre eigene Adresse blockieren würden. Hinter einem Proxy müssen Sie zuerst die Client-Adressen einrichten (Client-Adressen hinter einem Proxy); andernfalls scheint jede Anfrage vom Proxy zu kommen.

Uploads und Dateifreigabe

EinstellungWoStandard
Maximale Dateigröße (FileSettings.MaxFileSize)Umgebung › Dateispeicher100 MB. Das Größenlimit für Anfragen des Proxys sollte mindestens so hoch sein.
Maximale Größe der Nutzlast (Bytes) (ServiceSettings.MaximumPayloadSizeBytes)Umgebung › Webserver300000: die größte API-Anfrage außer Datei-Uploads
Dateiaustausch erlauben (FileSettings.EnableFileAttachments)Site-Konfiguration › Dateifreigabe und Downloadsan
Datei-Upload auf Mobilgeräten erlauben, Datei-Download auf Mobilgeräten erlaubenSite-Konfiguration › Dateifreigabe und Downloadsan
Erlaube öffentliche Dateilinks (FileSettings.EnablePublicLink)Site-Konfiguration › Öffentliche Linksdeaktiviert: Wenn aktiviert, können Dateien über einen Link geteilt werden, der ohne Anmeldung funktioniert
SVGs aktivieren (ServiceSettings.EnableSVGs)Site-Konfiguration › Beiträgeauf einem neuen Server deaktiviert: Wenn aktiviert, werden SVG-Bilder inline angezeigt
Dateisuche aktivieren (ServiceSettings.EnableFileSearch)Site-Konfiguration › Dateifreigabe und DownloadsEin/Aus: Aus blendet die Dateisuche im Tab „Dateien“ der Suchergebnisse aus, sowohl in der klassischen Web-App als auch in Fusion.
Datei-Indizierung aktivieren (ElasticsearchSettings.EnableFileIndexing)Umgebung › Elasticsearch, mit eingerichtetem Elasticsearch oder OpenSearchEin/Aus: Aus stoppt die Indizierung neuer oder geänderter Dateien, aber zuvor indizierte Dateien bleiben durchsuchbar.

Antimatter scannt Uploads nicht auf Malware.

Datenschutz-Einstellungen

In Systemkonsole › Systemkonfiguration › Benutzer und Teams:

EinstellungSchlüsselStandardFunktion
Zeige E-Mail-AdressePrivacySettings.ShowEmailAddressanAus, die E-Mail-Adressen der Mitglieder sind für alle außer Administratoren ausgeblendet. Auf öffentlichen Servern sollte diese Option deaktiviert sein.
Zeige vollen NamenPrivacySettings.ShowFullNameanAus, vollständige Namen werden ausgeblendet und stattdessen Benutzernamen angezeigt.
Ignorieren, Blockieren und Nachrichten anfragen aktivierenPrivacySettings.EnableUserBlockinganSiehe unten.
Benutzern erlauben, Direktnachrichtenkanäle zu öffnen mitTeamSettings.RestrictDirectMessageAny user on the Antimatter serverOder Jedes Mitglied des Teams: nur Personen, die einer Community angehören.

Ignorieren, Blockieren und Nachrichten anfragen

Wenn Ignorieren, Blockieren und Nachrichten anfragen aktivieren eingeschaltet ist (Standard), können Personen sich gegenseitig ignorieren und blockieren. Sie können außerdem festlegen, ob Direktnachrichten von unbekannten Personen normal zugestellt, als Nachrichten anfragen geparkt oder direkt abgelehnt werden. Eine abgelehnte Person kann keine Direktnachricht oder Gruppennachricht mit ihnen starten oder in einer noch nicht akzeptierten Direktnachricht schreiben. Diese Einstellungen können pro Community unterschiedlich sein; die restriktivste Einstellung der gemeinsamen Communities setzt sich durch. Dies eignet sich für öffentliche Communities. In einer Arbeitsumgebung, in der Kolleginnen und Kollegen immer erreichbar sein müssen, schalten Sie diese Funktion aus (AM_PRIVACYSETTINGS_ENABLEUSERBLOCKING=false): Die Optionen für Direktnachrichten werden dann nicht mehr durchgesetzt, aber die Listen und getroffenen Entscheidungen bleiben erhalten und gelten wieder, wenn Sie die Funktion erneut aktivieren. Welche Profilinformationen die Personen einer Community sehen, wird in beiden Fällen durchgesetzt; Systemadministratoren und die Person selbst sehen immer alles.

Sitzungen und Tokens

  • Sitzungsdauer und Inaktivitäts-Timeout: siehe Anmeldung und Konten. Kürzere Sitzungen bedeuten, dass ein verlorener Laptop oder Telefon nur für eine kürzere Zeit angemeldet bleibt.
  • Persönliche Zugriffs-Token aktivieren (ServiceSettings.EnableUserAccessTokens, aus) ermöglicht es Benutzern, API-Tokens zu erstellen; Maximale Gültigkeitsdauer für persönliche Zugriffstokens (Tage) begrenzt deren Lebensdauer. Beide Optionen finden sich unter Systemkonsole › Integrationen › Integrationsverwaltung.
  • Um alle Benutzer gleichzeitig abzumelden, beispielsweise nach einem vermuteten Sicherheitsvorfall: Alle Sitzungen zurückziehen unter Systemkonsole › Benutzerverwaltung › Benutzer.
  • In der Antimatter-Oberfläche werden Personen bei einer neuen Anmeldung an ihrem eigenen Konto gewarnt, solange sie verbunden sind, und können diese Anmeldung selbst beenden (siehe Wo Sie angemeldet sind). Systemadministratoren werden über die Anmeldungen anderer Personen nicht informiert.

Verbindungen zu externen Diensten

Antimatter kontaktiert keine von Mattermost, Inc. betriebenen Dienste. Es werden keine Telemetrie-Daten, Crash-Reports oder Sicherheitsaktualisierungsprüfungen gesendet und keine Produktmitteilungen abgerufen. Eine Konfiguration, die von Mattermost übernommen wurde und noch einen der Dienste von Mattermost (seine Push-Dienste, seinen App-Marktpl, seine Mitteilungen oder seinen STUN-Server für Anrufe) nennt, führt nicht dazu, dass der Server diese kontaktiert: Diese Adressen werden ignoriert.

Der Server und die Apps verbinden sich mit anderen externen Diensten nur für die Funktionen, die diese benötigen, und mit den Diensten, die Sie konfigurieren:

FunktionKontakteStandardmäßig
Anrufe: Ermittlung öffentlicher Adressen mit STUN. Der Server und jede Person, die einem Anruf beitritt, senden eine Anfrage, die dem STUN-Server ihre IP-Adresse und ihren Port anzeigt.Der öffentliche STUN-Server von Cloudflare, stun.cloudflare.comaktiv, während die App Anrufe aktiviert ist. Um dies zu ändern, siehe Anrufe.
Link-Vorschauen: Der Server ruft die in Nachrichten verlinkten Seiten ab (Aktiviere die Vorschau von Website-Links, ServiceSettings.EnableLinkPreviews)die Websites, die Personen verlinkenaktiv. Deaktivieren mit AM_SERVICESETTINGS_ENABLELINKPREVIEWS=false.
Push-Benachrichtigungen an die mobile Appeigener Push-Proxy (Push-Benachrichtigungen)deaktiviert, bis die Adresse festgelegt wird
der Remote-App-Store (PluginSettings.EnableRemoteMarketplace)die von Ihnen festgelegte Marktplatz-URLdeaktiviert, keine Adresse
E-Maileigener SMTP-Serverder Standardserver ist localhost
Modellverbindungen (Umformulierung, Zusammenfassungen, Übersetzung, Vorlesen, Agenten und Apps), eigene Modellverbindungen von Community-Administratorendie KI-Anbieter, die in Systemkonsole › KI › Modellverbindungen oder in den Einstellungen einer Community hinzugefügt wurden (KI)keine, bis jemand eine hinzufügt
Single Sign-On, KI-Dienste der KI-Chat-App, Spracherkennung und Übersetzung, ausgehende Webhooks sowie Apps wie Mail, Kalender, GitHub, GitLab oder Jiradie konfigurierten Dienstedeaktiviert, bis sie konfiguriert werden

Standardmäßig verweigert der Server die Verbindung zu privaten und Loopback-Adressen für diese Funktionen (Link-Vorschauen, Webhooks, Apps, Verbindungen zu Community-Modellen), damit Nachrichten oder Integrationen nicht verwendet werden können, um auf Ihr internes Netzwerk zuzugreifen. Geben Sie die internen Hosts, die erreichbar sein dürfen, unter Erlaube ungesicherte interne Verbindungen zu (ServiceSettings.AllowedUntrustedInternalConnections, in Systemkonsole › Umgebung › Entwickler) an; in der Compose-Datei der Website ist dort gifs aufgeführt.

Meldung einer Sicherheitslücke

Sicherheitsprobleme vertraulich melden, wie in der Antimatter-Sicherheitsrichtlinie beschrieben, nicht in öffentlichen Issues.