我有以下用戶“架構”:
- root 存取被禁用。
- 管理員使用者只能存取其主目錄。
- Apache 以 root 服務運作(root 是唯一有權存取 Web 伺服器檔案的服務)
- 我已經安裝了 jenkins CI,它正在使用「管理員」權限建置我的專案。
我想將最新的建置檔案複製到我的網頁伺服器位置作為建置後操作。如果只有「root」使用者有權存取我的目標目錄,我該如何實現這一點?也許我的「用戶架構」一開始就是錯的?
答案1
也許我的「用戶架構」一開始就是錯的?
是的。不想向你透露,但就是這樣。您應該如何更改它:
- 以自己的使用者身分執行 Apache,最好是在 chroot 中。這稱為最小特權原則 - 其想法是限制在某些內容受到損害時可能造成的損害。假設某事將要妥協,然後從那裡開始工作。您沒有理由以特權使用者身分執行 Apache。
- 作為自己的用戶運行 Jenkins CI。同樣的原則也適用。
- 提供某種方式讓檔案到達網頁伺服器目錄。例如,您可以將 Jenkins 使用者新增至 Apache 群組。這應該使 Jenkins 建置伺服器能夠存取 webserver 目錄。更安全的方法是以 Apache 使用者身分執行 cron 作業或 systemd 計時器,並使用它來複製檔案。為什麼這樣比較安全?如果 Jenkins 受到威脅,攻擊者將無法存取您的網頁伺服器目錄。