Назад | Перейти на главную страницу

Amazon VPC: как заблокировать входящий трафик на определенном IP-адресе инстанса, разрешив при этом другие IP-адреса того же инстанса

Характеристики

У меня есть экземпляр Amazon VPC со следующими характеристиками:

Требования

В основном мой экземпляр имеет 12 IP-адресов, и я хочу заблокировать TCP 80 INBOUND TO 2 из этих 12 IP-адресов. Помните, что все 12 IP-адресов назначены одному экземпляру.

Возможные решения и ограничения

Обратите внимание, почему этого нельзя достичь с помощью групп SG и ACL:

Ссылки:

P.S. Пожалуйста, внимательно прочтите информацию выше и спросите меня, если вопрос не ясен. Не интерпретируйте это просто как простой сценарий, глядя на заголовок. И, пожалуйста, придерживайтесь проблемы, предложения приветствуются, но не полностью отклоняются от проблемы.

На случай, если кому-то интересно, как я это сделал, ИЛИ столкнется с аналогичной ситуацией. Мне пришлось выбрать одно из возможных решений, о которых я упомянул в вопросе.

Добавление еще одного сетевого интерфейса к экземпляру; размещение тех IP-адресов, которые должны блокировать http на этой дополнительной сетевой карте, и управление трафиком с помощью SG на этой сетевой карте.

Я также упомянул об ограничении вышеуказанного возможного решения.

В нашей ситуации это НЕВОЗМОЖНО, потому что это 32-битная машина, а максимально возможный тип экземпляра - это m1.medium или c1.medium. Любой из них поддерживает максимум 2 NIC, которые уже есть в машине, и мы не можем добавить третью.

Хотя ограничение все еще существует, это был ЕДИНСТВЕННЫЙ вариант, который, как я мог засвидетельствовать, работал в моей ситуации. Итак, я решил переместить некоторых клиентов на другую машину и реализовать описанное выше на обеих машинах. Подробные логические шаги можно сформулировать следующим образом:

  1. Переместите 3 из 6 клиентских установок из первого экземпляра Windows в клон этого экземпляра Windows. В результате на одном экземпляре Windows будет 6 IP-адресов.
  2. Иметь 2 сетевых интерфейса с каждым экземпляром Windows. Скажите ENI-1 и ENI-2.
  3. Те IP-адреса, которым необходимо принимать HTTP-трафик, прикрепите их к ENI-1.
  4. Те IP-адреса, которым необходимо блокировать HTTP-трафик, прикрепите их к ENI-2.
  5. Создайте две группы безопасности; скажем http_sg_ALLOW и http_sg_BLOCK.
  6. Добавьте правила в http_sg_ALLOW, чтобы разрешить HTTP-трафик из любых источников, которые вы хотите.
  7. Примените http_sg_ALLOW к ENI-1.
  8. Добавьте правила в http_sg_BLOCK, чтобы блокировать HTTP-трафик из любых источников, которые вы хотите.
  9. Примените http_sg_BLOCK к ENI-2.

SG и ACL Amazon не предназначены для управления трафиком на основе IP (см. Примечание в конце).

Это категорически неверно.

Группы безопасности жестяная банка быть построенным с использованием идентификаторов экземпляров, но вы также можете использовать подсети CIDR. Это относится как к трафику, входящему / исходящему в VPC. в дополнении к также применительно к трафику в пределах ваш VPC. Если у вас есть конфигурация VPC "по умолчанию", есть SG по умолчанию, который разрешает весь трафик между участниками SG, но если вы выберете, вы можете полностью удалить этот SG и построить свою собственную структуру SG.

Что касается ACL, как Mxx сказал выше, они ограничиваются подсетью, включая одиночный хост. /32 подсети. Кроме того, списки ACL применяются только к трафику, пересекающему границу подсети, поэтому их использование может быть неприменимо в вашей ситуации.

Брандмауэр Windows по умолчанию отключен. Включать его рискованно, потому что это может привести к различным невидимым проблемам. Поскольку это производственная машина, мы не хотим рисковать. Однако это было бы нашим последним средством.

Для этого и нужна среда test / dev. Создайте макет предлагаемого набора правил и протестируйте его, а затем разверните на своей производственной машине.

И я хочу, чтобы только 2 из этих 12 IP-адресов прекратили прослушивание TCP 80, в то время как другие 10 IP-адресов (снова в том же экземпляре) продолжали прослушивать TCP 80.

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


ИМХО, вы делаете это совершенно неправильно. Для этих целей иметь 12 IP-адресов на сервере - безумие. Что ты должен сделать так, чтобы каждый экземпляр вашего программного обеспечения прослушивал другой порт, а затем помещал перед ним уровень маршрутизации. Небольшого экземпляра с nginx или чем-то подобным будет более чем достаточно, и этот сервер может обратный прокси-трафик http к приложению. Это даст вам единое место для управления доступом, которое может быть на уровне приложения в nginx. или через группы безопасности.


Что касается того, куда идти дальше - я не завидую вашей позиции. Вы запускаете EOL, приложение без поддержки в (почти) EOL, не поддерживаемой операционной системе, развернутое в среде, в которой оно явно не предназначалось для использования. Я подозреваю, что именно поэтому вы получаете проголосовали против, хотя, как указано ниже, я не голосовал против вас.

Честно говоря, если вы не можете выполнить обновление до последней версии ОС или последней версии программного обеспечения (которое поддерживает привязку к произвольным портам), я бы подумал о выходе из EC2 и перемещении этого приложения на «устаревшую» хостинговую платформу.