如何才能獲得 Nextcloud A+ 安全評級
使用最新更新、HTTPS 和 HSTS、精確的反向代理信任以及針對公共伺服器的檢查,修復 Nextcloud 掃描中常見的錯誤。
若要在 Nextcloud 中搜尋檔案內容,請安裝全文搜尋框架、其 Elasticsearch 平台應用程式和檔案提供者;然後將這些應用程式連接到相容的 Elasticsearch 8 伺服器並建立索引。這不僅增加了可搜尋的文檔文本,還增加了一項單獨的服務,用於保護、監控和維護。目前的連接器 README 檔案指出 Elasticsearch 8 是其支援的主要版本,因此在選擇特定的 Elasticsearch 版本之前,請先驗證您已安裝的應用程式版本是否相容。
Elasticsearch 可以幫助使用者在文件中尋找關鍵字,而不僅限於檔案名稱和基本元資料。但缺點是需要額外維護和保護一項服務,並且在索引過程中會佔用記憶體、磁碟和 CPU 資源。對於小型雲端平台來說,這些開銷可能難以承受;但對於文件密集型團隊而言,內容搜尋或許物有所值。
此整合由三個應用組成:全文搜尋協調提供者和平台,Elasticsearch 將框架連接到引擎,Files 提供文件內容。一次只能選擇一個平台應用程式。請參閱框架的 README 檔案和Files 提供者的 README 檔案。
這些 Linux 範例使用 Debian 或 Ubuntu 的路徑和www-data帳戶。請根據容器或其他發行版調整路徑和服務使用者。
安裝 Elasticsearch 前,請先檢查您的 Nextcloud 和應用程式版本。連接器 README 檔案指出,從應用程式版本 26.0.0 開始,它支援 Elasticsearch 8。不要因為 Elasticsearch 9 版本較新就想當然地認為它相容;請查看連接器 README 檔案和安裝 wiki,確認您的版本是否相容。
請按照 Elastic 提供的適用於您的作業系統和相容主版本的說明安裝 Elasticsearch。 Elastic 的 Debian 軟體包包含捆綁的 OpenJDK,因此通常無需單獨安裝 Java。請參閱Elastic 的 Debian 軟體包安裝文件。除非您的架構另有要求,否則請僅允許從 Nextcloud 主機或私有應用程式網路存取 Elasticsearch。 Elasticsearch 8 在軟體包安裝過程中啟用了安全功能;請為網路部署保留身份驗證和 TLS,並且切勿將未經身份驗證的搜尋端點暴露給公共互聯網。
服務啟動後,請使用安裝過程中建立的方案和憑證在本機測試其端點。對於本機安全實例,請求可能類似於curl --cacert /path/to/http_ca.crt -u elastic https://localhost:9200`<command>`;出現提示時請輸入密碼,而不是將其保存在 shell 歷史記錄中。請使用為您的安裝產生的 CA 證書,而不是佔位路徑。成功的回應應包含 Elasticsearch 節點和版本資訊。如果此檢查失敗,請在設定 Nextcloud 之前修復服務、憑證信任或憑證問題。
使用 Nextcloud 的「應用」頁面安裝並啟用全文搜尋、全文搜尋 - Elasticsearch 平台和全文搜尋 - 檔案。您也可以occ從 Nextcloud 安裝目錄使用 Nextcloud 的命令列管理工具。在 Debian 或 Ubuntu 系統上,命令格式如下:
cd /var/www/nextcloud
sudo -E -u www-data php occ app:install fulltextsearch
sudo -E -u www-data php occ app:install fulltextsearch_elasticsearch
sudo -E -u www-data php occ app:install files_fulltextsearch
使用您發行版的 HTTP 帳戶,並遵循 Nextcloud 的occ 指南。如果某個應用程式已安裝但已停用,請使用occ app:enable APP_ID。請確保所有三個應用程式都與您的 Nextcloud 版本相容。
開啟管理員設定並選擇“全文搜尋”部分。選擇 Elasticsearch 作為搜尋平台,然後輸入 Elasticsearch servlet 位址、索引名稱以及已安裝連接器版本公開的任何必需連接憑證或憑證設定。該位址必須可從 Nextcloud 伺服器進程存取。如果兩個服務運行在同一容器網路中,localhost則通常指向 Nextcloud 容器本身,而不是 Elasticsearch 容器;請改用 Elasticsearch 服務名稱或內部主機名稱。
使用小寫的索引名稱,例如nextcloud;如果多個雲端共用相同服務,請為每個雲端指派一個單獨的索引。不同的名稱有助於管理,但不能取代存取控制。請勿在螢幕截圖、工單和 shell 歷史記錄中包含憑證。
在檔案提供者設定中,啟用使用者所需的檔案類型和大小範圍的索引。可搜尋內容取決於提供者和提取支援;僅索引檔案名稱並不能使 PDF 中的文字可搜尋。 Elasticsearch 的附件處理器可以從常見的文件格式(例如 PDF 和 Office 文件)中提取文本,但存在提取限制和支援的格式。 Elasticsearch 8 已包含附件匯入功能;請參閱Elastic 的附件處理器參考文件。對於掃描件或影像,普通的文件文字擷取並非 OCR:僅當您需要該功能並已檢查其要求時才新增 OCR 提供者。在資源受限的伺服器上,請保持檔案大小限制的保守性。
在建立索引之前執行健康檢查。在 Nextcloud 目錄中,使用以下命令:
sudo -E -u www-data php occ fulltextsearch:check
首先解決報告的連線、平台或提供者錯誤。然後開始初始索引:
sudo -E -u www-data php occ fulltextsearch:index
首次運行會遍歷所選用戶的文件,可能需要較長時間。請保持 SSH 會話穩定,或在終端機復用器(例如 npm)中執行命令,tmux並監控 CPU、記憶體和磁碟空間使用情況。索引會將提取的文字和檔案元資料複製到 Elasticsearch 中;它不能取代 Nextcloud 備份。請妥善保護搜尋索引及其憑證,並注意刪除或重建索引可能需要再次執行完整的索引程序。
為了確保持續更新,請確保 Nextcloud 後台作業穩定運作。該專案還提供了一個fulltextsearch:live用於近乎即時索引的工作進程;它可以減少更新延遲,但會增加一個需要監控的服務。建議先使用定時任務,僅在延遲至關重要時才新增工作進程。請根據您的路徑、帳戶和資料庫啟動順序調整上游服務範例。
索引完成後,搜尋一個出現在小型測試文件中但不在其檔案名稱中的特定短語。確認 Nextcloud 是否能為具有讀取權限的使用者傳回預期檔案。然後上傳或編輯第二個測試文檔,允許配置的後台作業或即時工作進程運行,並重複搜尋。僅憑狀態檢查成功並不能證明文件內容已被索引。
如果僅顯示檔案名,請檢查檔案提供者、檔案類型和大小設定、提取支援以及索引日誌。如果連線失敗,請檢查 Nextcloud 網路中的端點、TLS 信任以及憑證。
當內容搜尋的價值足以支撐維護另一個有狀態服務時,請選擇 Elasticsearch。如果檔案名稱搜尋就足夠了,則可以避免增加資源和安全開銷。在生產環境升級之前,請務必驗證 Nextcloud、應用程式和 Elasticsearch 的具體組合;此配置並不支援所有部署方式。
使用最新更新、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 存取。