安全
加固 Antimatter 服务器的检查清单:应暴露的内容、需审查的限制和隐私设置、服务器联系的外部服务,以及如何报告安全问题。
应暴露的内容
| 端口 | 服务 | 暴露方式 |
|---|---|---|
| 443/tcp, 443/udp, 80/tcp | 您的 HTTPS 代理(Caddy 或 nginx) | 公开:这是用户访问 Antimatter 的方式。 |
| 8443/udp 和 8443/tcp | 通话媒体 | 如果用户从您的网络外部使用通话,则设为公开。 |
| 8065/tcp | Antimatter 的 Web 服务器 | 仅对代理开放:将其发布到 127.0.0.1(HTTP_PORT=127.0.0.1:8065)。 |
| 8067/tcp | 指标 | 仅在启用时限于私有网络。无需登录。 |
| 8074/tcp 和 udp | 集群 gossip | 仅限集群节点之间。 |
| 5432, 9000, 8080, 8066 | PostgreSQL、文件存储、GIF 服务、推送代理 | 绝不公开。compose 文件将它们保留在内部网络上,不发布任何端口。 |
该网站的 compose 文件还以 no-new-privileges 运行每个容器,在 distroless 镜像上以非特权用户身份运行 Antimatter,并以只读文件系统运行 GIF 服务。数据库、存储和 GIF 服务位于一个没有互联网访问权限的网络上。
安装后的检查清单
- 在其他人能够访问服务器之前,创建第一个管理员账户(安装)。
- 仅通过 HTTPS 提供 Antimatter,并将站点 URL 设置为
https://地址(域名和 HTTPS)。 - 确保
.env、config.json和 TLS 密钥仅 root(或服务器用户)可读:chmod 600 .env。 - 决定谁可以创建账户,除非社区是公开的,否则请保持启用开放服务器关闭,并在邮件功能正常后开启需要邮箱验证(登录和账户)。
- 开启多因素身份验证,至少对管理员账户强制执行,或使用您的身份提供商的多因素身份验证。
- 审查以下外部连接,特别是通话默认使用的 STUN 服务器。
- 在添加模型连接之前,请设置 AI 加密密钥(
AM_AI_ENCRYPTION_KEY),并将密钥副本与数据库备份分开保存(AI)。 - 进行备份,并测试恢复(备份和升级)。
- 请保持镜像或软件包处于最新状态:安全修复会随新版本发布。
速率限制
服务器可以限制每个客户端发出的 API 请求数量。此功能默认处于关闭状态。在 系统控制台 › 环境 › 速率限制 中:
| 设置项 | 键 | 默认值 |
|---|---|---|
| 启用限流 | RateLimitSettings.Enable | 关闭 |
| 每秒最大查询数 | RateLimitSettings.PerSec | 10 |
| 最大过载大小 | RateLimitSettings.MaxBurst | 100 |
| 内存存储大小 | RateLimitSettings.MemoryStoreSize | 跟踪 10000 个客户端 |
| 根据远程地址改变频率限制 | RateLimitSettings.VaryByRemoteAddr | 开启 |
| 根据用户改变速率限制 | RateLimitSettings.VaryByUser | 关闭 |
| 通过HTTP头变化频率限制 | RateLimitSettings.VaryByHeader | 空 |
在代理后面,仅按地址限制只有在服务器知道每个客户端的地址时才有效(ServiceSettings.TrustedProxyIPHeader 和 ServiceSettings.TrustedProxyIPs,参见 代理后的客户端地址)。否则,所有请求看起来都来自代理,所有人共享同一个限制。IP 过滤和审计日志中的地址也是如此。
登录尝试单独限制:最大登录尝试次数(10)次,密码连续失败达到该次数后锁定账户。
IP 过滤
系统控制台 › 站点配置 › IP 过滤 通过 IP 地址限制对服务器的访问,包含允许和拒绝规则(每个规则为地址或 CIDR 范围)。开启 启用 IP 过滤 后,地址匹配拒绝规则,或在存在允许规则时不匹配任何允许规则的人,将无法访问服务器。该页面会拒绝会阻止您自身地址的规则。在代理后面,请先配置客户端地址(代理后的客户端地址):否则所有请求看起来都来自代理。
上传与文件共享
| 设置项 | 位置 | 默认值 |
|---|---|---|
最大文件大小(FileSettings.MaxFileSize) | 环境 › 文件存储 | 100 MB。请保持代理的请求大小限制至少为此值。 |
最大有效负载大小(字节)(ServiceSettings.MaximumPayloadSizeBytes) | 环境 › Web 服务器 | 300000:除文件上传外最大的 API 请求 |
允许文件共享(FileSettings.EnableFileAttachments) | 站点配置 › 文件共享与下载 | 开启 |
| 允许移动设备文件上传、允许在移动设备下载文件 | 站点配置 › 文件共享与下载 | 开启 |
启用公开文件链接(FileSettings.EnablePublicLink) | 站点配置 › 公共链接 | 关闭:开启后,人们可以分享一个无需登录即可访问的文件链接 |
开启 SVG(ServiceSettings.EnableSVGs) | 站点配置 › 帖子 | 新服务器上默认关闭:开启后,SVG 图像将内联显示 |
Antimatter 不扫描上传文件中的恶意软件。
隐私设置
在系统控制台 › 站点配置 › 成员和团队中:
| 设置项 | 键 | 默认值 | 功能说明 |
|---|---|---|---|
| 显示邮箱地址 | PrivacySettings.ShowEmailAddress | 开启 | 关闭后,成员的电子邮件地址将对除管理员外的所有人隐藏。建议在公共服务器上关闭此选项。 |
| 显示全名 | PrivacySettings.ShowFullName | 开启 | 关闭后,全名将隐藏,并改为显示用户名。 |
| 启用忽略、屏蔽和消息请求 | PrivacySettings.EnableUserBlocking | 开启 | 详见下文。 |
| 允许用户私信的频道 | TeamSettings.RestrictDirectMessage | Antimatter 服务器上的任意用户 | 或者任何团队成员:仅限共享同一社区的人员。 |
忽略、屏蔽和私信请求
当启用忽略、屏蔽和消息请求开启时(默认设置),用户可以互相忽略和屏蔽,并可以选择将来自陌生人的私信作为消息请求接收,这些请求在被接受之前不会发送通知。这适用于公共社区。在同事必须始终能够联系到彼此的职场环境中,请将其关闭(AM_PRIVACYSETTINGS_ENABLEUSERBLOCKING=false):此时不再强制执行任何限制,但用户已创建的列表和选择会被保留,如果重新开启,这些设置将再次生效。
会话和令牌
- 会话时长和闲置超时:请参阅 登录和账户。较短的会话时长意味着丢失的笔记本电脑或手机保持登录状态的时间更短。
- 开启个人访问令牌(
ServiceSettings.EnableUserAccessTokens,默认关闭)允许用户创建 API 令牌;个人访问令牌最长生命周期(天)用于限制其有效期。这两项设置均位于系统控制台 › 集成 › 集成管理中。 - 若要一次性注销所有用户,例如在疑似发生数据泄露后:请在系统控制台 › 用户管理 › 用户中点击吊销所有会话。
与外部服务的连接
Antimatter 不会联系任何由 Mattermost, Inc. 运营的服务。它不发送遥测数据、崩溃报告或安全更新检查,也不获取产品通知。从 Mattermost 迁移过来的配置如果仍然包含 Mattermost 服务的名称(其推送服务、应用市场、通知或用于通话的 STUN 服务器),服务器也不会联系这些服务:这些地址将被忽略。
服务器和应用仅在需要相应功能时,才会连接其他外部服务,以及您配置的服务:
| 功能 | 联系人 | 默认情况下 |
|---|---|---|
| 通话:通过 STUN 查找公共地址。服务器和每个加入通话的人员都会发送请求,该请求会向 STUN 服务器显示其 IP 地址和端口。 | Cloudflare 的公共 STUN 服务器,stun.cloudflare.com | 开启,前提是已启用通话应用。如需更改,请参阅通话。 |
链接预览:服务器会抓取消息中链接的页面(启用网站链接预览,ServiceSettings.EnableLinkPreviews) | 用户链接的网站 | 开启。使用 AM_SERVICESETTINGS_ENABLELINKPREVIEWS=false 关闭。 |
| 向移动应用发送推送通知 | 您自己的推送代理(推送通知) | 关闭,直到您设置其地址 |
远程应用市场(PluginSettings.EnableRemoteMarketplace) | 您设置的市场 URL | 关闭,且未设置地址 |
| 电子邮件 | 您的 SMTP 服务器 | 默认服务器为 localhost |
| 模型连接(改写、摘要、翻译、朗读及应用程序),社区管理员自己的模型连接 | 在系统控制台 › AI › 模型连接或社区设置中添加的 AI 提供商(AI) | 在有人添加之前,没有 |
| 单点登录、智能体应用的 AI 服务、语音转文字和翻译、出站 Webhook,以及 Mail、Calendar、GitHub、GitLab 或 Jira 等应用程序 | 您配置的服务 | 关闭,直到您进行配置 |
默认情况下,服务器会拒绝为这些功能(链接预览、Webhook、应用程序、社区模型连接)连接到私有地址和回环地址,以防止消息或集成被用于访问内部网络。请在允许不受信任的内部连接到(ServiceSettings.AllowedUntrustedInternalConnections,位于系统控制台 › 环境 › 开发人员)中列出允许访问的内部主机;该网站的 compose 文件在此处列出了 gifs。
报告漏洞
请按照Antimatter 安全策略中的说明私下报告安全问题,而不是在公开问题中报告。