Разрешить HTTP-доступ к экземплярам AWS только через ELB

Я видел кучу похожих вопросов, таких как этот, но никто не дает общий ответ. Я новичок в AWS. У меня есть 2 экземпляра, запущенных в моем VPC прямо сейчас. У меня есть установка ELB перед ними, что отлично работает в маршрутизации трафика для обоих. Проблема в том, что оба экземпляра также могут быть затронуты HTTP из всей сети. Я хотел бы изменить ситуацию, чтобы мои экземпляры могли попасть в HTTP через мой ELB. Как я могу это сделать?

Ответ 1

Я нашел то, что искал. В группах безопасности вы можете добавить другую группу безопасности в качестве источника в пользовательском IP-адресе. Было бы здорово, если бы Amazon упростил это, так как группа безопасности не является обычным IP-адресом вообще. Во всяком случае, так вы это делаете: rules

Ответ 2

Я собираюсь предложить следующий дополнительный подход, который приходит после того, как исходное решение будет принято. Первоначальное решение, пожалуй, лучше всего, но подход ниже прямолинейный, и если ничто другое не поможет в устранении неполадок.

Во-первых, отключите от экземпляров какие-либо правила или группы безопасности, которые позволяют HTTP из Интернета в целом. Будьте особенно подозрительны к 0.0.0.0/0, что означает all ip-адреса. Затем в группе безопасности, примененной к экземпляру, разрешите порт 80/http из частного адресного пространства VPC. Если, например, ваше приватное адресное пространство VPC равно 172.31.0.0/16, тогда позвольте этому диапазону получить доступ к вашему экземпляру через группу безопасности, применяемую непосредственно к экземпляру. На этом этапе сервер httpd-сервера в экземпляре должен показывать попытки доступа из определенных частных адресов балансировки нагрузки. Предполагая, что файл целевой проверки работоспособности существует и должным образом обслуживается httpd, статус проверки работоспособности целевой группы должен изменяться с нездорового на здоровый. Обратите внимание, что средство проверки состояния балансировки нагрузки четко идентифицирует себя в журналах httpd как ELB-HealthChecker.

172.31.3.56 - - [24/Oct/2017:17:02:36 +0000] "GET /index.html HTTP/1.1" 200 265 "-" "ELB-HealthChecker/2.0"
172.31.20.249 - - [24/Oct/2017:17:02:36 +0000] "GET /index.html HTTP/1.1" 200 265 "-" "ELB-HealthChecker/2.0"
172.31.3.56 - - [24/Oct/2017:17:03:06 +0000] "GET /index.html HTTP/1.1" 200 265 "-" "ELB-HealthChecker/2.0"
172.31.20.249 - - [24/Oct/2017:17:03:06 +0000] "GET /index.html HTTP/1.1" 200 265 "-" "ELB-HealthChecker/2.0"

В этот момент вы можете ограничить IP-адреса, разрешенные группой безопасности, только тем, которые отображаются в журналах httpd, но я был бы осторожен, потому что если ELB перезагрузится или если его конфигурация будет изменена или перезагружена, я сомневаюсь что гарантированно будет повторно получить те же личные адреса, которые были сохранены ранее.

Теперь, когда балансировщик нагрузки подтвердит свои цели как здоровые, он будет считать их готовыми к обслуживанию и начать направлять трафик на них. И по оригинальным планам ( "Проблема в том, что оба экземпляра также могут быть затронуты HTTP из всей сети" ). Этот подход не позволяет получить доступ к экземплярам со всей сети.

Большинство читателей здесь будут знакомы с частной адресацией. Для тех, кто не является статьей Википедии, является хорошей ссылкой как любой.