如何才能獲得 Nextcloud A+ 安全評級
使用最新更新、HTTPS 和 HSTS、精確的反向代理信任以及針對公共伺服器的檢查,修復 Nextcloud 掃描中常見的錯誤。
即使您的 Nextcloud 網站運作正常,外部安全掃描也可能評級較低。常見原因包括伺服器版本過舊或已停止維護、缺少 HSTS 標頭,或反向代理程式對 Nextcloud 隱藏了 HTTPS。首先,請更新 Nextcloud,在公共 Web 伺服器邊緣強制使用 HTTPS,嚴格配置代理信任,並清除 Nextcloud 管理頁面中報告的警告。
並不存在統一的「A+」標準。 Nextcloud 官方安全掃描會根據已知的安全性公告和可從外部執行的加固檢查,對公開可見的 Nextcloud 伺服器進行評級;SSL Labs 則會對 TLS 配置進行評級。任何評級都僅代表特定時間點的結果,並不能證明伺服器絕對安全,也不能保證伺服器不會出現未知漏洞。
更改設定前,請記錄產生評級的掃描器。 Nextcloud 的官方掃描報告會指出已知漏洞、已停止支援的版本以及明顯的安全加固問題。 SSL Labs 可能會給出僅支援 TLS 的評級。修復您目前使用的掃描器中出現的警告,然後重新執行相同的掃描;不同的服務使用不同的標準。
在 Nextcloud 管理設定中,檢查伺服器版本以及任何安全性或設定警告。升級到支援的 Nextcloud 版本並安裝其最新的安全性更新,然後再調整標頭。即使標頭掃描器返回 A+,舊版本也可能仍然存在安全漏洞。如果您的安裝包沒有可用的升級,請按照該安裝包支援的升級路徑進行操作,而不是手動替換檔案。
使用有效的憑證透過 HTTPS 提供 Nextcloud 公共 URL,並將未加密的 HTTP 流量重新導向到 HTTPS。 Nextcloud 的安全加固指南建議在生產伺服器上使用 HTTPS。然後在發送公共 HTTPS 回應的伺服器或代理程式上新增 HTTP 嚴格傳輸安全性 (HSTS)。 Nextcloud 的管理員警告要求Strict-Transport-Security最大年齡至少為 15,552,000 秒。
對於 Nginx,請在活動 TLS 伺服器區塊中新增類似這樣的指令,取代主機名,並保留其餘已知的 Nextcloud 設定:
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;

includeSubDomains僅當所有子網域都可透過 HTTPS 存取時才使用。請勿preload隨意添加可選標誌:瀏覽器預加載清單可能需要數月時間才能從提交的網域中移除。如果反向代理處理 TLS,請在面向公眾的代理程式上設定 HSTS;僅在內部 Nextcloud 主機上設定 HSTS 可能不會變更掃描器看到的標頭。
Nextcloud 在預設環境下已經發送了諸如`<header> X-Content-Type-Options`、X-Frame-Options`<header> Referrer-Policy`、`<header>` 和`<header>` 之類的基本標頭X-Robots-Tag。在檢查回應之前,請避免新增重複或衝突的版本。 Nextcloud 的 Nginx 範例設定顯示如何透過 Nginx 提供這些標頭。
如果 Nextcloud 前端使用了反向代理,請僅列出該代理程式的實際 IP 位址或私有網路範圍trusted_proxies。 Nextcloud 僅對受信任的代理程式使用轉送的用戶端 IP 標頭;信任錯誤的位址可能會導致用戶端偽造其 IP 位址,從而破壞存取控製或日誌記錄。
例如,如果 TLS 終止代理程式實際位於10.0.0.10,則將相關條目合併到 中的現有$CONFIG陣列中config/config.php:
'trusted_proxies' => ['10.0.0.10'],
'overwriteprotocol' => 'https',

設定overwriteprotocol為https當 TLS 在代理端終止,且 Nextcloud 偵測到內部 HTTP 連線為公共 HTTP 連線時生效。如果您的代理程式使用非標準的轉送 IP 標頭,請進行設定forwarded_for_headers以完全符合。請勿設定過寬的受信任範圍,例如0.0.0.0/0。編輯文件後,請檢查合併後的配置並測試登入、共用和產生的連結。
開啟管理設置,查看“概述”或“安全性”部分以及設定警告。請先解決出現的警告,而不是為了追求更高的安全等級而應用無關的加固指令。
overwriteprotocol為受信任的代理設定進行設定。debug停用;僅在進行有針對性的故障排除時啟用,並立即關閉。只有allowed_admin_ranges當管理員擁有穩定且已知的管理 IP 位址範圍時,才應限製管理員操作。錯誤的 IP 位址範圍可能會導致合法管理員無法存取管理功能。 Nextcloud 的安全加強指南也建議停用 HTTP 壓縮以降低 BREACH 漏洞的風險;如果已對經過驗證的頁面啟用了壓縮,請檢查您的 Web 伺服器或代理程式設定。
檢查外部客戶端實際接收到的內容,而不僅僅是設定檔中包含的內容:
curl -I https://cloud.example.com
確認回應包含帶有預期 max-age 值的 HSTS 標頭,並且存在基本的 Nextcloud 安全標頭。瀏覽器的開發者工具可以顯示相同的回應標頭。如果這些值與您的設定不同,請檢查 TLS 終止符、代理程式以及任何快取或巢狀的 Nginx 配置。

接下來,對公用主機名稱執行官方的 Nextcloud 安全掃描,然後再次檢查管理設定。如果需要單獨的 TLS 等級和詳細信息,請使用Qualys SSL Labs。官方掃描需要可存取的 Nextcloud 主機名稱;它無法從公共網際網路評估僅限私有存取的實例。

如果評級仍然低於 A+,請使用特定的發現結果來確定導致問題的層級。一次修復一個問題,檢查 Nextcloud 是否仍然可以透過其公共 URL 正常運作,然後再次掃描。 A+ 是一個有用的配置訊號,但掃描通過後,補丁程式、備份、存取控制和持續監控仍然不可或缺。
使用最新更新、HTTPS 和 HSTS、精確的反向代理信任以及針對公共伺服器的檢查,修復 Nextcloud 掃描中常見的錯誤。
為需要加密的儲存配置 Nextcloud SSE,保護加密金鑰,並在加密現有文件之前測量傳輸和 CPU 影響。
將 Nextcloud 的檔案搜尋連接到 Elasticsearch,索引文件內容,並選擇適合您的伺服器和安全需求的設定。
配置 Nextcloud 在規定的保留期後刪除已刪除的文件,可靠地安排後台作業,並避免執行清除所有使用者回收站的命令。
安全地執行 Nextcloud 的 OCC 修復程序,預覽資料庫更改,並檢查警告仍然存在的原因。
透過調整 PHP、Nginx 或 Apache、暫存和逾時設置,讓 Nextcloud 瀏覽器上傳更大的文件,並驗證是哪個限制阻止了文件上傳。
設定 Nextcloud 實際使用的 PHP 記憶體限制,重新啟動對應的服務,並在管理概覽中確認 512 MB 設定。
使用 Nextcloud 的 S3 後端,透過正確的端點、憑證、存取範圍和驗證步驟,掛載相容的物件儲存桶。
使用持久 UUID 掛載、維護模式、已驗證的副本和原始路徑符號鏈接,安全地將 Linux Nextcloud 資料目錄移至外部驅動器。
透過診斷 SQL 錯誤、檢查資料庫連線並安全地完成中斷的遷移,在更新後恢復 Nextcloud 存取。