安全性
強化 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):這些限制將不再強制執行,但使用者已建立的清單和選擇會保留,若重新開啟則會再次生效。
工作階段與令牌
- 工作階段時長與閒置逾時:請見 登入與帳號。較短的工作階段意味著遺失的筆記型電腦或手機保持登入狀態的時間較短。
- 啟用個人存取 Token(
ServiceSettings.EnableUserAccessTokens,預設為關閉)可讓使用者建立 API token;個人存取權杖最長有效期(天)則用於限制其有效期。兩者皆位於系統控制台 › 整合 › 整合管理。 - 若要一次登出所有使用者(例如在疑似資料外洩之後),請前往系統控制台 › 使用者管理 › 使用者,並使用廢除所有工作階段。
與外部服務的連線
Antimatter 不會聯繫任何由 Mattermost, Inc. 營運的服務。它不會發送遙測資料、崩潰報告或安全更新檢查,也不會擷取產品通知。從 Mattermost 移轉過來但仍指向 Mattermost 服務(其推送服務、應用程式市集、通知或通話用的 STUN 伺服器)的設定,不會導致伺服器與這些服務聯繫:這些地址將被忽略。
伺服器與應用程式僅在需要相關功能時,才會連線到其他外部服務,以及您所設定的服務:
| 功能 | 通訊 | 預設值 |
|---|---|---|
| 通話:透過 STUN 尋找公開地址。伺服器與每位加入通話的使用者都會發送請求,向 STUN 伺服器顯示其 IP 位址和埠號。 | Cloudflare 的公開 STUN 伺服器,stun.cloudflare.com | on,前提是已啟用通話應用程式。若要變更此設定,請參閱通話。 |
連結預覽:伺服器會抓取訊息中連結的頁面(啟用連結預覽,ServiceSettings.EnableLinkPreviews) | 人們連結的網站 | on。使用 AM_SERVICESETTINGS_ENABLELINKPREVIEWS=false 關閉。 |
| 推播通知至行動應用程式 | 您自己的推播代理(推播通知) | off,直到您設定其位址 |
遠端應用程式市集(PluginSettings.EnableRemoteMarketplace) | 您所設定的市集網址 | off,且未設定位址 |
| 電子郵件 | 您的 SMTP 伺服器 | 預設伺服器為 localhost |
| 模型連線(重寫、摘要、翻譯、朗讀與應用程式),社群管理員自訂的模型連線 | 在系統控制台 › AI › 模型連線或社群設定中新增的 AI 供應商(AI) | 在有人新增之前為空 |
| 單一登入、代理程式應用程式的 AI 服務、語音轉文字與翻譯、出站 Webhook,以及 Mail、Calendar、GitHub、GitLab 或 Jira 等應用程式 | 您設定的服務 | off,直到您完成設定 |
預設情況下,伺服器會拒絕為這些項目(連結預覽、Webhook、應用程式、社群模型連線)連線至私人與環回位址,因此無法透過訊息或整合存取您的內部網路。請在允許不受信任的內部連線連往(ServiceSettings.AllowedUntrustedInternalConnections,位於系統控制台 › 環境 › 開發者)中列出可存取的內部主機;該站點的 compose 檔案在此列出了 gifs。
回報安全漏洞
請依Antimatter 安全政策的說明私下回報安全問題,而非在公開的 issue 中提出。