安全指南
本指南涵蓋在生產環境中運行 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 安裝時使用此檢查清單:
最後更新於
這有幫助嗎?