Schließen Sie diese Türen, bevor sich Ihr Team bei Mattermost anmeldet
Eine frische Mattermost-Installation ist darauf eingestellt, ein Team schnell ins Gespräch zu bringen. Die Einstellungen, die Sie vor dem ersten Tag ansehen sollten, und wie Sie sie von außen beweisen.

Eine frische Mattermost-Installation ist dafür gebaut, ein Team in fünf Minuten ins Gespräch zu bringen, deshalb verdienen ein paar Einstellungen eine Entscheidung, bevor sich der erste echte Benutzer anmeldet. Das ist die Checkliste, die wir durchgehen, bevor sich ein einziger echter Benutzer anmeldet, mit den Einstellungen beim Namen und einem Weg, jede von außen zu beweisen.
Das erste Konto ist das gefährliche
Auf einem neuen Mattermost-Server wird die erste Person, die ein Konto anlegt, zum Systemadministrator. Ist der Server aus dem Internet erreichbar, bevor Sie sich angemeldet haben, kann ihn übernehmen, wer ihn zuerst findet. Scanner finden neue TLS-Zertifikate innerhalb von Minuten nach der Ausstellung, denn die Certificate-Transparency-Logs sind öffentlich, und es gibt Leute, die sie beobachten.
Die Reihenfolge zählt also: Bringen Sie den Server auf einer privaten Adresse oder hinter einer Allow-List hoch, legen Sie das Administratorkonto selbst an, und öffnen Sie ihn erst dann für die Menschen, die ihn brauchen.
Gleich danach schließen Sie die offene Registrierung. In config.json oder mit mmctl:
mmctl --local config set TeamSettings.EnableOpenServer false
mmctl --local config set TeamSettings.RestrictCreationToDomains "example.com"
Mit abgeschaltetem Open Server kommen neue Personen nur über eine Einladung oder dadurch, dass ein Administrator ihr Konto anlegt. Die Kontoerstellung auf Ihre eigene Mail-Domain zu beschränken ist ein zweites Schloss für den Fall, dass ein Einladungslink weiter reist als beabsichtigt.
Entscheiden Sie, was in einer Push-Benachrichtigung das Haus verlässt
Mobile Push ist die Einstellung, die sich die meisten nie ansehen. Kommt eine Nachricht für ein Telefon an, übergibt Mattermost eine Benachrichtigung an einen Push-Proxy, der sie an den Benachrichtigungsdienst der Telefonplattform weiterreicht. Mit der Standardeinstellung für den Inhalt reist der Text der Nachricht mit.
Für vertrauliche Teams ändern Sie das:
mmctl --local config set EmailSettings.PushNotificationContents generic_no_channel
generic_no_channel sendet «Sie haben eine neue Nachricht» und nichts weiter. Auf Editionen, die es unterstützen, ist id_loaded noch besser: Die Benachrichtigung trägt nur eine Nachrichten-ID, und das Telefon holt den Inhalt über TLS von Ihrem eigenen Server. Dieselbe Überlegung gilt für E-Mail-Benachrichtigungen: Liegt Ihr Mail-Relay außerhalb Ihrer Kontrolle, stellen Sie die E-Mail-Benachrichtigungen so ein, dass sie das Minimum senden.
Sessions, MFA und der lange Schwanz des Vertrauens
Einige Einstellungen entscheiden, wie lange ein gestohlener Laptop oder ein per Phishing erbeutetes Passwort nützlich bleibt:
mmctl --local config set ServiceSettings.EnableMultifactorAuthentication true
mmctl --local config set ServiceSettings.EnforceMultifactorAuthentication true
mmctl --local config set ServiceSettings.SessionLengthWebInHours 168
mmctl --local config set ServiceSettings.SessionLengthMobileInHours 720
mmctl --local config set ServiceSettings.SessionIdleTimeoutInMinutes 480
Die Durchsetzung von MFA hängt von Ihrer Edition ab. Das Aktivieren ist überall verfügbar und ist das Minimum. Wählen Sie Session-Längen, die Ihre Benutzer tolerieren, aber wählen Sie sie bewusst. Bots und Integrationen sollten Personal Access Tokens auf eigenen Bot-Konten verwenden, nicht das Passwort eines Menschen, damit MFA bei Menschen nie eine Integration bricht.
Schließen Sie die Seitentüren
Die meisten Kompromittierungen kommen nicht über die Anmeldeseite. Sie kommen über Funktionen, die niemand nutzt:
mmctl --local config set FileSettings.EnablePublicLink false
mmctl --local config set PluginSettings.EnableUploads false
mmctl --local config set ServiceSettings.EnableInsecureOutgoingConnections false
mmctl --local config set RateLimitSettings.Enable true
Öffentliche Dateilinks lassen jeden mit einer URL einen Anhang ohne Anmeldung abrufen. Plugin-Uploads lassen jedes Administratorkonto, auch ein kompromittiertes, beliebigen Code auf dem Server ausführen. Installieren Sie Plugins vom Dateisystem aus als Änderung, nicht aus dem Browser. Unsichere ausgehende Verbindungen erlauben es Webhooks und Link-Vorschauen, schlechte Zertifikate zu akzeptieren. Rate Limiting gibt der API etwas Widerstand gegen Password Spraying.
Prüfen Sie auch ServiceSettings.AllowCorsFrom. Es sollte leer sein, es sei denn, Sie haben eine bestimmte Webanwendung, die es braucht, und dann sollte es genau diesen Origin nennen, nie eine Wildcard.
mmctl --local spricht über einen Unix-Socket auf der Maschine selbst mit dem Server und braucht ServiceSettings.EnableLocalMode auf true. Lassen Sie den Local Mode für die Verwaltung vom Server aus eingeschaltet, und halten Sie den Shell-Zugang zu diesem Server eng, denn der Local Mode überspringt die Authentifizierung absichtlich.
Entscheiden Sie, wer ihn überhaupt erreichen kann
Ein Team-Chat wird von einer bekannten Gruppe von Menschen von einer bekannten Menge von Orten aus genutzt. Das Internet als Ganzes muss ihn nicht erreichen. Optionen, von der offensten zur am wenigsten offenen:
- Öffentlich, hinter einer Firewall, die die Netzwerke verwirft, die Ihre Scan-Logs als Quellen von Missbrauch zeigen.
- Öffentlich, beschränkt auf die Länder, aus denen Ihr Team tatsächlich arbeitet.
- Nur über Ihr VPN oder von den Adressen Ihres Büros erreichbar.
- Nur in einem privaten Netzwerk.
Die Länder- und Anbieterfilter gehören an die Firewall, nicht in Mattermost, damit unerwünschter Verkehr die Anwendung nie erreicht. Sitzen Sie hinter einem Reverse Proxy, setzen Sie ServiceSettings.TrustedProxyIPHeader, damit Mattermost die echte Client-Adresse protokolliert und begrenzt statt die Ihres Proxys.
Beweisen Sie es von außen
Eine Einstellung, die Sie geändert haben, ist eine Hypothese. Ein Test von außerhalb Ihres Netzwerks ist ein Beleg. Von einer Maschine, die nicht in Ihrem Netzwerk oder auf Ihrer Allow-List ist:
# What does the logged-out client see?
curl -s 'https://chat.example.com/api/v4/config/client?format=old' \
| jq '{EnableOpenServer, EnableSignUpWithEmail, EnableMultifactorAuthentication}'
# Is plain HTTP redirected?
curl -sI http://chat.example.com/ | head -n 3
# Does a public file link work without a session? (use a link created before you disabled them)
curl -s -o /dev/null -w '%{http_code}\n' 'https://chat.example.com/files/<id>/public?h=<hash>'
Filtern Sie nach Land oder Anbieter, testen Sie von einigen Orten aus: einer Maschine in einem erlaubten Land, einer in einem gesperrten Land, einer im Adressbereich eines Cloud-Anbieters. Tun Sie das nach jeder Änderung an der Policy, nicht einmal bei der Installation. Firewall-Regeln driften, und eine Regel, die in die offene Richtung falsch ist, löst keinen Alarm aus.
Stellen Sie dann die wichtigen Werte unter Monitoring. Ein nächtlicher Job, der mmctl config get für die obigen Schlüssel liest und sie mit den von Ihnen gewählten Werten vergleicht, sagt Ihnen an dem Tag Bescheid, an dem jemand in der System Console den falschen Schalter anklickt.
Upgrades sind Teil des Hardenings
Prüfen Sie vor einem Upgrade, dass Ihre Plugins die Zielversion unterstützen. Halten Sie Upgrades auf der Release-Linie, die Sie beabsichtigt haben: Ein «upgrade to latest» aus einem Paket oder Container-Tag kann Sie auf einen anderen Branch bringen, als Sie geplant hatten.
Die kurze Checkliste
- Administrator angelegt, bevor der Server erreichbar ist.
- Open Server aus, Kontoerstellung auf Ihre Domain beschränkt.
- Inhalt der Push-Benachrichtigungen auf generisch oder nur ID reduziert.
- MFA aktiviert, durchgesetzt, wo Ihre Edition es erlaubt, vernünftige Session-Längen.
- Öffentliche Links, Plugin-Uploads und unsichere ausgehende Verbindungen aus. Rate Limiting an.
- Exposition im Netzwerk bewusst gewählt und an der Firewall durchgesetzt.
- Jede Einstellung von außen bewiesen und auf Drift überwacht.
Wir betreiben Mattermost auf diese Weise für unsere Kunden auf dedizierten Instanzen in unseren eigenen Rechenzentren. Wenn Sie ein zweites Paar Augen auf Ihre möchten, helfen wir gern.
Related
Verwandt: Managed team chat auf Mattermost · Managed Request Tracker mit Partner Bridges · Managed Source Control auf GitLab
Veröffentlicht am 25. September 2026.
Alle Notizen aus der Praxis