Linux
阻止對從 AWS AMI 啟動的實例進行 SSH 訪問
我們正在嘗試製作一個安全的 AMI,以便分發給我們的一位客戶(執行 Linux/CoreOS)。一旦我們的客戶部署了我們的 AMI,重要的是他們不能獲得 shell 訪問(例如不能通過 SSH 進入)。
從表面上看,這似乎是一個很容易解決的問題:只需確保只有我們的密鑰在 authorized_keys 文件中。但是,當我們的客戶部署我們的 AMI 時,他們被迫提供自己的密鑰對,然後將關聯的公鑰插入到盒子上的 authorized_keys 文件中,使他們能夠通過 SSH 進入盒子。
我知道亞馬遜通過 169.254.169.254 上的 HTTP 使主機作業系統可以訪問公鑰(和使用者元數據)(此處的資訊:http: //docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-對.html )。圍繞 Internet 和 CoreOS 文件系統的一些調查表明 /usr/bin/coreos-metadata 實際上訪問了這個 IP,大概是為了密鑰對,但我無法弄清楚究竟是什麼啟動了該執行檔或如何禁用它。我什至考慮過刪除可執行權限或完全刪除它,但是文件系統的那部分在 CoreOS 上是只讀的(甚至對 root 也是如此)。
顯然,上述行為勝過我們採取的任何安全措施。我們能做些什麼來防止這種情況發生嗎?
cloud-init
正在這樣做。禁用sshd
執行(您的 AMI 建構的一部分),然後執行腳本程式碼,將您的密鑰放置在登錄使用者下(建議使用不同的),啟動ssh
。我還建議使用不同的埠號作為確認您的工作正常的簡單方法。