Як запобігти / виклик брандмауера до API метаданих екземпляра AWS EC2?


14

API AWS EC2 примірника метаданих надає багато корисних функцій. Будь-хто з фактичного екземпляра EC2 може здійснити виклик http://169.254.169.254/та переглянути метадані для того випадку, з якого був здійснений виклик. Захищеність API така, що він перевіряє лише те, що виклик походить від екземпляра. Тому, якщо я дозволяю комусь запускати код у моєму екземплярі, я хотів би знати, як найкраще блокувати доступ до конкретного URL-адреси, зберігаючи доступ сам.

Як важливу увагу, я з подивом виявив, що API API метаданих також можна отримати через http://instance-data/(що я десь випадково знайшов).

Я можу перевірити URL-адреси, які викликаються всім кодом, що працює в цьому екземплярі, але я припускаю, що це не гарний підхід з урахуванням IPv6-адрес (можливо), або якихось дивних кодувань URI, які вирішать IP-адресу метаданих (169.254 .169.254) або деякі недокументовані (схоже) URL-адреси на зразок http://instance-data/.

Відповіді:


25

Брандмауер відключився.

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

Це правило забороняє будь-якому користувачу, окрім кореневого користувача, відкривати з'єднання до 169.254.169.254.


Чи це не завадить "нормальному" використанню цієї послуги. Зазвичай послугу викликає / obo користувач EC2, який майже ніколи не має кореня.
Сем-Т

@ Sam-T Якщо вам потрібен користувач ec2 для доступу до нього, ви, безумовно, можете написати правило, щоб це також дозволити.
Майкл Хемптон

Якщо ви перешкоджаєте на рівні брандмауера - дозволити лише корінь, не знаєте, як би ви його включили для користувача EC2 (я просто не знаю). Користувач EC2 - я маю на увазі той, хто запустив екземпляр - моє розуміння метаданих отримує доступ до цього (та будь-якого іншого) користувача EC2 у екземплярі. Чи можете ви навести приклад
Sam-T
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.