Sécurité

Une liste de contrôle pour durcir un serveur Antimatter : ce qu'il faut exposer, les limites et les paramètres de confidentialité à examiner, les services externes auxquels le serveur se connecte et comment signaler un problème de sécurité.

Ce qu'il faut exposer

PortServiceExposition
443/tcp, 443/udp, 80/tcpVotre proxy HTTPS (Caddy ou nginx)Public : c'est ainsi que les utilisateurs accèdent à Antimatter.
8443/udp et 8443/tcpMédias des appelsPublic, si les utilisateurs utilisent les appels depuis l'extérieur de votre réseau.
8065/tcpServeur web d'AntimatterUniquement vers le proxy : publiez-le sur 127.0.0.1 (HTTP_PORT=127.0.0.1:8065).
8067/tcpMétriquesRéseau privé uniquement, lorsqu'il est activé. Aucune connexion.
8074/tcp et udpGossip du clusterUniquement entre les nœuds du cluster.
5432, 9000, 8080, 8066PostgreSQL, stockage de fichiers, service GIF, proxy de notifications pushJamais. Les fichiers compose les maintiennent sur des réseaux internes sans port publié.

Le fichier compose du site exécute également chaque conteneur avec no-new-privileges, exécute Antimatter en tant qu'utilisateur non privilégié sur une image distroless et exécute le service GIF avec un système de fichiers en lecture seule. La base de données, le stockage et le service GIF sont situés sur un réseau sans accès à Internet.

Liste de contrôle après l'installation

  1. Créez le premier compte administrateur avant que quiconque ne puisse accéder au serveur (Installation).
  2. Servez Antimatter uniquement via HTTPS et définissez l'URL du site sur l'adresse https:// (Domaine et HTTPS).
  3. Gardez .env, config.json et les clés TLS lisibles uniquement par root (ou l'utilisateur du serveur) : chmod 600 .env.
  4. Décidez qui peut créer des comptes, laissez Activer le mode serveur ouvert désactivé sauf si la communauté est publique, et activez Imposer la vérification de l'adresse e‑mail une fois que l'envoi d'e-mails fonctionne (Connexion et comptes).
  5. Activez l'authentification multifacteur et imposez-la au moins pour les comptes des administrateurs, ou utilisez celle de votre fournisseur d'identité.
  6. Examinez les connexions externes ci-dessous, en particulier le serveur STUN utilisé par défaut par les appels.
  7. Avant d'ajouter des connexions de modèles, définissez la clé de chiffrement IA (AM_AI_ENCRYPTION_KEY) et conservez une copie séparée des sauvegardes de la base de données (IA).
  8. Effectuez des sauvegardes et testez une restauration (Sauvegardes et mises à niveau).
  9. Gardez les images ou les paquets à jour : les correctifs de sécurité arrivent avec les nouvelles versions.

Limitation de débit

Le serveur peut limiter le nombre de requêtes API effectuées par chaque client. Cette fonction est désactivée par défaut. Dans Console système › Environnement › Limitation de débit :

ParamètreParamètreValeur par défaut
Limiter l'accès aux APIRateLimitSettings.EnableDésactivé
Nombre maximum de requêtes par secondeRateLimitSettings.PerSec10
Limite maximale de dépassementRateLimitSettings.MaxBurst100
Taille du stockage en mémoireRateLimitSettings.MemoryStoreSize10 000 clients suivis
Adapter la limite de fréquence en fonction de l'adresse distanteRateLimitSettings.VaryByRemoteAddractivé
Faire varier la limitation de débit par utilisateurRateLimitSettings.VaryByUserDésactivé
Faire varier les limites de fréquence par l’en-tête HTRateLimitSettings.VaryByHeadervide

Derrière un proxy, les limites par adresse ne fonctionnent que si le serveur connaît l'adresse de chaque client (ServiceSettings.TrustedProxyIPHeader et ServiceSettings.TrustedProxyIPs, voir Adresses des clients derrière un proxy). Sinon, toutes les requêtes semblent provenir du proxy, et tout le monde partage une seule limite. Il en va de même pour le filtrage par IP et pour les adresses dans les journaux d'audit.

Les tentatives de connexion sont limitées séparément : Nombre maximum de tentatives de connexion (10) verrouille un compte après ce nombre de mots de passe incorrects.

Filtrage par IP

Console système › Configuration du site › Filtrage IP limite l'accès au serveur par adresse IP, avec des règles d'autorisation et de refus (une adresse ou une plage CIDR chacune). Avec Activer le filtrage IP activé, les personnes dont l'adresse correspond à une règle de refus, ou à aucune règle d'autorisation lorsque des règles d'autorisation existent, ne peuvent pas accéder au serveur. La page refuse les règles qui bloqueraient votre propre adresse. Derrière un proxy, configurez d'abord les adresses des clients (Adresses des clients derrière un proxy) : sinon, toutes les requêtes semblent provenir du proxy.

Téléversements et partage de fichiers

ParamètreOùValeur par défaut
Taille maximale de fichier (FileSettings.MaxFileSize)Environnement › Stockage de fichiers100 Mo. Maintenez la limite de taille des requêtes du proxy au moins à ce niveau.
Taille maximale de la charge utile (octets) (ServiceSettings.MaximumPayloadSizeBytes)Environnement › Serveur Web300 000 : la plus grande requête API hors téléversements de fichiers
Autoriser le partage de fichiers (FileSettings.EnableFileAttachments)Configuration du site › Partage et téléchargement de fichiersactivé
Autoriser l'envoi de fichiers sur mobile, Autoriser les téléchargements de fichiers sur mobileConfiguration du site › Partage et téléchargement de fichiersactivé
Activer les liens publics pour les fichiers (FileSettings.EnablePublicLink)Configuration du site › Liens publicsdésactivé : lorsqu'activé, les personnes peuvent partager un fichier avec un lien qui fonctionne sans connexion
Activer les SVGs (ServiceSettings.EnableSVGs)Configuration du site › Messagesdésactivé sur un nouveau serveur : lorsqu'activé, les images SVG sont affichées en ligne

Antimatter ne scanne pas les téléversements à la recherche de logiciels malveillants.

Paramètres de confidentialité

Dans Console système › Configuration du site › Utilisateurs et équipes :

ParamètreParamètreValeur par défautFonction
Afficher l'adresse e-mailPrivacySettings.ShowEmailAddressactivéDésactivé, les adresses e-mail des membres sont masquées pour tout le monde sauf les administrateurs. Désactivez cette option sur les serveurs publics.
Afficher le nom completPrivacySettings.ShowFullNameactivéDésactivé, les noms complets sont masqués et remplacés par les noms d'utilisateur.
Activer l’ignorance, le blocage et les demandes de messagePrivacySettings.EnableUserBlockingactivéVoir ci-dessous.
Permettre aux utilisateurs d'ouvrir des canaux de messages personnels avecTeamSettings.RestrictDirectMessageTout utilisateur du serveur AntimatterOu Tous les membres de l’équipe : uniquement les personnes qui partagent une communauté.

Ignorer, bloquer et demandes de message

Lorsque Activer l’ignorance, le blocage et les demandes de message est activé (par défaut), les utilisateurs peuvent s’ignorer et se bloquer mutuellement, et choisir de recevoir les messages personnels des personnes qu’ils ne connaissent pas en tant que demandes de message, qui ne déclenchent aucune notification tant qu’elles ne sont pas acceptées. Cette option convient aux communautés publiques. Dans un environnement de travail où les collègues doivent toujours pouvoir se joindre, désactivez-la (AM_PRIVACYSETTINGS_ENABLEUSERBLOCKING=false) : aucune de ces règles n’est alors appliquée, mais les listes et les choix effectués par les utilisateurs sont conservés et réappliqués si vous réactivez l’option.

Sessions et jetons

  • Durée des sessions et délai d'inactivité : voir Connexion et comptes. Des sessions plus courtes signifient qu'un ordinateur portable ou un téléphone perdu reste connecté pendant une durée plus courte.
  • Activer les jetons d'accès personnel (ServiceSettings.EnableUserAccessTokens, désactivé) permet aux utilisateurs de créer des jetons API ; Durée de validité maximale des jetons d’accès personnels (jours) limite leur durée de vie. Les deux options se trouvent dans Console système › Intégrations › Gestion des intégrations.
  • Pour déconnecter tout le monde d'un coup, par exemple après une violation de sécurité présumée : Révoquer toutes les sessions dans Console système › Gestion des utilisateurs › Utilisateurs.

Connexions aux services externes

Antimatter ne contacte aucun service exploité par Mattermost, Inc. Il n'envoie aucune télémétrie, aucun rapport de plantage ni aucune vérification de mise à jour de sécurité, et ne récupère aucun avis produit. Une configuration importée de Mattermost qui mentionne encore l'un des services de Mattermost (ses services de notification push, son marché d'applications, ses avis ou son serveur STUN pour les appels) ne fait pas en sorte que le serveur les contacte : ces adresses sont ignorées.

Le serveur et les applications ne se connectent à d'autres services externes que pour les fonctionnalités qui en ont besoin, et aux services que vous configurez :

FonctionnalitéContactsPar défaut
Appels : recherche d'adresses publiques avec STUN. Le serveur et chaque personne qui rejoint un appel envoient une requête, qui montre au serveur STUN leur adresse IP et leur port.Le serveur STUN public de Cloudflare, stun.cloudflare.comactivé, lorsque l'application Appels est activée. Pour le modifier, voir Appels.
Aperçus de liens : le serveur récupère les pages liées dans les messages (Activer l'aperçu des liens , ServiceSettings.EnableLinkPreviews)les sites web auxquels les utilisateurs font référenceactivé. Désactivez-le avec AM_SERVICESETTINGS_ENABLELINKPREVIEWS=false.
Notifications push vers l'application mobilevotre propre proxy push (Notifications push)désactivé jusqu'à ce que vous définissiez son adresse
La marketplace d'applications distantes (PluginSettings.EnableRemoteMarketplace)l’URL du marché que vous avez définiedésactivé, et aucune adresse
E-mailvotre serveur SMTPle serveur par défaut est localhost
les connexions aux modèles (réécriture, résumés, traduction, lecture à voix haute et applications), ainsi que les connexions aux modèles des administrateurs de la communautéles fournisseurs d’IA ajoutés dans Console système › IA › Connexions aux modèles ou dans les paramètres d’une communauté (IA)aucun, tant que personne n’en ajoute
l’authentification unique, les services d’IA de l’application Agents, la transcription vocale et la traduction, les webhooks sortants, ainsi que des applications telles que Mail, Calendar, GitHub, GitLab ou Jirales services que vous configurezdésactivé jusqu'à ce que vous les configuriez

Par défaut, le serveur refuse de se connecter aux adresses privées et de boucle locale pour ces éléments (aperçus de liens, webhooks, applications, connexions aux modèles de la communauté), afin qu’un message ou une intégration ne puisse pas être utilisé pour accéder à votre réseau interne. Listez les hôtes internes auxquels il est autorisé de se connecter dans Autoriser les connexions internes non approuvées à (ServiceSettings.AllowedUntrustedInternalConnections, dans Console système › Environnement › Développeur) ; le fichier de composition du site liste gifs à cet endroit.

Signaler une vulnérabilité

Signalez les problèmes de sécurité de manière privée, comme expliqué dans la politique de sécurité d'Antimatter, et non dans des problèmes publics.