这AWS EC2 实例元数据 API提供了很多有用的功能。实际 EC2 实例上的任何人都可以调用http://169.254.169.254/
并查看调用实例的元数据。API 的安全性使得它只检查调用是否来自实例。因此,如果我允许某人在我的实例上运行代码,我想知道如何最好地阻止对该特定 URL 的访问,同时保留我自己的访问权限。
值得一提的是,我很惊讶地发现元数据 API 也可以通过以下方式访问http://instance-data/
(这是我在某处偶然发现的)。
我可以检查此实例上运行的所有代码所调用的 URL,但我认为这不是一个好方法,因为 IPv6 地址(可能),或者一些会解析为元数据 IP(169.254.169.254)的奇怪 URI 编码,或者一些未记录的(似乎)URL 之类的http://instance-data/
。
答案1
关闭防火墙。
iptables -A OUTPUT -m owner ! --uid-owner root -d 169.254.169.254 -j DROP
此规则禁止除root用户之外的任何用户打开到169.254.169.254的连接。