厨师厨师validation。安全

嗨,我正在异地设置一个使用厨师的机器集群。 如果其中一台机器被盗,攻击者可以通过拥有chef-validator.pem对我的厨师服务器或其他节点造成什么样的损害? 还有什么东西可以通过厨师进入? 谢谢!

Solutions Collecting From Web of "厨师厨师validation。安全"

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

初始化新的厨师客户端时,knife bootstrap操作会上传此密钥。 拥有这个密钥使得客户可以在你的厨师服务器上注册自己。 这实际上是它的唯一功能,一旦客户端启动并且不再需要运行验证密钥。

但它可以被滥用….正如@cbl指出,如果未经授权的第三方获得访问这个密钥,他们可以创建新的客户端,可以看到你的厨师服务器上的一切正常的客户端可以看到的。 从理论上讲,它可以用来在你的厨师服务器上创建一个拒绝服务攻击,通过注册请求来填充它。

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

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

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

例如,如果您在未加密的数据包中包含敏感信息,他将可以访问该信息。

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

在编写食谱和填充服务器中的其他对象时请牢记这一点。 您也可以以某种方式监控厨师服务器是否有任何可疑的客户端创建活动,如果您有任何理由认为验证者密钥已被盗用,请撤销它并发出新的密钥。

定期轮换密钥也许是一个好主意。

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

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

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

还有其他一些很好的功能,因为无论您为run_list和环境提供什么,也会在创建节点时将其应用于节点。 没有更多的依赖first-boot.json文件被chef-client读取,并且运行必须在引导过程结束时node.save创建节点之前完成。

基本上,厨师客户端使用2模式认证的服务器:1)组织validator.pem和2)user.pem

除非和直到有这两个键的正确组合。 厨师客户端将无法与主厨服务器进行身份验证。

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

  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连接到厨师服务器