我想使用 SSH 存取 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。在使用 SSH 時,保護執行個體安全並避免未經授權存取的最佳實務是什麼?
解決方法
使用 SSH 時,請使用下列最佳實務來保護您的執行個體。對於涉及命令的步驟,請務必使用根權限執行命令。執行 sudo -i 命令以成為根使用者。
使用 AWS Systems Manager Session Manager 對 EC2 執行個體進行 Shell 存取
Session Manager 允許 AWS Identity and Access Management (IAM) 使用者使用加密和記錄功能登入您的執行個體。Systems Manager 的流量會通過 Systems Manager 端點,無需開啟傳入連接埠即可輕鬆、安全地存取私有執行個體。如需有關 Session Manager 的詳細資訊,請參閱使用 AWS Systems Manager Session Manager 對 EC2 執行個體進行 Shell 存取。
使用 EC2 Instance Connect 對 EC2 執行個體進行 Shell 存取
Amazon EC2 Instance Connect 可讓您透過 IAM 角色和政策使用 Secure Shell (SSH) 連接至 Linux 執行個體。如需有關 EC2 Instance Connect 的詳細資訊,請參閱使用 EC2 Instance Connect 連線至 Linux 執行個體。
**注意:**下列發行版支援 EC2 Instance Connect:
- Amazon Linux 2 (任何版本)
- Ubuntu 16.04 或更新版本
不允許根使用者使用 SSH 終端
預設情況下,Amazon 提供的 AMI 和 AWS Marketplace 中的大多數供應商都不允許根使用者從 SSH 終端登入。如果您的執行個體允許根使用者登入,請遵循下方步驟拒絕存取。
1. 將 * (星號) 新增至 /etc/shadow 檔案中的密碼欄位,以使根使用者密碼無效:
使用 vipw -s 編輯檔案。
第一行通常是根使用者的行。變更根使用者的行,如下所示:
root:*LOCK*:14600::::::
2. 使用編輯器 (例如 vi 編輯器) 編輯 SSH 常駐程式的組態檔案:
vi /etc/ssh/sshd_config
確保下列行存在且未註釋。此行拒絕根使用者的登入許可。
PermitRootLogin no
3. 重新啟動 SSH 常駐程式:
systemctl restart sshd
如需有關 PermitRootLogin 選項的其他參數資訊,請參閱 OpenBSD 上的 sshd_config。
確保所有使用者都使用 SSH 金鑰對登入,然後停用密碼驗證
Amazon 提供的 AMI 預設組態使用 SSH 金鑰對登入,並停用密碼驗證。這是因為使用密碼會使您的執行個體面臨安全風險,例如暴力密碼破解攻擊。強度不夠的密碼可能會被破解以取得存取權。
因此,如果您將執行個體變更為使用密碼,請使用下列命令還原為預設組態:
1. 使用 vi 編輯器或您選擇的編輯器來存取 sshd_config 檔案:
vi /etc/ssh/sshd_config
2. 確認下列行存在且未註釋:
PasswordAuthentication no
3. 重新啟動 SSH 常駐程式:
systemctl restart sshd
**注意:**在停用密碼驗證之前,確保已安裝金鑰對。這可避免您失去對 EC2 執行個體的 SSH 存取權。每個使用者都需要將其公有金鑰插入 ~/.ssh/authorized_keys 路徑。如需有關金鑰型登入的詳細資訊,請參閱 Amazon EC2 金鑰對和 Linux 執行個體。
限制來自未知來源的存取
如果公有執行個體發生設定錯誤或非預期軟體漏洞的情況,則讓 SSH 連接埠保持開啟且不受限制可能會造成遭到入侵。為防止入侵,請遵循下列最佳實務:
1. 將 SSH 常駐程式更新為 Linux 發行版維護者提供的最新版本。SSH 常駐程式通常會從上游供應商接收來自較新版本的向後移植更新。如需有關向後移植的詳細資訊,請參閱 Red Hat 客戶入口網站上的向後移植安全修正程式。
yum -y install openssh-server # for Amazon Linux, RHEL, Centos
apt update && apt install openssh-server # For Ubuntu, Debian
2. 限制您的安全群組,僅允許從可信 IP (例如公司網路 IP) 傳入連線至連接埠 22。如需詳細資訊,請參閱授權 Linux 執行個體的傳入流量。
3. 部分入侵者可能會嘗試猜測使用者的名稱和密碼,如果連接埠 22 向全世界開放,也可能會嘗試溢位您的 SSH 常駐程式。公用程式 fail2ban 會監控您的日誌檔案是否持續嘗試登入您的執行個體,然後在幾次嘗試失敗之後進行封鎖。若要安裝 fail2ban**:**
Ubuntu:
apt -y install fail2ban
Amazon Linux、CentOS、RHEL:
安裝 EPEL 儲存庫。
執行下列命令:
yum -y install fail2ban
systemctl enable fail2ban
systemctl start fail2ban
如需設定 fail2ban 的詳細資訊,請參閱 Linux 安全性: 使用 fail2ban 保護您的系統 (在 Red Hat 網站上)。