Jak zapobiegać / zapory ogniowej do interfejsu API metadanych wystąpienia AWS EC2?

14

AWS EC2 instancji Metadane API udostępnia wiele przydatnych funkcjonalności. Każdy w rzeczywistej instancji EC2 może wykonać połączenie http://169.254.169.254/i zobaczyć metadane dla instancji, z której wykonano połączenie. Bezpieczeństwo interfejsu API polega na tym, że sprawdza tylko, czy wywołanie pochodzi z instancji. Dlatego jeśli pozwalam komuś uruchamiać kod w mojej instancji, chciałbym wiedzieć, jak najlepiej zablokować dostęp do tego konkretnego adresu URL, zachowując dostęp sam.

Najważniejszym wydarzeniem było dla mnie zaskoczenie, że do interfejsu API metadanych można również uzyskać dostęp za pośrednictwem http://instance-data/(co znalazłem gdzieś przez przypadek).

Jestem w stanie sprawdzić adresy URL wywoływane przez cały kod działający w tej instancji, ale zakładam, że nie jest to dobre podejście, biorąc pod uwagę adresy IPv6 (prawdopodobnie) lub niektóre dziwne kodowania URI, które można by przekształcić w adres IP metadanych (169.254 .169.254) lub niektóre nieudokumentowane (jak się wydaje) adresy URL, takie jak http://instance-data/.

Tristan
źródło

Odpowiedzi:

25

Zapora jest wyłączona.

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

Ta reguła zabrania użytkownikom innym niż użytkownik root otwierania połączeń na numer 169.254.169.254.

Michael Hampton
źródło
Czy nie zapobiegnie to „normalnemu” korzystaniu z tej usługi. Zazwyczaj usługa jest wywoływana przez / obo użytkownika EC2, który prawie nigdy nie jest rootem.
Sam-T
@ Sam-T Jeśli potrzebujesz dostępu do tego użytkownika ec2, z pewnością możesz napisać regułę, która na to pozwoli.
Michael Hampton
Jeśli zapobiegniesz na poziomie zapory ogniowej - aby zezwolić tylko na rootowanie, nie wiesz, jak to zrobić dla użytkownika EC2 (po prostu nie wiem). Przez użytkownika EC2 - mam na myśli tego, kto uruchomił instancję - moje zrozumienie metadanych jest dostępne dla tego (i każdego innego) użytkownika EC2 w instancji. Czy możesz podać przykład
Sam-T