AWS Amazon EC2 - 使用 PEM 金鑰對的非 root 使用者的無密碼 SSH 登入

AWS Amazon EC2 - 使用 PEM 金鑰對的非 root 使用者的無密碼 SSH 登入

我們在 AWS 上運行了幾個叢集(HAProxy/Solr、PGPool/PostgreSQL),並且我們設定了腳本,透過將其 IP 更新為 S3 上保存的配置文件,允許新的從屬實例自動包含到叢集中,然後透過SSH 連接到主實例,讓它們下載修改後的設定並重新啟動服務。一切都運作良好,但在測試中我們使用我們的主 pem 進行 SSH,這意味著它需要儲存在實例上。不好。

我想要一個可以使用 AWS 金鑰對的非 root 用戶,該用戶將具有 sudo 存取權限來運行下載配置和重新啟動腳本,但僅此而已。 rbash 似乎是可行的方法,但我知道除非設定正確,否則這可能不安全。

那麼這種方法有哪些安全漏洞:

  • 為 user.pem 建立新的 AWS 金鑰對(並非真正稱為「使用者」)
  • 實例上的新使用者:user
  • 使用者的公鑰位於 ~user/.ssh/authorized_keys 中(透過使用 user.pem 建立新實例並從 /root/.ssh/authorized_keys 複製它來取得)
  • 使用者的私鑰位於 ~user/.ssh/user.pem 中
  • “user”的登入 shell 為 /home/user/bin/rbash
  • ~user/bin/ 包含到 /bin/rbash 和 /usr/bin/sudo 的符號鏈接
  • /etc/sudoers 有條目“user ALL=(root) NOPASSWD: [腳本路徑]
  • ~user/.bashrc 僅將 PATH 設定為 /home/user/bin/
  • ~user/.inputrc 具有「設定停用完成」以防止從「sudo /」雙擊來尋找路徑。
  • ~user/ -R 由root 擁有,對使用者俱有唯讀存取權限,但~user/.ssh 除外,它對使用者俱有寫入存取權限(用於寫入known_hosts),而~user/bin/* 則為+ x
  • 實例間通訊使用 'ssh -o StrictHostKeyChecking=no -i ~user/.ssh/user.pem user@[host] sudo [scriptname]'

任何想法都會受到歡迎。

標記...

答案1

好吧,沒有任何回應說這是以任何方式可怕地暴露的,除瞭如果有人進入用戶登錄,他們會獲取用戶的 PEM 密鑰這一事實。這不應該讓他們到達其他地方*。

它正在採用上述方法。

*通常的注意事項適用

相關內容