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
| Port | Dienst | Freigabe |
|---|---|---|
| 443/tcp, 443/udp, 80/tcp | Ihr HTTPS-Proxy (Caddy oder nginx) | Öffentlich: So erreichen die Leute Antimatter. |
| 8443/udp und 8443/tcp | Mediendaten für Anrufe | Öffentlich, wenn Anrufe von außerhalb Ihres Netzwerks genutzt werden. |
| 8065/tcp | Webserver von Antimatter | Nur für den Proxy: Veröffentlichen Sie ihn unter 127.0.0.1 (HTTP_PORT=127.0.0.1:8065). |
| 8067/tcp | Metriken | Nur im internen Netzwerk, wenn aktiviert. Keine Anmeldung erforderlich. |
| 8074/tcp und udp | Cluster-Gossip | Nur zwischen den Knoten des Clusters. |
| 5432, 9000, 8080, 8066 | PostgreSQL, Dateispeicher, GIF-Dienst, Push-Proxy | Niemals. 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
- Erstellen Sie das erste Administratorkonto, bevor jemand anderes den Server erreichen kann (Installation).
- Bereitstellen Sie Antimatter ausschließlich über HTTPS und setzen Sie die Website-URL auf die
https://-Adresse (Domain und HTTPS). - Halten Sie
.env,config.jsonund die TLS-Schlüssel nur für root (oder den Benutzer des Servers) lesbar:chmod 600 .env. - 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).
- Aktivieren Sie die Zwei-Faktor-Authentifizierung und erzwingen Sie sie mindestens für die Konten der Administratoren, oder nutzen Sie die Ihres Identitätsanbieters.
- Überprüfen Sie die externen Verbindungen unten, insbesondere den STUN-Server, den Anrufe standardmäßig verwenden.
- 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). - Erstellen Sie Backups und testen Sie eine Wiederherstellung (Backups und Upgrades).
- 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:
| Einstellung | Schlüssel | Standard |
|---|---|---|
| Aktiviere Anfragendrosselung | RateLimitSettings.Enable | aus |
| Maximale Anfragen pro Sekunde | RateLimitSettings.PerSec | 10 |
| Maximale Burst-Size | RateLimitSettings.MaxBurst | 100 |
| Speichergröße | RateLimitSettings.MemoryStoreSize | 10000 Clients werden erfasst |
| Mittels Absender-Adresse drosseln | RateLimitSettings.VaryByRemoteAddr | an |
| Anfragenbegrenzung pro Benutzer variieren | RateLimitSettings.VaryByUser | aus |
| Mittels HTTP Header drosseln | RateLimitSettings.VaryByHeader | leer |
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
| Einstellung | Wo | Standard |
|---|---|---|
Maximale Dateigröße (FileSettings.MaxFileSize) | Umgebung › Dateispeicher | 100 MB. Das Größenlimit für Anfragen des Proxys sollte mindestens so hoch sein. |
Maximale Größe der Nutzlast (Bytes) (ServiceSettings.MaximumPayloadSizeBytes) | Umgebung › Webserver | 300000: die größte API-Anfrage außer Datei-Uploads |
Dateiaustausch erlauben (FileSettings.EnableFileAttachments) | Site-Konfiguration › Dateifreigabe und Downloads | an |
| Datei-Upload auf Mobilgeräten erlauben, Datei-Download auf Mobilgeräten erlauben | Site-Konfiguration › Dateifreigabe und Downloads | an |
Erlaube öffentliche Dateilinks (FileSettings.EnablePublicLink) | Site-Konfiguration › Öffentliche Links | deaktiviert: Wenn aktiviert, können Dateien über einen Link geteilt werden, der ohne Anmeldung funktioniert |
SVGs aktivieren (ServiceSettings.EnableSVGs) | Site-Konfiguration › Beiträge | auf einem neuen Server deaktiviert: Wenn aktiviert, werden SVG-Bilder inline angezeigt |
Dateisuche aktivieren (ServiceSettings.EnableFileSearch) | Site-Konfiguration › Dateifreigabe und Downloads | Ein/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 OpenSearch | Ein/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:
| Einstellung | Schlüssel | Standard | Funktion |
|---|---|---|---|
| Zeige E-Mail-Adresse | PrivacySettings.ShowEmailAddress | an | Aus, die E-Mail-Adressen der Mitglieder sind für alle außer Administratoren ausgeblendet. Auf öffentlichen Servern sollte diese Option deaktiviert sein. |
| Zeige vollen Namen | PrivacySettings.ShowFullName | an | Aus, vollständige Namen werden ausgeblendet und stattdessen Benutzernamen angezeigt. |
| Ignorieren, Blockieren und Nachrichten anfragen aktivieren | PrivacySettings.EnableUserBlocking | an | Siehe unten. |
| Benutzern erlauben, Direktnachrichtenkanäle zu öffnen mit | TeamSettings.RestrictDirectMessage | Any user on the Antimatter server | Oder 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:
| Funktion | Kontakte | Standardmäß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.com | aktiv, 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 verlinken | aktiv. Deaktivieren mit AM_SERVICESETTINGS_ENABLELINKPREVIEWS=false. |
| Push-Benachrichtigungen an die mobile App | eigener Push-Proxy (Push-Benachrichtigungen) | deaktiviert, bis die Adresse festgelegt wird |
der Remote-App-Store (PluginSettings.EnableRemoteMarketplace) | die von Ihnen festgelegte Marktplatz-URL | deaktiviert, keine Adresse |
| eigener SMTP-Server | der Standardserver ist localhost | |
| Modellverbindungen (Umformulierung, Zusammenfassungen, Übersetzung, Vorlesen, Agenten und Apps), eigene Modellverbindungen von Community-Administratoren | die 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 Jira | die konfigurierten Dienste | deaktiviert, 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.