【发布时间】:2013-10-28 00:58:13
【问题描述】:
您好,我正在异地使用 Chef 设置机器集群。如果其中一台机器被盗,攻击者可以通过拥有 chef-validator.pem 对我的 chef-server 或其他节点造成什么损害?他们还可以通过厨师获得哪些其他东西?谢谢!
【问题讨论】:
标签: linux ubuntu chef-infra
您好,我正在异地使用 Chef 设置机器集群。如果其中一台机器被盗,攻击者可以通过拥有 chef-validator.pem 对我的 chef-server 或其他节点造成什么损害?他们还可以通过厨师获得哪些其他东西?谢谢!
【问题讨论】:
标签: linux ubuntu chef-infra
这是最近一集中关于管理厨师“秘密”的Foodfight 节目中讨论的项目之一。强烈推荐观看:
knifebootstrap 操作在初始化新的 chef 客户端时会上传这个 key。拥有此密钥使客户端能够将自己注册到您的厨师服务器。这实际上是它唯一的功能,一旦客户端启动并运行验证密钥就不再需要了。
但它可能会被滥用....正如@cbl 所指出的,如果未经授权的第 3 方获得了访问此密钥的权限,他们可以创建新客户端,该客户端可以看到普通客户端可以看到的厨师服务器上的所有内容。从理论上讲,它可以用来在您的主厨服务器上创建拒绝服务攻击,方法是向其发送注册请求。
foodfight 小组推荐一个简单的解决方案。在所有节点上启用 chef-client 食谱。它包含一个“delete_validation”配方,该配方将删除验证密钥并降低您的风险敞口。
【讨论】:
验证器密钥用于在 Chef 服务器上创建新客户端。
一旦攻击者掌握了它,他就可以假装自己是您基础设施中的一个节点,并可以访问任何节点所拥有的相同信息。
例如,如果您在未加密的数据包中有敏感信息,他将有权访问。
基本上,他将能够运行任何食谱中的任何食谱、进行搜索(并可以访问所有其他节点的属性)、读取数据包等。
在编写说明书和填充服务器中的其他对象时请记住这一点。您还可以通过某种方式监控 Chef 服务器是否有任何可疑的客户端创建活动,如果您有任何理由认为验证器密钥已被盗,请撤销它并发布一个新的。
定期轮换密钥可能也是个好主意。
【讨论】:
从 Chef 12.2.0 开始,不再需要验证密钥:
https://blog.chef.io/2015/04/16/validatorless-bootstraps/
您可以删除工作站上的验证密钥,然后knife 将使用您的用户凭据创建节点和客户端。
还有其他一些不错的功能,因为您为 run_list 和环境提供的任何内容在创建时也会应用于节点。不再依赖于由 chef-client 读取的 first-boot.json 文件,并且必须在 node.save 在引导过程结束时创建节点之前完成运行。
【讨论】:
基本上,chef-client 对服务器使用 2 模式身份验证:- 1) 组织验证器.pem 和 2) 用户.pem
除非和直到这两个键的正确组合。 chef-client 将无法通过 Chef 服务器进行身份验证。
【讨论】:
他们甚至可以通过以下步骤使用被盗密钥将任何节点连接到厨师服务器。
将验证器密钥复制并粘贴到任何机器上的 /etc/chef 文件夹中
使用以下详细信息创建 client.rb 文件
log_location STDOUT
chef_server_url "https://api.chef.io/organizations/ORGNAME"
validation_client_name 'ORGNAME-validator'
validation_key '/etc/chef/validater.pem'
3:运行 chef-client 连接到 chef 服务器
【讨论】: