如何在Elastic beanstalk环境中使用IMDSv2?

问题描述 投票:0回答:3

我最近读到了新的 实例元数据服务 - IMDSv2,它修复了 EC2 环境中的 SSRF 攻击。 我了解当我通过 cli 直接使用 EC2 时它是如何工作的。 但我找不到任何信息,需要采取哪些步骤在代表我处理 EC2 实例创建的 Elastic beanstalk 中使用它,以及如何在那里强制执行它。

有人可以告诉我这是否已经或将来可能吗? 我找不到这方面的信息。

提前致谢。

amazon-web-services security amazon-ec2 amazon-elastic-beanstalk
3个回答
1
投票

您可以配置 Lambda 函数,以便在 Auto Scaling 组中启动新实例时触发

使用启动模板而不是启动配置可以让您灵活地在 CloudFormation 中设置此参数,但目前没有明确记录的方法。


0
投票

首先,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 修改实例元数据选项 --instance-id --profile --http-endpoint 已启用 --http-tokens 需要

修改实例元数据选项

中所述

您还可以指定要在 Elastic Beanstalk 中的实例启动时运行的命令,如要包含的在 Linux 服务器上自定义软件中所示。

curl

http://169.254.169.254/latest/meta-data/instance-id | \ xargs -I {} aws ec2 修改实例元数据选项 --instance-id {} --profile --http-端点已启用 --http-tokens 需要

这应该负责在启动时为相应实例配置 IMDSv2。

参考资料:

  1. 配置实例元数据服务
  2. AWS 安全博客

    除了上述内容之外,您还可以使用 IAM 条件来强制 IAM 用户无法启动实例,除非它使用 IMDSv2,还可以强制 IAM 用户无法重新启用 IMDSv1。 (详情请参阅参考资料 1)


0
投票
现在比

Sandesh 的回答中描述的要简单一些。

此处所述,对于 AL2023,IMDSv2 由 默认 启用,但对于 AL2 则不启用。

要显式启用 IMDSv2,您可以将以下内容添加到您的

.ebextensions

(或在您的 cloudformation 模板中),或使用 Web 控制台,如 
IMDS 文档中所述:

option_settings: aws:autoscaling:launchconfiguration: DisableIMDSv1: true
然后您可以在 

Elastic Beanstalk 平台挂钩中使用 IMDSv2,如许多 IMDSv2 文档示例中所述。

举一个例子:您可以在

.platform

 挂钩中获取 EC2 实例的公共主机名,如下所示:

#!/bin/bash TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600") failed" EC2_PUBLIC_HOSTNAME=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-hostname) echo "hostname: $EC2_PUBLIC_HOSTNAME" ...
请注意,ip 

169.254.169.254

 是由 AWS 指定的。

© www.soinside.com 2019 - 2024. All rights reserved.