AWS Amazon EC2 – 使用PEM密钥对的非root用户的无密码SSHlogin

我们已经在AWS上运行了两个集群(HAProxy / Solr,PGPool / PostgreSQL),并且我们已经设置了脚本来允许新的从属实例被自动包含到集群中,通过更新他们的IP来configurationS3上的configuration文件,然后通过SSH连接到主实例来踢他们下载修改后的configuration并重新启动服务。 这一切都很好,但在testing中,我们使用我们的主要pem为SSH,这意味着它需要存储在一个实例。 不好。

我想要一个可以使用AWS密钥对的非root用户,他们将拥有sudo访问权限来运行download-config-and-restart脚本,但是没有别的。 rbash似乎是要走的路,但我知道这可能是不安全的,除非正确设置。

那么这种方法有什么安全漏洞呢?

  • 为user.pem创build的新AWS密钥对(不是真的叫'user')
  • 实例上的新用户:用户
  • 用户的公钥是〜user / .ssh / authorized_keys(通过用user.pem创build新的实例,并从/root/.ssh/authorized_keys复制)
  • 用户的私钥在〜user / .ssh / user.pem中
  • 'user'具有/ home / user / bin / rbash的loginshell
  • 〜user / bin /包含到/ bin / rbash和/ usr / bin / sudo的符号链接
  • / etc / sudoers有条目“user ALL =(root)NOPASSWD:[脚本path]
  • 〜user / .bashrc将PATH设置为/ home / user / bin /
  • 〜user / .inputrc有'设置禁用完成',以防止'sudo /'双查找path。
  • 〜user / -R由拥有对用户的只读权限的root拥有,除了〜user / .ssh(用于写入known_hosts)和〜user / bin / *(它们是+ x
  • 实例间通信使用'ssh -o StrictHostKeyChecking = no -i〜user / .ssh / user.pem user @ [host] sudo [scriptname]'

任何想法都会受到欢迎。

标记…

好吧,没有任何回应说这是以任何方式暴露,除非有人进入用户login,他们得到用户的PEM密钥。 哪个不应该让他们得到其他地方*。

它正在与上述方法。

*通常的注意事项适用