安全指南

本指南涵蓋在生產環境中運行 Chamilo 2.0 平台的安全最佳實踐。安全性是平台軟件、伺服器配置和持續運營實踐之間的共同責任。

保持 Chamilo 更新

保持 Chamilo 安裝版本最新的做法是最重要的安全措施。

  • 訂閱 Chamilo 安全 X 帳號(@chamilosecurity)或關注 GitHub 儲存庫以獲取版本發布公告。

  • 及時應用安全補丁。2.0 分支內的次要更新設計為安全可應用。

  • 遵循每次更新的升級流程

HTTPS

在生產環境中始終透過 HTTPS 提供 Chamilo 服務。

  • 獲取 SSL/TLS 證書(Let's Encrypt 透過 Certbot 提供免費證書)。

  • 配置您的網頁伺服器將所有 HTTP 流量重定向至 HTTPS。

  • 啟用 HSTS(HTTP 嚴格傳輸安全)標頭以防止降級攻擊:

    Strict-Transport-Security: max-age=31536000; includeSubDomains

若不使用 HTTPS,登入憑證、會話 cookie 和所有用戶數據將以明文傳輸,並可能在網絡上被攔截。

檔案權限

將檔案權限限制在必要的最低限度。

路徑
擁有者
權限
備註

應用程式檔案(原始碼)

root 或部署用戶

755(目錄),644(檔案)

網頁伺服器需要唯讀訪問權限。

var/

網頁伺服器用戶

775

必須可寫,用於 Symfony 快取、日誌和檔案上傳。

.env

root 或部署用戶

640

包含機密資訊。網頁伺服器在正常使用期間僅需讀取權限,但在安裝期間需要寫入權限。

config/

root 或部署用戶

750

包含機密資訊。網頁伺服器在正常使用期間僅需讀取權限,但在安裝期間需要寫入權限。

切勿將權限設置為 777。切勿以 root 身份運行網頁伺服器。

密碼政策

安全設置中配置強大的密碼要求:

  • 最小長度為 8 個字符(建議 12 個以上)。

  • 要求包含大寫字母、小寫字母、數字和特殊字符的組合。

  • 考慮在符合規範的環境中啟用密碼過期功能。

  • 教育用戶選擇強大且獨特的密碼。

速率限制與暴力破解防護

應用程式層級

  • 帳號封鎖前的最大登入嘗試次數login_max_attempt_before_blocking_account)設置為較小的值(例如 5)。

  • 在登入頁面啟用驗證碼(CAPTCHA)。驗證碼是開/關設置——不會在 N 次登入失敗後自動啟用。將其與驗證碼錯誤次數後封鎖帳號captcha_number_mistakes_to_block_account)搭配使用,以鎖定持續無法通過驗證碼的帳號。

伺服器層級

使用 fail2ban 監控登入失敗並封鎖違規 IP 地址:

/etc/fail2ban/filter.d/chamilo-auth.conf 中創建匹配的過濾器,以匹配認證失敗的日誌條目。

會話管理

  • 在安全設置中設置合理的會話存活時間(例如 3600 秒 / 1 小時)。

  • 在您的 Symfony 配置中配置會話 cookie 標誌

  • 考慮在包含敏感內容的平台上禁用「記住我」功能。

HTTP 安全標頭

配置您的網頁伺服器以發送安全標頭:

標頭
目的

X-Content-Type-Options

nosniff

防止 MIME 類型嗅探。

X-Frame-Options

SAMEORIGIN

防止透過 iframe 進行點擊劫持。

X-XSS-Protection

1; mode=block

為舊版瀏覽器提供遺留 XSS 防護。

Referrer-Policy

strict-origin-when-cross-origin

控制 referrer 資訊洩露。

Content-Security-Policy

因情況而異

控制可載入的資源。需要針對 Chamilo 進行仔細調整。

Apache 示例:

Nginx 示例:

檔案上傳安全性

  • 安全性設定中封鎖可執行檔案副檔名(exe、bat、sh、php、phtml、cgi)。

  • 設定您的網頁伺服器以永不執行上傳的檔案。對於 Apache,請在整個 var/ 目錄中新增以下設定:

  • 如果您的環境有此需求,請使用防毒軟體(ClamAV)掃描上傳的檔案。

資料庫安全性

  • 為 Chamilo 使用專用資料庫使用者,僅賦予其所需的權限(在 Chamilo 資料庫上執行 SELECT、INSERT、UPDATE、DELETE、CREATE、ALTER、DROP、INDEX)。

  • 不要使用 root 資料庫帳戶。

  • 確保資料庫無法從公共網際網路存取。將其綁定到 localhost 或私人網路。

  • 在符合合規性要求的環境中啟用資料庫審計日誌。

備份

  • 安排每日自動備份資料庫和上傳的檔案。

  • 將備份儲存在與伺服器分開的位置(異地或雲端儲存)。

  • 定期測試備份還原,以驗證備份是否可用。

  • 如果備份包含敏感資料,則對備份進行加密。

詳細說明請參閱備份

監控

  • 監控位於 var/log/prod.log 的 Chamilo 日誌,檢查錯誤和可疑活動。

  • 設定伺服器監控(CPU、記憶體、磁碟),以檢測資源耗盡的情況。

  • 針對重複的身份驗證失敗設定警報。

  • 定期檢查使用者帳戶,確認是否存在未經授權或長期未使用的帳戶。

檢查清單

在部署或審核 Chamilo 安裝時使用此檢查清單:

最後更新於

這有幫助嗎?