如何禁用AWS EC2元数据?

本文将教你关于EC2元数据及其重要性。你还将学习如何禁用元数据以保护自己免受SSRF等攻击。

亚马逊网络服务(AWS)拥有亚马逊弹性计算云(Amazon EC2)服务,提供可扩展的处理能力。通过使用Amazon EC2,您可以更快地开发和部署应用程序,无需提前投资硬件。

根据您的需求,启动多个或少量虚拟服务器。使用Amazon EC2来设置网络和安全设置,并控制存储。

EC2元数据

有关实例的信息可以在运行实例中进行自定义或管理,这被称为实例元数据。实例元数据类别包括主机名、事件和安全组。此外,您可以通过实例元数据访问在启动实例时指定的用户数据。

您可以在配置实例时包含一个简短的脚本或指定参数。使用用户数据,您可以创建通用AMI并修改启动时的配置文件。

您可以使用实例元数据选项设置新的或现有的实例执行以下任务:

  • 要求通过IMDSv2发送实例元数据请求
  • 设置PUT响应跳数限制
  • 限制实例元数据访问

可以使用以下技术之一从活动EC2实例访问元数据:IMDSv1sIMDSv2

实例元数据服务称为IMDS。正如您可能猜到的,这些方法稍有不同;IMDSv1采用请求/响应方式,而IMDSv2是会话导向的。

AWS建议您使用首选方法IMDSv2。默认情况下,AWS SDK使用IMDSv2调用,您可以使用IAM策略中的IAM条件键要求用户配置启用IMDSv2的新EC2。

使用以下IPv4或IPv6 URI来查看运行实例的所有类型的实例元数据。

IPv4

curl http://169.254.169.254/latest/meta-data/

IPv6

 curl http://[fd00:ec2::254]/latest/meta-data/

这些IP地址是链路本地地址,仅在实例上有效。

要查看实例元数据,只能使用169.254.169.254的链路本地地址。通过URI对元数据的请求是免费的,因此AWS不会收取额外费用。

禁用元数据的需求

在AWS设置中,SSRF攻击是频繁且众所周知的。FireEye(一家网络安全公司)发现攻击者通过自动化漏洞扫描并从公开可访问的在线应用程序中收集IAM凭据。

为所有EC2实例实现IMDSv2,这具有额外的安全优势,可以减少您的公司面临的这些风险。通过IMDSv2,通过SSRF窃取IAM凭据的可能性将大大减少。

使用服务器端请求伪造(SSRF)访问EC2元数据服务是最常教授的AWS利用技术之一。

大多数EC2实例可以访问元数据服务的IP地址为169.254.169.254。这包含了有关实例的有用信息,例如其IP地址、安全组名称等。

如果EC2实例附加了IAM角色,则元数据服务还将包含用于身份验证的IAM凭证。根据使用的IMDS版本和SSRF的功能,我们可以窃取这些凭据。

还值得考虑的是,拥有对EC2实例的Shell访问权限的对手可以获取这些凭证。

在这个例子中,一个Web服务器在EC2实例的端口80上运行。这个Web服务器有一个简单的SSRF漏洞,允许我们向任何地址发送GET请求。这可以用来发送请求到http://169.254.169.254.

禁用元数据

通过阻止实例元数据服务的HTTP端点,可以防止访问实例元数据,无论您使用的实例元数据服务的哪个版本。

您可以随时通过启用HTTP端点来撤消此更改。使用修改实例元数据选项CLI命令,并将http-endpoint参数设置为disabled以禁用实例的元数据。

要禁用元数据,请运行此命令

aws ec2 modify-instance-metadata-options --instance-id i-0558ea153450674 --http-endpoint disabled

禁用元数据

您可以看到,当我禁用我的元数据后,如果我尝试访问它,我会收到一个FORBIDDEN消息。

如果您想再次启用元数据,请运行此命令

aws ec2 modify-instance-metadata-options --instance-id i-0558ea153450674 --http-endpoint enabled

再次启用元数据

结论

元数据对于从大型数据存储中提取信息非常有用。然而,它也可以被滥用来在未经他们知情或同意的情况下了解一个人的位置或身份。因为它记录了您进行的每一次更改,包括删除和评论,所以您需要意识到它可能包含您不希望其他人能够看到的信息。因此,删除元数据对于维护您的在线隐私和匿名性非常重要。

您还可以探索一些提升您的AWS学习的AWS Key Terminologies

类似文章