Μετάβαση στο περιεχόμενο
EuroVPSEuroVPS
Περιοχή πελατών

Κλείστε αυτές τις πόρτες πριν η ομάδα σας συνδεθεί στο Mattermost

Μια φρέσκια εγκατάσταση Mattermost είναι ρυθμισμένη για να βάλει μια ομάδα γρήγορα σε συζήτηση. Οι ρυθμίσεις που πρέπει να δείτε πριν την πρώτη μέρα, και πώς τις αποδεικνύετε από έξω.

Από EuroVPS Engineering

5 λεπτά ανάγνωσης
Close these doors before your team logs into Mattermost

Μια φρέσκια εγκατάσταση Mattermost είναι φτιαγμένη για να βάλει μια ομάδα σε συζήτηση μέσα σε πέντε λεπτά, οπότε μερικές ρυθμίσεις αξίζουν μια απόφαση πριν συνδεθεί ο πρώτος πραγματικός χρήστης. Αυτή είναι η λίστα ελέγχου που περνάμε πριν συνδεθεί ένας και μόνο πραγματικός χρήστης, με τις ρυθμίσεις ονομαστικά και έναν τρόπο να αποδείξετε καθεμία από έξω.

Ο πρώτος λογαριασμός είναι ο επικίνδυνος

Σε έναν νέο Mattermost server, το πρώτο άτομο που δημιουργεί λογαριασμό γίνεται διαχειριστής συστήματος. Αν ο server είναι προσβάσιμος από το internet πριν συνδεθείτε εσείς, όποιος τον βρει πρώτος μπορεί να τον πάρει. Οι scanners βρίσκουν νέα πιστοποιητικά TLS μέσα σε λεπτά από την έκδοσή τους, γιατί τα logs certificate transparency είναι δημόσια και υπάρχουν άνθρωποι που τα παρακολουθούν.

Άρα η σειρά μετράει: σηκώστε τον server σε ιδιωτική διεύθυνση ή πίσω από μια allow list, δημιουργήστε εσείς τον λογαριασμό διαχειριστή, και μόνο τότε ανοίξτε τον στους ανθρώπους που τον χρειάζονται.

Αμέσως μετά, κλείστε την ανοιχτή εγγραφή. Στο config.json ή με το mmctl:

mmctl --local config set TeamSettings.EnableOpenServer false
mmctl --local config set TeamSettings.RestrictCreationToDomains "example.com"

Με τον open server απενεργοποιημένο, νέα άτομα έρχονται μόνο με πρόσκληση ή με δημιουργία του λογαριασμού τους από διαχειριστή. Ο περιορισμός της δημιουργίας στο δικό σας mail domain είναι μια δεύτερη κλειδαριά σε περίπτωση που ένας σύνδεσμος πρόσκλησης ταξιδέψει πιο μακριά απ' όσο έπρεπε.

Αποφασίστε τι φεύγει από το κτίριο μέσα σε ένα push notification

Το mobile push είναι η ρύθμιση που οι περισσότεροι δεν κοιτούν ποτέ. Όταν φτάνει μήνυμα για ένα τηλέφωνο, το Mattermost δίνει μια ειδοποίηση σε έναν push proxy, που τη μεταβιβάζει στην υπηρεσία ειδοποιήσεων της πλατφόρμας του τηλεφώνου. Με την προεπιλεγμένη ρύθμιση περιεχομένου, το κείμενο του μηνύματος ταξιδεύει μαζί.

Για εμπιστευτικές ομάδες, αλλάξτε το:

mmctl --local config set EmailSettings.PushNotificationContents generic_no_channel

Το generic_no_channel στέλνει «έχετε νέο μήνυμα» και τίποτα παραπάνω. Σε εκδόσεις που το υποστηρίζουν, το id_loaded είναι ακόμα καλύτερο: η ειδοποίηση μεταφέρει μόνο ένα ID μηνύματος, και το τηλέφωνο παίρνει το περιεχόμενο από τον δικό σας server μέσω TLS. Η ίδια λογική ισχύει για τις ειδοποιήσεις email: αν το mail relay σας είναι εκτός του ελέγχου σας, ρυθμίστε τις ειδοποιήσεις email να στέλνουν το ελάχιστο.

Sessions, MFA και η μακριά ουρά της εμπιστοσύνης

Λίγες ρυθμίσεις αποφασίζουν πόσο καιρό ένα κλεμμένο laptop ή ένας phished κωδικός παραμένουν χρήσιμα:

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

Η επιβολή του MFA εξαρτάται από την έκδοσή σας. Η ενεργοποίησή του είναι διαθέσιμη παντού και είναι το ελάχιστο. Διαλέξτε διάρκειες session που οι χρήστες σας θα ανεχτούν, αλλά διαλέξτε τις εσκεμμένα. Bots και ενοποιήσεις πρέπει να χρησιμοποιούν personal access tokens σε αποκλειστικούς λογαριασμούς bot, όχι τον κωδικό ενός ανθρώπου, ώστε το MFA στους ανθρώπους να μη σπάει ποτέ μια ενοποίηση.

Κλείστε τις πλαϊνές πόρτες

Οι περισσότερες παραβιάσεις δεν έρχονται από τη σελίδα σύνδεσης. Έρχονται από λειτουργίες που κανείς δεν χρησιμοποιεί:

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

Οι δημόσιοι σύνδεσμοι αρχείων επιτρέπουν σε οποιονδήποτε με ένα URL να κατεβάσει ένα συνημμένο χωρίς να συνδεθεί. Τα uploads plugins επιτρέπουν σε οποιονδήποτε λογαριασμό διαχειριστή, περιλαμβανομένου ενός παραβιασμένου, να τρέξει αυθαίρετο κώδικα στον server. Εγκαταστήστε plugins από το σύστημα αρχείων ως αλλαγή, όχι από τον browser. Οι μη ασφαλείς εξερχόμενες συνδέσεις επιτρέπουν σε webhooks και link previews να δέχονται κακά πιστοποιητικά. Το rate limiting δίνει στο API κάποια αντοχή σε password spraying.

