Promiscuous Mode ("Неразборчивый" режим) - это режим, при котором сетевой адаптер начинает получать все пакеты независимо от того, кому они адресованы. Если рассматривать promiscuous mode в контексте виртуального свича (vSwitch), а, точнее, группы портов на этом свиче, то данный режим позволит перехватывать все пакеты, проходящие через данную группу портов, любой виртуальной машине, непосредственно присоединенной к ней.
Чтобы лучше понять назначение promiscuous mode, приведу практический пример. Допустим, у нас есть четыре виртуальные машины:
Прошу не заострять внимание на роли данных виртуальных машин. На самом деле, на этих ВМ стоят чистые операционные системы, и больше ничего нет. Роли расписаны для примера и полноты картины.
и сеть, которая на данный момент выглядит следующим образом:
Как видно выше, все четыре ВМ находятся в одной группе портов и прекрасно себе работают. Но в один очень хороший день вы решаете на фактически простаивающей ВМ с чистой ОС FreeBSD установить IDS, так сказать, чтобы спалось спокойно.
Система Обнаружения Вторжений, соответствующий англоязычный термин Intrusion Detection System (IDS) - программное или аппаратное средство, предназначенное для выявления фактов неавторизованного доступа в компьютерную систему или сеть, либо несанкционированного управления ими, в основном, через Интернет. (взято с сайта wikipedia.org)
Для нормальной работы IDS в среде VMware vSphere (да и не только) нужно, чтобы на определенной группе портов или на виртуальном свиче был активирован Promiscuous Mode.
Казалось бы, что проще: нужно всего лишь активировать promiscuous mode для группы портов "VM Network" и установить на FreeBSD какую-нибудь IDS. Но у данного подхода есть очень большой минус - при этом все виртуальные машины, входящие в данную группу портов, смогут перехватывать пакеты, им не адресованные. А это очень большая брешь в безопасности. Тогда как же быть? Как повысить безопасность? Ответить на эти вопросы и решить проблему с безопасностью нам помогут VLAN'ы. Поэтому переконфигурируем нашу сеть, используя для достижения поставленной цели VLAN'ы.
Первым делом нужно создать две группы портов на vSwitch0 с одним и тем же VLAN ID:
# esxcfg-vswitch -A VLAN-10-DPM vSwitch0# esxcfg-vswitch -A VLAN-10-EPM vSwitch0# esxcfg-vswitch -v 10 -p VLAN-10-DPM vSwitch0# esxcfg-vswitch -v 10 -p VLAN-10-EPM vSwitch0
Чуть выше мы создали группу портов VLAN-10-DPM (DPM - Disable Promiscuous Mode) и VLAN-10-EPM (EPM - Enable Promiscuous Mode). Чтобы изменения вступили в силу, перезапускаем Management Network (перезапустить можно непосредственно через консоль сервера, либо в окне терминала, выполнив dcui):
Как только перезапустится Management Network, наша сеть приобретет вот такой вид:
Следующим шагом активируем Promiscuous Mode для группы портов VLAN-10-EPM:
Затем перенастраиваем ВМ FreeBSD на группу портов VLAN-10-EPM, а остальные три виртуальные машины - на группу VLAN-10-DPM.
Не забывайте про то, что когда вы измените для ВМ группу портов, она сразу же станет недоступна для других (внешних) сетей, если до этого вы НЕ НАСТРОИЛИ физический свич + роутер на корректную обработку VLAN.
Для этого переходим в настройки ВМ, выбираем Network Adapter и, в Network Label, выбираем VLAN-10-DPM или VLAN-10-EPM:
После всех манипуляций наша сеть будет выглядеть следующим образом:
Теперь ВМ с FreeBSD, находясь в группе VLAN-10-EPM, сможет перехватывать и анализировать (если к этому моменту стоит IDS) весь трафик, который проходит внутри группы VLAN-10-DPM. При этом ВМ, входящие в группу VLAN-10-DPM, не смогут перехватывать трафик друг друга.
Чтобы убедиться, что все настроено правильно, нужно протестировать. Для этого на ВМ WinXP (IP: 192.168.33.87) пускаем пинг до виртуальной машины WinXP-2 (IP: 192.168.33.28). А на FreeBSD запускаем на выполнение программу tcpdump, которая переведет сетевой интерфейс в promiscuous mode и начнет выводить на экран захваченные пакеты:
Как видно выше, FreeBSD получает пакеты, которые ей не адресованы, то есть promiscuous mode работает. А это значит, что и IDS будет работать так, как положено, анализируя весь трафик, который "бегает" внутри группы VLAN-10-DPM.
В заключение ко всему выше написанному, хочу добавить, что такое решение (с применением VLAN) потребует донастройки или даже замены (если свич/роутер не поддерживает VLAN) физического свича/роутера, что может вызвать проблемы. Это нужно заранее учитывать перед началом настройки для того, чтобы избежать возможных простоев.
P.S.
Если в настройках vSwitch активировать Promiscuous Mode, то он будет активирован для всех групп портов:
Будьте очень внимательны и активируйте promiscuous mode только для тех групп портов, где это действительно необходимо.
P.P.S
Добавление в конфигурацию VLAN -- это вынужденная мера, всязи с тем, что сеть управления и iSCSI находятся на томже vSwitch? Или я чего-то не уловил?
Это не вынужденная мера. Даже если бы сеть управления или сеть iSCSI были бы на разных vSwitch по отношению к виртуальным машинам, то все равно пришлось бы создавать две группы портов с одинаковым VLAN ID на виртуальном свиче, к которому присоединены ВМ. Либо можно добавить группу с VLAN ID 4095 и только для неё включить Promiscuous Mode. Этот метод описан здесь: http://blog.vadmin.ru/2010/10/standard-vswitch-2.html
По поводу теории -- вы совершенно правы.
Я имел ввиду другое: зачем вы усложнили простой пример, создав ещё аж 2 новых портгруппы, да ещё и в явном виде добавили новую сущность (VLAN), которая, как мне представляется, не даёт ничего нового для понимания Promiscuous Mode.
Не проще было перейти от конфигурации 1:
к конфигурации 2:
Уверен, для людей, впервые сталкивающихся с материалом, так было бы намного проще.
Сорри, первую картинку движок упорно парсит выше текста о ней
Абсолютно с вами согласен. Так было бы проще для понимания. Почему я так не сделал, не знаю. Возможно, потому, что до этого я игрался с VLAN’ами в своем тестовом окружении. Вот и понесло меня на VLAN’ы.
А можно заострить внимание на ISCSI? зачем еще 2 порта отдельно от порта управления? Все равно ведь трафик идет через одни и теже сетевые адаптеры.
2 iSCSI порта нужны для того, чтобы работал multipathing
Подробнее об этом можно посмотреть здесь: