建立Linux類型系統執行個體時應避免使用root帳號登入,推薦使用ecs-user帳號登入。
安全風險
root帳號擁有系統中最高的許可權。雖然它為系統管理提供了便利,但也帶來了巨大的安全風險。一旦root賬戶的憑證(密碼或SSH密鑰)被泄露,攻擊者將完全控制您的伺服器。這可能導致:
資料破壞: 攻擊者可以刪除所有業務資料、日誌和備份。
惡意軟體植入: 攻擊者可以安裝勒索軟體、挖礦程式、後門程式等。
敏感資訊竊取: 業務代碼、客戶資料、支付資訊等核心資產將被一覽無餘。
橫向移動攻擊: 以此伺服器為跳板,攻擊您內網中的其他伺服器,造成更大範圍的破壞。
操作痕迹抹除: 攻擊者可以輕易地修改或刪除記錄檔,極大地增加了安全事件後的追溯和調查難度。
最佳實務
建立執行個體時使用ecs-user進行日常登入和管理,這不僅限制了潛在的攻擊面,也使得所有特權操作都必須通過sudo執行,從而留下了清晰、可審計的操作記錄,明確了操作責任人。
控制台
通過執行個體購買頁建立執行個體時,設定登入名稱選擇ecs-user。
特定版本的Linux鏡像支援ecs-user,若不支援,請參考多使用者遠程登入自行建立ecs-user,並為該使用者授予sudo許可權。
API
通過RunInstances或者CreateInstance介面建立執行個體時,指定ImageOptions.LoginAsNonRoot參數為true,執行個體將不再使用root登入名稱,而會使用ecs-user使用者名稱,重設賬密時也無法重設為root使用者名稱。
若無金鑰組,可通過CreateKeyPair介面建立金鑰組。
合規能力
檢查:是否存在使用root帳號登入的Linux執行個體
選擇安全效能力頁簽,單擊檢查項使用非 root 帳號登入 Linux 執行個體,可以查看使用root帳號登入的Linux執行個體。
攔截:預防新購執行個體等操作使用root帳號
通過RAM Policy策略,在組織或賬戶層面設定策略,主動攔截在新購Linux執行個體等操作中使用root帳號的行為。
針對企業使用者:
使用阿里雲主帳號登入資來源目錄控制台,單擊左側功能表列的管控策略,建立自訂權限原則,粘貼以下JSON內容。
限制使用
root身份進行建立執行個體、系統硬碟掛載、更換系統硬碟等操作。{ "Version": "1", "Statement": [ { "Action": [ "ecs:RunInstances", "ecs:CreateInstance", "ecs:ReplaceSystemDisk", "ecs:AttachDisk", "ecs:InvokeCommand" ], "Resource": "*", "Condition": { "Bool": { "ecs:LoginAsNonRoot": [ "false" ] } }, "Effect": "Deny" } ] }在資來源目錄中選擇合適的節點繫結原則,策略將對目錄下的帳號產生攔截效果。
針對非企業使用者:
使用阿里雲主帳號登入RAM控制台,單擊左側功能表列的權限原則,建立一條與上述內容相同的自訂策略。
通過系統管理權限策略授權將該條權限原則授權給RAM使用者、RAM使用者組或RAM角色。
修複:禁用root帳號登入
建立普通使用者:建立一個普通使用者,使用者ssh登入。具體操作,請參見多使用者遠程登入。
登入執行個體:使用root使用者或普通使用者登入到您的Linux執行個體。
禁用root帳號登入:登入執行個體內部,執行以下指令碼,修改SSH服務的設定檔。
#!/bin/bash # 備份原始設定檔 cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak_$(date +%F) # 禁用root使用者ssh登入::將 PermitRootLogin 參數修改為 no sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config # 重啟 SSH 服務以使配置生效 # 注意:不同發行版的 SSH 服務名可能不同(例如 sshd 或 ssh),請根據實際情況修改。 systemctl restart sshd || service sshd restart驗證:操作完成後,請保持當前會話不要斷開,另外開啟一個新的終端視窗,嘗試使用root使用者登入,此時應登入失敗。然後,再嘗試使用您的普通使用者登入,確認可以成功登入並能通過
sudo執行特權命令。驗證成功後,方可安全斷開所有會話。按照以上操作驗證後,檢查的結果可能不會改變,請忽略。