Можно ли строго ограничить входящий и исходящий трафик между внешними и внутренними виртуальными машинами Azure IaaS на уровне сети?
Я хотел бы создать внепараноидальную настройку DMZ -концентратора в Azure с использованием виртуальных машин IaaS.
У меня есть общедоступный внешний интерфейсный сервер (то есть веб-сервер IIS), который я хотел бы строго заблокировать. Однако внешнему интерфейсу требуется доступ к некоторым внутренним серверам (например, к базе данных, контроллеру домена и т. Д.). Я хочу обеспечить:
- Только сервер переднего плана может общаться с внутренними серверами, и только на согласованных портах.
- Внутренние серверы не могут получать или отправлять трафик из / в общедоступный Интернет.
- Внутренние серверы не могут общаться друг с другом.
- Эти правила применяются за пределами уровня операционной системы виртуальной машины для обеспечения глубокой защиты.
Это кажется разумным сценарием, но я не могу добиться этого в Azure. Самое близкое, что я смог сделать, это:
- Создайте интерфейс IaaS VM и соответствующим образом ограничьте его конечные точки
- Создайте виртуальную сеть Azure с подсетями "FrontEnd" и "BackEnd", поместив каждую машину в соответствующие подсети.
- Запретить доступ RDP к внутренним виртуальным машинам. Если я хочу выполнить RDP к бэкэнд-машинам, я должен сделать это через внешнюю виртуальную машину.
- Настройте правила брандмауэра Windows на каждом из этих компьютеров, чтобы обеспечить соблюдение этих правил.
Это работает нормально, но не так заперто, как хотелось бы. Я действительно хочу иметь глубокую защиту, чтобы не полагаться на настройки брандмауэра Windows/Linux на каждой машине. Например, допустим, что на внутреннем сервере должно быть запущено приложение с учетными данными администратора (предположим, что альтернативы этому нет). Мне нужен дополнительный уровень защиты, чтобы ошибка (или вредоносный запрос) на внутреннем сервере не могла:
- Переконфигурируйте брандмауэр бэкэнда, чтобы он был менее ограничительным.
- Поговорите с кем-либо еще, кроме внешнего интерфейса (включая общедоступный Интернет).
Насколько я могу судить, это невозможно в Azure с использованием виртуальной сети, потому что:
- Виртуальные сети Azure, похоже, не предоставляют списки ACL или какую-либо другую расширенную поддержку фильтрации.
- Виртуальные машины Azure IaaS поддерживают только одну сетевую карту, поэтому внешний интерфейс не может быть подключен как к внутреннему, так и к внутреннему подсетям.
Я что-то пропустил? Кажется, что я мог бы взломать что-то вместе, используя несколько виртуальных сетей и объединить их в VPN как кучу подсетей /30, но это выглядит довольно ужасно. Если я не могу понять это в Azure, кажется, что единственная разумная альтернатива - попытаться настроить что-то подобное в AWS с использованием Virtual Private Cloud (VPC). Любая помощь / руководство будет оценено.
2 ответа
Я получил частный ответ от команды Azure, которая фактически сказала, что в настоящее время это невозможно. Это запрошенная функция, но нет установленного графика ее реализации.
По состоянию на ноябрь 2015 года теперь можно доставить то, что вы просите, хотя и в IaaS v2.
Подобные брандмауэру правила, ограниченные диапазонами адресов, портами и протоколами, могут быть доставлены через группы сетевой безопасности (NSG). Это хорошо документировано на сайте Microsoft: что такое группа сетевой безопасности (NSG)?
Теперь вы также можете создавать виртуальные машины с несколькими сетевыми картами (опять же, IaaS v2), однако помните, что вам может потребоваться увеличить размер виртуальной машины, чтобы добавить более одной. Опять же, есть разумная статья, подробно объясняющая это: создание виртуальной машины с несколькими сетевыми картами