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/.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 有条目“用户 ALL=(root) NOPASSWD: [脚本路径]
  • ~user/.bashrc 仅将 PATH 设置为 /home/user/bin/
  • ~user/.inputrc 已“设置 disable-completion on”以防止通过“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 密钥。这不应该让他们去别的地方*。

它正在采用上述方法。

*适用常见警告

相关内容