建立Elastic Compute Service執行個體時,應使用獨立的、新建立的認證憑證(如SSH金鑰組),避免使用自訂鏡像中可能存在的預設登入憑證。
安全風險
當您使用自訂鏡像(公用鏡像中不會有預設密碼)建立新的ECS執行個體時,如果該鏡像包含預設的登入密碼或SSH密鑰,新執行個體便會“繼承”這些憑證。這些憑證通常是為了方便鏡像製作者或早期使用者測試而設定的,但它們構成了安全隱患:
憑證泄露範圍不可控:自訂鏡像的來源多樣,其內建的預設密碼或密鑰可能已被分發給多個使用者,甚至可能在不經意間被發布到公用代碼倉庫或技術論壇中。攻擊者會持續掃描雲平台,用這些已知的公開憑證嘗試登入,一旦成功,即可完全控制您的伺服器。
繞過安全防護:攻擊者一旦掌握了預設憑證,就相當於擁有了您伺服器的鑰匙,可以輕易繞過所有其他安全防護,直接登入系統。
最佳實務
建立自訂鏡像時,防止預設密碼或SSH密鑰泄漏。
刪除所有使用者的密碼(
passwd -d <username>)。確保
/root/.ssh/authorized_keys和其他使用者的此檔案是空的。清除bash記錄 (
history -c && history -w)。
根據自訂鏡像建立執行個體時,避免使用鏡像預設密碼。
該操作會重新設定root或ecs-user使用者的登入憑證(密碼或金鑰組),並不會清除其他使用者的登入憑證,請參考修複操作進行清除。
Linux執行個體
根據自訂鏡像建立執行個體時,避免使用鏡像預設密碼,建議使用金鑰組。
控制台
使用自訂鏡像建立執行個體時,避免使用鏡像預設密碼,推薦使用金鑰組。
API
通過RunInstances或者CreateInstance介面建立執行個體時,設定
PasswordInherit參數為false。Windows執行個體
使用自訂鏡像建立執行個體時,避免使用鏡像預設密碼,推薦設定高強度自訂密碼(不支援通行金鑰對)。
合規能力
檢查:檢查是否存在不符合要求的執行個體
檢查可疑使用者賬戶:查看
/etc/passwd檔案,確認是否存在非您建立或非系統預設的未知使用者。cat /etc/passwd檢查SSH授權公開金鑰:檢查系統關鍵位置的
authorized_keys檔案,確認這些檔案定義了哪些公開金鑰可以免密登入。# 檢查root使用者的授權公開金鑰 cat /root/.ssh/authorized_keys # 檢查其他使用者(例如 'admin')的授權公開金鑰 cat /home/admin/.ssh/authorized_keys仔細審查檔案中的公開金鑰,確保它們都與您當前使用的私密金鑰相對應。任何可疑的、不認識的公開金鑰都應立即移除。
攔截:預防使用鏡像預設密碼建立執行個體
在組織或賬戶層面通過RAM Policy策略,主動攔截使用鏡像預設密碼建立執行個體的行為。
針對企業使用者:
使用阿里雲主帳號登入資來源目錄控制台,單擊左側功能表列的管控策略,建立自訂權限原則,粘貼以下JSON內容。
建立執行個體、更換系統硬碟等操作時禁止從鏡像中繼承預設密碼。
{ "Version": "1", "Statement": [ { "Action": [ "ecs:RunInstances", "ecs:CreateInstance", "ecs:ReplaceSystemDisk" ], "Resource": "*", "Condition": { "Bool": { "ecs:PasswordInherit": [ "true" ] } }, "Effect": "Deny" } ] }在資來源目錄中選擇合適的節點繫結原則,策略將對目錄下的帳號產生攔截效果。
針對非企業使用者:
使用阿里雲主帳號登入RAM控制台,單擊左側功能表列的權限原則,建立一條與上述內容相同的自訂策略。
通過系統管理權限策略授權將該條權限原則授權給RAM使用者、RAM使用者組或RAM角色。
修複:修複鏡像預設密碼的執行個體風險
設定新的登入憑證
Linux執行個體:綁定新金鑰組
進入ECS控制台-執行個體,選擇地區與資源群組,單擊目標執行個體ID進入執行個體詳情頁。
單擊,選擇已建立的金鑰組後,單擊確定。重啟執行個體後生效。
Windows執行個體:重設密碼
進入ECS控制台-執行個體,選擇地區與資源群組,單擊目標執行個體ID進入執行個體詳情頁。
單擊,根據提示設定高強度密碼後,單擊確認修改。
清除原鏡像預設憑證(Linux)
使用新憑證登入伺服器:使用您剛剛綁定的新金鑰組或新密碼登入到ECS執行個體。
刪除舊的公開金鑰:仔細檢查並清空所有
authorized_keys檔案中的舊公開金鑰。# 編輯root使用者的authorized_keys檔案,刪除所有不應存在的公開金鑰 vi /root/.ssh/authorized_keys # 對其他所有使用者執行相同操作 vi /home/<username>/.ssh/authorized_keys禁用密碼登入:在確認金鑰組可以成功登入後,修改SSH服務配置,徹底禁用密碼登入,只允許金鑰組登入。
# 1. 編輯SSH設定檔 sudo vi /etc/ssh/sshd_config # 2. 找到並修改以下行 PasswordAuthentication no PubkeyAuthentication yes # 3. 重啟SSH服務使配置生效 sudo systemctl restart sshd
清理不必要的系統使用者和檔案
檢查
/etc/passwd和/etc/shadow檔案,刪除任何在鏡像製作過程中遺留的非必要使用者賬戶。同時,檢查並刪除可能包含敏感資訊(如舊密碼、密鑰)的臨時檔案或指令碼。