我最近读到了关于新的实例元数据服务 - IMDSv2 的信息,它修复了 EC2 环境中的 SSRF 攻击。 当我直接通过 cli 使用 EC2 时,我了解它是如何工作的。 但是我找不到任何信息,在代表我处理 EC2 实例创建的弹性 beanstalk 中采取什么步骤使用它以及如何在那里强制执行它。
有人可以告诉我这是否已经或将来可能吗? 我找不到这方面的信息。
提前谢谢。
您可以将 Lambda 函数配置为在 Auto Scaling 组中启动新实例时触发
使用启动模板而不是启动配置使您可以灵活地在 CloudFormation 中设置此参数,但目前没有明确记录的方法。
首先,AWS提供了一个新的Cloudwatch指标,该指标提供了正在进行的IMDS v1调用数量的可见性。您可以使用它来监控在实例上进行 IMDS v1 调用的频率。您可以设置此选项来监控您的 Elastic Beanstalk 实例。
接下来,我们需要在实例上启用 IMDS v2。为此,我们需要最新版本的 AWS CLI (aws-cli/1.16.287 Python/3.6.8(。针对 AWS CLI 发布了一个更新,其中包含在 EC2 下启用/禁用 IMDSv2 的选项。
在迁移方面,Elastic Beanstalk 允许您配置使用的实例。 您可以按照在 Linux 服务器上自定义软件中提供的步骤进行操作,并且 确保存在最新版本的 AWS CLI。 设置完成后,您可以运行
AWS EC2 修改实例元数据选项 --实例 ID --配置文件 --已启用 HTTP 终端节点 --需要 HTTP 令牌
如修改实例元数据选项中所述
您还可以指定在 Elastic Beanstalk 中实例启动时运行的命令,如在 Linux 服务器上自定义软件中所述,以包括
curl http://169.254.169.254/latest/meta-data/instance-id | \
xargs -I {} aws ec2 modify-instance-metadata-options --instance-id {} --profile --http-endpoint enabled --http-tokens required
这应该负责在启动时为相应的实例配置 IMDSv2。
引用:
- 配置实例元数据服务
-
AWS 安全博客
除此之外,您还可以使用 IAM 条件强制 IAM 用户无法启动实例,除非它使用 IMDSv2,还可以强制 IAM 用户无法重新启用 IMDSv1。(详情见参考文献1(