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
| Port | Service | Exposition |
|---|---|---|
| 443/tcp, 443/udp, 80/tcp | Votre proxy HTTPS (Caddy ou nginx) | Public : c'est ainsi que les utilisateurs accèdent à Antimatter. |
| 8443/udp et 8443/tcp | Médias des appels | Public, si les utilisateurs utilisent les appels depuis l'extérieur de votre réseau. |
| 8065/tcp | Serveur web d'Antimatter | Uniquement vers le proxy : publiez-le sur 127.0.0.1 (HTTP_PORT=127.0.0.1:8065). |
| 8067/tcp | Métriques | Réseau privé uniquement, lorsqu'il est activé. Aucune connexion. |
| 8074/tcp et udp | Gossip du cluster | Uniquement entre les nœuds du cluster. |
| 5432, 9000, 8080, 8066 | PostgreSQL, stockage de fichiers, service GIF, proxy de notifications push | Jamais. 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
- Créez le premier compte administrateur avant que quiconque ne puisse accéder au serveur (Installation).
- Servez Antimatter uniquement via HTTPS et définissez l'URL du site sur l'adresse
https://(Domaine et HTTPS). - Gardez
.env,config.jsonet les clés TLS lisibles uniquement par root (ou l'utilisateur du serveur) :chmod 600 .env. - 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).
- Activez l'authentification multifacteur et imposez-la au moins pour les comptes des administrateurs, ou utilisez celle de votre fournisseur d'identité.
- Examinez les connexions externes ci-dessous, en particulier le serveur STUN utilisé par défaut par les appels.
- 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). - Effectuez des sauvegardes et testez une restauration (Sauvegardes et mises à niveau).
- 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ètre | Paramètre | Valeur par défaut |
|---|---|---|
| Limiter l'accès aux API | RateLimitSettings.Enable | Désactivé |
| Nombre maximum de requêtes par seconde | RateLimitSettings.PerSec | 10 |
| Limite maximale de dépassement | RateLimitSettings.MaxBurst | 100 |
| Taille du stockage en mémoire | RateLimitSettings.MemoryStoreSize | 10 000 clients suivis |
| Adapter la limite de fréquence en fonction de l'adresse distante | RateLimitSettings.VaryByRemoteAddr | activé |
| Faire varier la limitation de débit par utilisateur | RateLimitSettings.VaryByUser | Désactivé |
| Faire varier les limites de fréquence par l’en-tête HT | RateLimitSettings.VaryByHeader | vide |
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ètre | Où | Valeur par défaut |
|---|---|---|
Taille maximale de fichier (FileSettings.MaxFileSize) | Environnement › Stockage de fichiers | 100 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 Web | 300 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 fichiers | activé |
| Autoriser l'envoi de fichiers sur mobile, Autoriser les téléchargements de fichiers sur mobile | Configuration du site › Partage et téléchargement de fichiers | activé |
Activer les liens publics pour les fichiers (FileSettings.EnablePublicLink) | Configuration du site › Liens publics | désactivé : lorsqu'activé, les personnes peuvent partager un fichier avec un lien qui fonctionne sans connexion |
Activer les SVGs (ServiceSettings.EnableSVGs) | Configuration du site › Messages | dé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ètre | Paramètre | Valeur par défaut | Fonction |
|---|---|---|---|
| Afficher l'adresse e-mail | PrivacySettings.ShowEmailAddress | activé | 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 complet | PrivacySettings.ShowFullName | activé | 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 message | PrivacySettings.EnableUserBlocking | activé | Voir ci-dessous. |
| Permettre aux utilisateurs d'ouvrir des canaux de messages personnels avec | TeamSettings.RestrictDirectMessage | Tout utilisateur du serveur Antimatter | Ou 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é | Contacts | Par 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.com | activé, 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érence | activé. Désactivez-le avec AM_SERVICESETTINGS_ENABLELINKPREVIEWS=false. |
| Notifications push vers l'application mobile | votre 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éfinie | désactivé, et aucune adresse |
| votre serveur SMTP | le 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 Jira | les services que vous configurez | dé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.