如何防止/防火墙调用AWS EC2实例元数据API?


14

AWS EC2实例元数据API提供了很多有用的功能。实际EC2实例上的任何人都可以拨打电话,http://169.254.169.254/并查看从其发出呼叫的实例的元数据。API的安全性使得它仅检查调用是否源自实例。因此,如果我允许某人在我的实例上运行代码,我想知道如何最好地阻止对该特定URL的访问,同时自己保留访问权限。

作为一个亮点,我很惊讶地发现Metadata API也可以通过http://instance-data/(我在某个地方偶然发现)也可以访问。

我能够检查在此实例上运行的所有代码所调用的url,但我假定给定IPv6地址(可能)或某些可解析为元数据IP的奇怪URI编码,这不是一个好方法(169.254 .169.254),或某些未记录的URL(似乎)http://instance-data/

Answers:


25

防火墙关闭。

iptables -A OUTPUT -m owner ! --uid-owner root -d 169.254.169.254 -j DROP

此规则禁止除root用户以外的任何用户打开与169.254.169.254的连接。


这是否会阻止该服务的“正常”使用。通常,该服务由几乎不是root用户的EC2用户调用/引导。
Sam-T

@ Sam-T如果您需要ec2-user来访问它,则当然可以编写一条规则来允许它。
迈克尔·汉普顿

如果您在防火墙级别阻止-仅允许root用户,则不确定如何为EC2用户启用它(我只是不知道)。EC2用户-我的意思是无论谁启动该实例-我的理解是该实例(以及其他任何EC2用户)都可以访问元数据。你能给例子
山姆-T
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.