使用 AWS re:Post 即表示您同意 AWS re:Post 使用條款

使用 SSH 安全地存取 EC2 Linux 執行個體,同時避免未經授權的存取的最佳實務是什麼?

2 分的閱讀內容
0

我想使用 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 網站上)。


AWS 官方
AWS 官方已更新 2 年前