Promiscuous mode

Promiscuous mode

Promiscuous Mode ("Неразборчивый" режим) - это режим, при котором сетевой адаптер начинает получать все пакеты независимо от того, кому они адресованы. Если рассматривать promiscuous mode в контексте виртуального свича (vSwitch), а, точнее, группы портов на этом свиче, то данный режим позволит перехватывать все пакеты, проходящие через данную группу портов, любой виртуальной машине, непосредственно присоединенной к ней.


Зачем нужен Promiscuous Mode?

Чтобы лучше понять назначение promiscuous mode, приведу практический пример. Допустим, у нас есть четыре виртуальные машины:


  1. FreeBSD - на этой ВМ стоит чистая FreeBSD 8.2
  2. WinXP - MySQL Primary
  3. WinXP-2 - MySQL Secondary
  4. Debian - Внешний веб-сервер


Прошу не заострять внимание на роли данных виртуальных машин. На самом деле, на этих ВМ стоят чистые операционные системы, и больше ничего нет. Роли расписаны для примера и полноты картины.

и сеть, которая на данный момент выглядит следующим образом:

current-network.jpg

Как видно выше, все четыре ВМ находятся в одной группе портов и прекрасно себе работают. Но в один очень хороший день вы решаете на фактически простаивающей ВМ с чистой ОС 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):

dcui.jpg

Как только перезапустится Management Network, наша сеть приобретет вот такой вид:

current-network1.jpg

Следующим шагом активируем Promiscuous Mode для группы портов VLAN-10-EPM:

p-mode-en.jpg

Затем перенастраиваем ВМ FreeBSD на группу портов VLAN-10-EPM, а остальные три виртуальные машины - на группу VLAN-10-DPM.

Не забывайте про то, что когда вы измените для ВМ группу портов, она сразу же станет недоступна для других (внешних) сетей, если до этого вы НЕ НАСТРОИЛИ физический свич + роутер на корректную обработку VLAN.

Для этого переходим в настройки ВМ, выбираем Network Adapter и, в Network Label, выбираем VLAN-10-DPM или VLAN-10-EPM:

settings-vm.jpg

После всех манипуляций наша сеть будет выглядеть следующим образом:

current-network2.jpg

Теперь ВМ с 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 и начнет выводить на экран захваченные пакеты:

tcpdump.jpg

Как видно выше, FreeBSD получает пакеты, которые ей не адресованы, то есть promiscuous mode работает. А это значит, что и IDS будет работать так, как положено, анализируя весь трафик, который "бегает" внутри группы VLAN-10-DPM.


В заключение ко всему выше написанному, хочу добавить, что такое решение (с применением VLAN) потребует донастройки или даже замены (если свич/роутер не поддерживает VLAN) физического свича/роутера, что может вызвать проблемы. Это нужно заранее учитывать перед началом настройки для того, чтобы избежать возможных простоев.



P.S.

Если в настройках vSwitch активировать Promiscuous Mode, то он будет активирован для всех групп портов:

vSwitch.jpg

Будьте очень внимательны и активируйте promiscuous mode только для тех групп портов, где это действительно необходимо.



P.P.S

Comments

Добавление в конфигурацию VLAN -- это вынужденная мера, всязи с тем, что сеть управления и iSCSI находятся на томже vSwitch? Или я чего-то не уловил?

Это не вынужденная мера. Даже если бы сеть управления или сеть iSCSI были бы на разных vSwitch по отношению к виртуальным машинам, то все равно пришлось бы создавать две группы портов с одинаковым VLAN ID на виртуальном свиче, к которому присоединены ВМ. Либо можно добавить группу с VLAN ID 4095 и только для неё включить Promiscuous Mode. Этот метод описан здесь: http://blog.vadmin.ru/2010/10/standard-vswitch-2.html

Почему именно так:
предположим есть vSwitch, на нем одна группа портов, к которой присодеинены 5 ВМ. Если мы активируем Promiscuous Mode на уровне свича, то Promiscuous Mode будет активирован для всех групп портов на данном vSwitch. Что приведет к тому, что все ВМ на данном vSwitch в одной или "схожых"  порт группах, смогут перехватывать пакеты им не адресованные. Применение VLAN позволяет этого избежать. Можно создать две группы с одинаковым VLAN ID. Либо создать одну группу без указания VLAN ID, а вторую с VLAN ID равным 4095. И тогда перехватывать весь трафик на данном свиче смогут только те ВМ, которые входят в групп с VLAN ID равным 4095.

По поводу теории -- вы совершенно правы.

Я имел ввиду другое: зачем вы усложнили простой пример, создав ещё аж 2 новых портгруппы, да ещё и в явном виде добавили новую сущность (VLAN), которая, как мне представляется, не даёт ничего нового для понимания Promiscuous Mode.

Не проще было перейти от конфигурации 1:

к конфигурации 2:

Уверен, для людей, впервые сталкивающихся с материалом, так было бы намного проще.

Сорри, первую картинку движок упорно парсит выше текста о ней

Абсолютно с вами согласен. Так было бы проще для понимания. Почему я так не сделал, не знаю. Возможно, потому, что до этого я игрался с VLAN’ами в своем тестовом окружении. Вот и понесло меня на VLAN’ы.

А можно заострить внимание на ISCSI?  зачем еще 2 порта отдельно от порта управления? Все равно ведь трафик идет через одни и теже сетевые адаптеры.

2 iSCSI порта нужны для того, чтобы работал multipathing

Подробнее об этом можно посмотреть здесь:

Version history
Revision #:
1 of 1
Last update:
‎05-16-2011 03:28 AM
Updated by: