Segurança
Uma lista de verificação para fortalecer um servidor Antimatter: o que expor, os limites e configurações de privacidade a revisar, os serviços externos com os quais o servidor se comunica e como reportar um problema de segurança.
O que expor
| Porta | Serviço | Exposição |
|---|---|---|
| 443/tcp, 443/udp, 80/tcp | Seu proxy HTTPS (Caddy ou nginx) | Público: é assim que as pessoas acessam o Antimatter. |
| 8443/udp e 8443/tcp | Mídia de chamadas | Público, se as pessoas usarem chamadas de fora da sua rede. |
| 8065/tcp | Servidor web do Antimatter | Apenas para o proxy: publique-o em 127.0.0.1 (HTTP_PORT=127.0.0.1:8065). |
| 8067/tcp | Métricas | Apenas rede privada, quando habilitado. Sem login. |
| 8074/tcp e udp | Gossip do cluster | Apenas entre os nós do cluster. |
| 5432, 9000, 8080, 8066 | PostgreSQL, armazenamento de arquivos, serviço de GIF, proxy de push | Nunca. Os arquivos compose mantêm-nos em redes internas, sem porta publicada. |
O arquivo compose do site também executa todos os contêineres com no-new-privileges, executa o Antimatter como um usuário sem privilégios em uma imagem distroless e executa o serviço de GIF com um sistema de arquivos somente leitura. O banco de dados, o armazenamento e o serviço de GIF ficam em uma rede sem acesso à Internet.
Lista de verificação após a instalação
- Crie a primeira conta de administrador antes que qualquer outra pessoa possa acessar o servidor (Instalação).
- Sirva o Antimatter apenas via HTTPS e defina a URL do site para o endereço
https://(Domínio e HTTPS). - Mantenha
.env,config.jsone as chaves TLS legíveis apenas pela raiz (ou pelo usuário do servidor):chmod 600 .env. - Defina quem pode criar contas, mantenha Ativar Servidor Aberto desativado, a menos que a comunidade seja pública, e ative Requer Verificação de E-mail assim que o e-mail estiver funcionando (Login e contas).
- Ative a autenticação multifator e exija-a, pelo menos, para as contas de administradores, ou use a do seu provedor de identidade.
- Revise as conexões externas abaixo, em especial o servidor STUN usado por padrão nas Chamadas.
- Antes de adicionar conexões de modelos, defina a chave de criptografia da IA (
AM_AI_ENCRYPTION_KEY) e mantenha uma cópia separada dos backups do banco de dados (IA). - Faça backups e teste uma restauração (Backups e atualizações).
- Mantenha as imagens ou os pacotes atualizados: as correções de segurança chegam com as novas versões.
Limitação de taxa
O servidor pode limitar quantas requisições de API cada cliente faz. Essa opção está desativada por padrão. Em Console do Sistema › Ambiente › Limite de Velocidade:
| Configuração | Chave | Padrão |
|---|---|---|
| Ativar Limitador de Velocidade | RateLimitSettings.Enable | desativado |
| Máxima Consultas por Segundo | RateLimitSettings.PerSec | 10 |
| Máximo Tamanho Burst | RateLimitSettings.MaxBurst | 100 |
| Tamanho da Memória de Armazenamento | RateLimitSettings.MemoryStoreSize | 10000 clientes monitorados |
| Variar limite de velocidade pelo endereço remoto | RateLimitSettings.VaryByRemoteAddr | ligado |
| Variar a taxa limite pelo usuário | RateLimitSettings.VaryByUser | desativado |
| Variar o limite de velocidade pelo cabeçalho HTTP | RateLimitSettings.VaryByHeader | vazio |
Atrás de um proxy, os limites por endereço só funcionam se o servidor souber o endereço de cada cliente (ServiceSettings.TrustedProxyIPHeader e ServiceSettings.TrustedProxyIPs, veja Endereços de clientes atrás de um proxy). Caso contrário, todas as requisições parecem vir do proxy, e todos compartilham um único limite. O mesmo vale para a filtragem por IP e para os endereços nos logs de auditoria.
As tentativas de login são limitadas separadamente: Máxima Tentativas de Login (10) bloqueia uma conta após esse número de senhas incorretas.
Filtragem por IP
Console do Sistema › Configuração do Site › Filtragem de IP limita o acesso ao servidor por endereço de IP, com regras de permissão e bloqueio (cada uma contendo um endereço ou uma faixa CIDR). Com Ativar a filtragem de IP ativado, pessoas cujo endereço corresponda a uma regra de bloqueio, ou que não correspondam a nenhuma regra de permissão quando houver regras de permissão, não conseguem acessar o servidor. A página rejeita regras que bloqueariam o seu próprio endereço. Atrás de um proxy, configure os endereços dos clientes primeiro (Endereços de clientes atrás de um proxy): caso contrário, todas as requisições parecerão vir do proxy.
Envios e compartilhamento de arquivos
| Configuração | Onde | Padrão |
|---|---|---|
Tamanho Máximo do Arquivo (FileSettings.MaxFileSize) | Ambiente › Armazenamento de Arquivos | 100 MB. Mantenha o limite de tamanho de requisição do proxy pelo menos nesse valor. |
Tamanho máximo de payload (bytes) (ServiceSettings.MaximumPayloadSizeBytes) | Ambiente › Servidor Web | 300000: a maior requisição de API, exceto envios de arquivos |
Permitir Compartilhamento de Arquivos (FileSettings.EnableFileAttachments) | Configuração do Site › Compartilhamento e Downloads de Arquivos | ligado |
| Permitir Envio de Arquivos em Dispositivos Móveis, Permitir Download de Arquivos em Dispositivos Móveis | Configuração do Site › Compartilhamento e Downloads de Arquivos | ligado |
Ativar Links para Arquivos Públicos (FileSettings.EnablePublicLink) | Configuração do Site › Links Públicos | desativado: quando ativado, as pessoas podem compartilhar um arquivo com um link que funciona sem login |
Ativar SVGs (ServiceSettings.EnableSVGs) | Configuração do Site › Publicações | desativado em um novo servidor: quando ativado, imagens SVG são exibidas inline |
O Antimatter não escaneia envios em busca de malware.
Configurações de Privacidade
Em Console do Sistema › Configuração do Site › Usuários e Equipes:
| Configuração | Chave | Padrão | O que faz |
|---|---|---|---|
| Mostrar Endereços de E-mail | PrivacySettings.ShowEmailAddress | ligado | Desativado, os endereços de e-mail dos membros ficam ocultos para todos, exceto administradores. Desative em servidores públicos. |
| Mostrar nome completo | PrivacySettings.ShowFullName | ligado | Desativado, os nomes completos ficam ocultos e os nomes de usuário são exibidos em vez deles. |
| Ativar ignorar, bloquear e solicitações de mensagem | PrivacySettings.EnableUserBlocking | ligado | Veja abaixo. |
| Permitir que os usuários abram o canal de Mensagens Diretas com | TeamSettings.RestrictDirectMessage | Qualquer usuário no servidor Antimatter | Ou Qualquer membro da equipe: apenas pessoas que compartilham uma comunidade. |
Ignorar, bloquear e solicitações de mensagem
Com Ativar ignorar, bloquear e solicitações de mensagem ativado (padrão), as pessoas podem ignorar e bloquear umas às outras e podem escolher receber mensagens diretas de pessoas desconhecidas como solicitações de mensagem, que não as notificam até serem aceitas. Isso é adequado para comunidades públicas. Em um ambiente de trabalho onde os colegas devem sempre poder se comunicar, desative (AM_PRIVACYSETTINGS_ENABLEUSERBLOCKING=false): nenhuma dessas regras é mais aplicada, mas as listas e escolhas feitas pelas pessoas são mantidas e voltam a valer se você reativar a opção.
Sessões e tokens
- Duração das sessões e tempo limite de inatividade: veja Login e contas. Sessões mais curtas significam que um laptop ou celular perdido permanece conectado por menos tempo.
- Ativar Tokens de Acesso Individual (
ServiceSettings.EnableUserAccessTokens, desativado) permite que as pessoas criem tokens de API; Tempo de vida máximo do token de acesso pessoal (dias) limita esses tokens. Ambos estão em Console do Sistema › Integrações › Gerenciamento de Integração. - Para deslogar todos de uma vez, por exemplo, após uma violação suspeita: Revogar Todas Sessões em Console do Sistema › Gestão de Usuários › Usuários.
Conexões com serviços externos
O Antimatter não contata nenhum serviço operado pela Mattermost, Inc. Ele não envia telemetria, relatórios de erro ou verificações de atualização de segurança, nem busca avisos de produto. Uma configuração trazida do Mattermost que ainda nomeia um dos serviços da Mattermost (seus serviços de push, seu mercado de aplicativos, seus avisos ou seu servidor STUN para chamadas) não faz o servidor contatá-los: esses endereços são ignorados.
O servidor e os aplicativos se conectam a outros serviços externos apenas para os recursos que os necessitam, e aos serviços que você configura:
| Recurso | Contatos | Por padrão |
|---|---|---|
| Chamadas: descoberta de endereços públicos com STUN. O servidor e cada pessoa que entra em uma chamada enviam uma requisição, que mostra ao servidor STUN seu endereço IP e porta. | Servidor STUN público da Cloudflare, stun.cloudflare.com | ativado, enquanto o aplicativo de Chamadas estiver habilitado. Para alterá-lo, consulte Chamadas. |
Visualizações de links: o servidor busca as páginas vinculadas nas mensagens (Ativar Visualizações de Links, ServiceSettings.EnableLinkPreviews) | os sites para os quais as pessoas enviam links | ativado. Desative com AM_SERVICESETTINGS_ENABLELINKPREVIEWS=false. |
| Notificações push para o aplicativo móvel | seu próprio proxy de push (Notificações push) | desativado até que você defina seu endereço |
O marketplace de aplicativos remotos (PluginSettings.EnableRemoteMarketplace) | o URL do Marketplace que você definir | desativado, e sem endereço |
| seu servidor SMTP | o servidor padrão é localhost | |
| Conexões de modelos (reescrita, resumos, tradução, leitura em voz alta e aplicativos), conexões de modelos dos próprios administradores da comunidade | os provedores de IA adicionados em Console do Sistema › IA › Conexões de modelos ou nas configurações de uma comunidade (IA) | nenhuma, até que alguém adicione uma |
| Login único, os serviços de IA do aplicativo Agentes, conversão de fala em texto e tradução, webhooks de saída, e aplicativos como Mail, Calendário, GitHub, GitLab ou Jira | os serviços que você configurar | desativado até que você os configure |
Por padrão, o servidor se recusa a se conectar a endereços privados e de loopback para estes (pré-visualizações de links, webhooks, aplicativos, conexões de modelos da comunidade), para que uma mensagem ou uma integração não possa ser usada para acessar sua rede interna. Liste os hosts internos aos quais ele pode se conectar em Permitir conexão interna não confiável (ServiceSettings.AllowedUntrustedInternalConnections, em Console do Sistema › Ambiente › Desenvolvedor); o arquivo de composição do site lista gifs lá.
Relatando uma vulnerabilidade
Relate problemas de segurança de forma privada, conforme explicado na política de segurança do Antimatter, e não em problemas públicos.