Ελέγξτε επίσης το ServiceSettings.AllowCorsFrom. Πρέπει να είναι κενό εκτός αν έχετε μια συγκεκριμένη web εφαρμογή που το χρειάζεται, και τότε πρέπει να ονομάζει ακριβώς εκείνο το origin, ποτέ wildcard.

Το mmctl --local μιλά με τον server μέσω Unix socket στο ίδιο το μηχάνημα και χρειάζεται το ServiceSettings.EnableLocalMode σε true. Κρατήστε το local mode ενεργό για διαχείριση από τον server, και κρατήστε σφιχτή την πρόσβαση shell σε εκείνον τον server, γιατί το local mode παρακάμπτει τον έλεγχο ταυτότητας εκ σχεδιασμού.

Αποφασίστε ποιος μπορεί να τον φτάσει καθόλου

Ένα team chat χρησιμοποιείται από μια γνωστή ομάδα ανθρώπων από ένα γνωστό σύνολο τοποθεσιών. Το internet στο σύνολό του δεν χρειάζεται να το φτάνει. Επιλογές, από την πιο ανοιχτή στη λιγότερο ανοιχτή:

  1. Δημόσιο, πίσω από firewall που απορρίπτει τα δίκτυα που τα logs σάρωσης δείχνουν ως πηγές κατάχρησης.
  2. Δημόσιο, περιορισμένο στις χώρες από τις οποίες πραγματικά δουλεύει η ομάδα σας.
  3. Προσβάσιμο μόνο μέσω του VPN σας ή από τις διευθύνσεις του γραφείου σας.
  4. Μόνο σε ιδιωτικό δίκτυο.

Τα φίλτρα χώρας και παρόχου ανήκουν στο firewall, όχι μέσα στο Mattermost, ώστε η ανεπιθύμητη κίνηση να μη φτάνει ποτέ στην εφαρμογή. Αν βρίσκεστε πίσω από reverse proxy, ορίστε το ServiceSettings.TrustedProxyIPHeader ώστε το Mattermost να καταγράφει και να περιορίζει την πραγματική διεύθυνση του client αντί για αυτήν του proxy σας.

Αποδείξτε το από έξω

Μια ρύθμιση που αλλάξατε είναι υπόθεση. Μια δοκιμή από έξω από το δίκτυό σας είναι τεκμήριο. Από ένα μηχάνημα που δεν είναι στο δίκτυο ή στην allow list σας:

# 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>'

Αν φιλτράρετε ανά χώρα ή πάροχο, δοκιμάστε από μερικά σημεία: ένα μηχάνημα σε επιτρεπόμενη χώρα, ένα σε αποκλεισμένη χώρα, ένα σε εύρος διευθύνσεων παρόχου cloud. Κάντε το μετά από κάθε αλλαγή στην πολιτική, όχι μία φορά στην εγκατάσταση. Οι κανόνες firewall ξεφεύγουν, και ένας κανόνας που είναι λάθος προς την ανοιχτή κατεύθυνση δεν σηκώνει συναγερμό.

Μετά βάλτε τις σημαντικές τιμές υπό παρακολούθηση. Μια νυχτερινή εργασία που διαβάζει το mmctl config get για τα παραπάνω keys και τα συγκρίνει με τις τιμές που επιλέξατε θα σας πει τη μέρα που κάποιος θα πατήσει λάθος διακόπτη στο System Console.

Οι αναβαθμίσεις είναι μέρος της θωράκισης

Πριν αναβαθμίσετε, ελέγξτε ότι τα plugins σας υποστηρίζουν την έκδοση-στόχο. Κρατήστε τις αναβαθμίσεις στη γραμμή έκδοσης που σκοπεύατε: ένα «upgrade to latest» από πακέτο ή container tag μπορεί να σας μετακινήσει σε διαφορετικό branch από αυτό που σχεδιάζατε.

Η σύντομη λίστα ελέγχου

  • Διαχειριστής δημιουργημένος πριν ο server γίνει προσβάσιμος.
  • Open server απενεργοποιημένος, δημιουργία περιορισμένη στο domain σας.
  • Περιεχόμενο push notifications μειωμένο σε generic ή μόνο ID.
  • MFA ενεργοποιημένο, επιβεβλημένο όπου η έκδοσή σας το επιτρέπει, λογικές διάρκειες session.
  • Δημόσιοι σύνδεσμοι, uploads plugins και μη ασφαλείς εξερχόμενες συνδέσεις απενεργοποιημένα. Rate limiting ενεργό.
  • Έκθεση στο δίκτυο επιλεγμένη εσκεμμένα και επιβεβλημένη στο firewall.
  • Κάθε ρύθμιση αποδεδειγμένη από έξω, και παρακολουθούμενη για drift.

Τρέχουμε το Mattermost έτσι για τους πελάτες μας σε αποκλειστικές εγκαταστάσεις στα δικά μας datacenters. Αν θέλετε ένα δεύτερο ζευγάρι μάτια στο δικό σας, θα χαρούμε να βοηθήσουμε.

Μιλήστε με έναν μηχανικό

Related

Σχετικά: Managed team chat σε Mattermost · Managed Request Tracker με γέφυρες συνεργατών · Managed source control σε GitLab

Δημοσιεύθηκε 25 Σεπτεμβρίου 2026.

Όλες οι σημειώσεις