Seguridad

Una lista de verificación para endurecer un servidor de Antimatter: qué exponer, los límites y ajustes de privacidad que deben revisarse, los servicios externos con los que se comunica el servidor y cómo reportar un problema de seguridad.

Qué exponer

PuertoServicioExposición
443/tcp, 443/udp, 80/tcpTu proxy HTTPS (Caddy o nginx)Público: así es como las personas acceden a Antimatter.
8443/udp y 8443/tcpMedios de llamadasPúblico, si las personas usan llamadas desde fuera de tu red.
8065/tcpServidor web de AntimatterSolo para el proxy: publícalo en 127.0.0.1 (HTTP_PORT=127.0.0.1:8065).
8067/tcpMétricasSolo en la red privada, cuando está habilitado. Sin inicio de sesión.
8074/tcp y udpChisme del clústerSolo entre nodos del clúster.
5432, 9000, 8080, 8066PostgreSQL, almacenamiento de archivos, servicio de GIF, proxy de pushNunca. Los archivos de compose los mantienen en redes internas sin puerto publicado.

El archivo de compose del sitio también ejecuta cada contenedor con no-new-privileges, ejecuta Antimatter como un usuario sin privilegios en una imagen distroless y ejecuta el servicio de GIF con un sistema de archivos de solo lectura. La base de datos, el almacenamiento y el servicio de GIF se encuentran en una red sin acceso a Internet.

Lista de verificación después de la instalación

  1. Crea la primera cuenta de administrador antes de que nadie más pueda acceder al servidor (Instalación).
  2. Sirve Antimatter solo a través de HTTPS y establece la URL del sitio con la dirección https:// (Dominio y HTTPS).
  3. Mantén .env, config.json y las claves TLS legibles solo por root (o el usuario del servidor): chmod 600 .env.
  4. Decide quién puede crear cuentas, mantén Habilitar Servidor Abierto desactivado a menos que la comunidad sea pública, y activa Require verificación de correo electrónico una vez que el correo funcione (Inicio de sesión y cuentas).
  5. Activa la autenticación multifactor y, al menos, exígela para las cuentas de administradores, o utiliza la de tu proveedor de identidad.
  6. Revisa las conexiones externas a continuación, en particular el servidor STUN que las Llamadas usan de forma predeterminada.
  7. Antes de añadir conexiones de modelos, configura la clave de cifrado de IA (AM_AI_ENCRYPTION_KEY) y guarda una copia separada de las copias de seguridad de la base de datos (IA).
  8. Realiza copias de seguridad y prueba una restauración (Copias de seguridad y actualizaciones).
  9. Mantén las imágenes o los paquetes actualizados: las correcciones de seguridad llegan con las nuevas versiones.

Limitación de tasa

El servidor puede limitar la cantidad de solicitudes de API que realiza cada cliente. Está desactivado de forma predeterminada. En Consola de sistema › Entorno › Límite de Velocidad:

AjusteClavePredeterminado
Habilitar el limitador de velocidadRateLimitSettings.Enabledesactivado
Máximo de consultas por segundoRateLimitSettings.PerSec10
Máximo Tamaño de la RáfagaRateLimitSettings.MaxBurst100
Tamaño de memoria de almacenamientoRateLimitSettings.MemoryStoreSize10000 clientes rastreados
Variar el límite de velocidad por dirección remotaRateLimitSettings.VaryByRemoteAddractivado
Variar límite de velocidad por usuarioRateLimitSettings.VaryByUserdesactivado
Variar el límite de velocidad según el encabezado HTTPRateLimitSettings.VaryByHeadervacío

Detrás de un proxy, las limitaciones por dirección solo funcionan si el servidor conoce la dirección de cada cliente (ServiceSettings.TrustedProxyIPHeader y ServiceSettings.TrustedProxyIPs, ver Direcciones de clientes detrás de un proxy). De lo contrario, todas las solicitudes parecen provenir del proxy y todos comparten un único límite. Lo mismo aplica al filtrado por IP y a las direcciones en los registros de auditoría.

Los intentos de inicio de sesión se limitan por separado: Máximo de intentos de conexión (10) bloquea una cuenta después de ese número de contraseñas incorrectas.

Filtrado por IP

Consola de sistema › Configuración del Sitio › Filtrado de IP limita el acceso al servidor por dirección IP, con reglas de permitir y denegar (una dirección o un rango CIDR cada una). Con Activar filtrado de IP activado, las personas cuya dirección coincida con una regla de denegar, o que no coincida con ninguna regla de permitir cuando existen reglas de permitir, no pueden acceder al servidor. La página rechaza las reglas que bloquearían tu propia dirección. Detrás de un proxy, configura primero las direcciones de los clientes (Direcciones de clientes detrás de un proxy): de lo contrario, todas las solicitudes parecen provenir del proxy.

Subidas y compartición de archivos

AjusteDóndePredeterminado
Tamaño máximo de los Archivos (FileSettings.MaxFileSize)Entorno › Almacenamiento de archivos100 MB. Mantenga el límite de tamaño de solicitud del proxy al menos en este valor.
Tamaño máximo de la carga (bytes) (ServiceSettings.MaximumPayloadSizeBytes)Entorno › Servidor web300000: la solicitud de API más grande, excluyendo las subidas de archivos
Permitir el Intercambio de Archivos (FileSettings.EnableFileAttachments)Configuración del sitio › Compartición y descargas de archivosactivado
Permitir la carga de Archivos en el Móvil, Permitir la descarga de Archivos en el MóvilConfiguración del sitio › Compartición y descargas de archivosactivado
Habilitar los enlaces para Archivos Públicos (FileSettings.EnablePublicLink)Configuración del sitio › Enlaces públicosdesactivado: cuando está activado, las personas pueden compartir un archivo mediante un enlace que funciona sin iniciar sesión
Habilitar SVG (ServiceSettings.EnableSVGs)Configuración del sitio › Publicacionesdesactivado en un servidor nuevo: cuando está activado, las imágenes SVG se muestran en línea
Activar búsqueda de archivos (ServiceSettings.EnableFileSearch)Configuración del sitio › Compartición y descargas de archivosactivado: desactivado oculta la búsqueda de archivos en la pestaña Archivos de los resultados de búsqueda, tanto en la aplicación web clásica como en Fusion
Activar indexación de archivos (ElasticsearchSettings.EnableFileIndexing)Entorno › Elasticsearch, con Elasticsearch u OpenSearch configuradosactivado: desactivado detiene la indexación de archivos nuevos o modificados, pero los archivos indexados anteriormente siguen siendo buscables

Antimatter no escanea las subidas en busca de malware.

Configuraciones de privacidad

En Consola de sistema › Configuración del sitio › Usuarios y equipos:

AjusteClavePredeterminadoQué hace
Mostrar dirección de correo electrónicoPrivacySettings.ShowEmailAddressactivadoSi está desactivado, las direcciones de correo electrónico de los miembros se ocultan a todos, excepto a los administradores. Desactívalo en servidores públicos.
Mostrar nombre completoPrivacySettings.ShowFullNameactivadoSi está desactivado, los nombres completos se ocultan y se muestran los nombres de usuario en su lugar.
Activar ignorar, bloquear y solicitudes de mensajePrivacySettings.EnableUserBlockingactivadoVéase más abajo.
Habilitar a los usuarios tener canales de Mensajes Directos conTeamSettings.RestrictDirectMessageCualquier usuario del servidor AntimatterO Cualquier miembro del equipo: solo las personas que comparten una comunidad.

Ignorar, bloquear y solicitudes de mensaje

Con Activar ignorar, bloquear y solicitudes de mensaje activado (valor predeterminado), las personas pueden ignorarse y bloquearse mutuamente, y elegir si los mensajes directos de personas desconocidas llegan normalmente, quedan a la espera como solicitudes de mensaje o se rechazan de plano (una persona rechazada no puede iniciar un mensaje directo o de grupo con ella, ni escribir en uno que aún no haya sido aceptado); cada opción puede variar según la comunidad, y prevalece la más restrictiva de las comunidades que comparten las personas. Esto es adecuado para comunidades públicas. En un entorno laboral donde los colegas deben poder comunicarse siempre, desactívelo (AM_PRIVACYSETTINGS_ENABLEUSERBLOCKING=false): ya no se aplican estas opciones de mensajes directos, pero se conservan las listas y las elecciones realizadas por las personas, y vuelven a aplicarse si se vuelve a activar. Los detalles del perfil que ve cada comunidad se aplican en ambos casos; los administradores del sistema y la propia persona siempre ven todo.

