【问题标题】:Chef chef-validator.pem securityChef chef-validator.pem 安全性
【发布时间】:2013-10-28 00:58:13
【问题描述】:

您好,我正在异地使用 Chef 设置机器集群。如果其中一台机器被盗,攻击者可以通过拥有 chef-validator.pem 对我的 chef-server 或其他节点造成什么损害?他们还可以通过厨师获得哪些其他东西?谢谢!

【问题讨论】:

    标签: linux ubuntu chef-infra


    【解决方案1】:

    这是最近一集中关于管理厨师“秘密”的Foodfight 节目中讨论的项目之一。强烈推荐观看:

    knifebootstrap 操作在初始化新的 chef 客户端时会上传这个 key。拥有此密钥使客户端能够将自己注册到您的厨师服务器。这实际上是它唯一的功能,一旦客户端启动并运行验证密钥就不再需要了。

    但它可能会被滥用....正如@cbl 所指出的,如果未经授权的第 3 方获得了访问此密钥的权限,他们可以创建新客户端,该客户端可以看到普通客户端可以看到的厨师服务器上的所有内容。从理论上讲,它可以用来在您的主厨服务器上创建拒绝服务攻击,方法是向其发送注册请求。

    foodfight 小组推荐一个简单的解决方案。在所有节点上启用 chef-client 食谱。它包含一个“delete_validation”配方,该配方将删除验证密钥并降低您的风险敞口。

    【讨论】:

      【解决方案2】:

      验证器密钥用于在 Chef 服务器上创建新客户端。

      一旦攻击者掌握了它,他就可以假装自己是您基础设施中的一个节点,并可以访问任何节点所拥有的相同信息。

      例如,如果您在未加密的数据包中有敏感信息,他将有权访问。

      基本上,他将能够运行任何食谱中的任何食谱、进行搜索(并可以访问所有其他节点的属性)、读取数据包等。

      在编写说明书和填充服务器中的其他对象时请记住这一点。您还可以通过某种方式监控 Chef 服务器是否有任何可疑的客户端创建活动,如果您有任何理由认为验证器密钥已被盗,请撤销它并发布一个新的。

      定期轮换密钥可能也是个好主意。

      【讨论】:

      • 是的!这就是为什么你应该总是在节点上运行chef-client::delete_validator。
      • 并考虑使用 chef-vault 来加密敏感信息。它进一步降低了未经授权访问厨师服务器的风险
      • +1 密钥轮换想法。如果厨师节点位于网络之外,这将使旧的验证密钥无用。
      【解决方案3】:

      从 Chef 12.2.0 开始,不再需要验证密钥:

      https://blog.chef.io/2015/04/16/validatorless-bootstraps/

      您可以删除工作站上的验证密钥,然后knife 将使用您的用户凭据创建节点和客户端。

      还有其他一些不错的功能,因为您为 run_list 和环境提供的任何内容在创建时也会应用于节点。不再依赖于由 chef-client 读取的 first-boot.json 文件,并且必须在 node.save 在引导过程结束时创建节点之前完成运行。

      【讨论】:

        【解决方案4】:

        基本上,chef-client 对服务器使用 2 模式身份验证:- 1) 组织验证器.pem 和 2) 用户.pem

        除非和直到这两个键的正确组合。 chef-client 将无法通过 Chef 服务器进行身份验证。

        【讨论】:

          【解决方案5】:

          他们甚至可以通过以下步骤使用被盗密钥将任何节点连接到厨师服务器。

          1. 将验证器密钥复制并粘贴到任何机器上的 /etc/chef 文件夹中

          2. 使用以下详细信息创建 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 服务器

          【讨论】:

            猜你喜欢
            • 2017-11-06
            • 2020-06-28
            • 1970-01-01
            • 2012-12-05
            • 2014-09-10
            • 2020-02-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多