Como impedir / chamadas de firewall para a API de metadados da instância do AWS EC2?

14

A API de metadados da instância do AWS EC2 fornece muitas funcionalidades úteis. Qualquer pessoa na instância do EC2 real pode fazer uma chamada http://169.254.169.254/e ver os metadados da instância da qual a chamada foi feita. A segurança da API é tal que apenas verifica se a chamada se origina da instância. Portanto, se estou permitindo que alguém execute código na minha instância, gostaria de saber como bloquear melhor o acesso a esse URL específico, mantendo o acesso por mim mesmo.

Como destaque, fiquei surpreso ao descobrir que a API de metadados também pode ser acessada via http://instance-data/(que encontrei por acaso em algum lugar).

Sou capaz de inspecionar os URLs que estão sendo chamados por todo o código em execução nesta instância, mas presumo que essa não seja uma boa abordagem, dado os endereços IPv6 (possivelmente), ou algumas codificações estranhas de URI que seriam resolvidas no IP de metadados (169.254 .169.254), ou alguns URLs não documentados (ao que parece) como http://instance-data/.

Tristan
fonte

Respostas:

25

Firewall desligado.

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

Esta regra proíbe qualquer usuário que não seja o usuário raiz de abrir conexões para 169.254.169.254.

Michael Hampton
fonte
Isso não impedirá o uso "normal" deste serviço. Normalmente, o serviço é chamado por / obo o usuário do EC2 que quase nunca é a raiz.
Sam-T
@ Sam-T Se você precisar do usuário do ec2 para acessá-lo, certamente poderá escrever uma regra para permitir isso.
Michael Hampton
Se você impedir, no nível do firewall, de permitir apenas o root, não sabe como ativá-lo para o usuário do EC2 (eu simplesmente não sei). Por usuário do EC2 - quero dizer, quem iniciou a instância - meu entendimento é de metadados e é acessado por esse (e qualquer outro) usuário do EC2 na instância. Você poderia dar exemplo
Sam-T