Sesiones y tokens

  • Duración de las sesiones y tiempo de espera por inactividad: véase Inicio de sesión y cuentas. Sesiones más cortas significan que un portátil o teléfono perdido permanecerá conectado durante menos tiempo.
  • Habilitar Tokens de Acceso Personales (ServiceSettings.EnableUserAccessTokens, desactivado) permite a las personas crear tokens de API; Vida útil máxima de token de acceso personal (días) los limita. Ambos se encuentran en Consola de sistema › Integraciones › Gestión de Integraciones.
  • Para cerrar la sesión de todos a la vez, por ejemplo tras una presunta violación de seguridad: Revocar todas las sesiones en Consola de sistema › Gestión de usuarios › Usuarios.
  • En la interfaz de Antimatter, se avisa a las personas de un nuevo inicio de sesión en su propia cuenta mientras están conectadas, y pueden desconectarlo ellas mismas (consulte Dónde ha iniciado sesión). Los administradores del sistema no reciben notificaciones de los inicios de sesión de otras personas.

Conexiones con servicios externos

Antimatter no contacta ningún servicio operado por Mattermost, Inc. No envía telemetría, informes de errores ni comprobaciones de actualizaciones de seguridad, y no recupera avisos de producto. Una configuración importada de Mattermost que aún nombre uno de los servicios de Mattermost (sus servicios de notificaciones push, su mercado de aplicaciones, sus avisos o su servidor STUN para llamadas) no hace que el servidor los contacte: esas direcciones se ignoran.

El servidor y las aplicaciones se conectan a otros servicios externos solo para las funciones que los requieren, y a los servicios que configures:

FunciónContactosPor defecto
Llamadas: búsqueda de direcciones públicas con STUN. El servidor y cada persona que se une a una llamada envían una solicitud, que muestra al servidor STUN su dirección IP y puerto.El servidor STUN público de Cloudflare, stun.cloudflare.comactivado, mientras la app de Llamadas esté habilitada. Para cambiarlo, consulta Llamadas.
Vista previa de enlaces: el servidor recupera las páginas enlazadas en los mensajes (Habilitar la vista previa de los enlaces a sitios web, ServiceSettings.EnableLinkPreviews)los sitios web a los que las personas enlazanactivado. Desactívalo con AM_SERVICESETTINGS_ENABLELINKPREVIEWS=false.
Notificaciones push a la app móviltu propio proxy de push (Notificaciones push)desactivado hasta que configures su dirección
El marketplace de apps remoto (PluginSettings.EnableRemoteMarketplace)la URL del marketplace que configuresdesactivado, y sin dirección
Correo electrónicotu servidor SMTPel servidor predeterminado es localhost
Conexiones de modelos (reescritura, resúmenes, traducción, lectura en voz alta, agentes y aplicaciones), conexiones de modelos propias de los administradores de la comunidadlos proveedores de IA añadidos en Consola de sistema › IA › Conexiones de modelos o en la configuración de una comunidad (IA)ninguna hasta que alguien añada una
Inicio de sesión único, los servicios de IA de la aplicación de chat con IA, la transcripción de voz a texto y la traducción, los webhooks salientes y aplicaciones como Mail, Calendario, GitHub, GitLab o Jiralos servicios que configuresdesactivado hasta que los configures

Por defecto, el servidor se niega a conectarse a direcciones privadas y de bucle inverso para estos (previsualización de enlaces, webhooks, aplicaciones, conexiones de modelos de la comunidad), de modo que un mensaje o una integración no pueda usarse para acceder a tu red interna. Enumera los hosts internos a los que puede acceder en Permitir conexiones internas no son de confianza (ServiceSettings.AllowedUntrustedInternalConnections, en Consola de sistema › Entorno › Desarrollo); el archivo compose del sitio lista gifs allí.

Informar sobre una vulnerabilidad

Informa sobre problemas de seguridad de forma privada, como se explica en la política de seguridad de Antimatter, y no en problemas públicos.