Saturday, July 13, 2013

Разграничение доступа с помощью Private VLAN

 В сети всех надо ограничивать. Иначе кто-то слишком умный устроит какую-то атаку типа «пинг смерти», а кто-то слишком неумный случайно запустит скрипт, который мак-спуфингом убьет коммутатор. Словом, разные случаи бывают. Чтобы разграничить права доступа по достаточно гибким правилам  инженеры компании Cisco была разработали технологию Private VLAN. Суть технологии заключается в следующем. В одном VLAN, который мы назовем primary, есть другие VLAN-ы, которые называются secondary (что, в общем-то, логично). Получаются такие вот VLAN-ы в VLAN-e (не путать технологию с QinQ). В свою очередь, порты из secondary VLAN могут быть:
 - изолированными (isolated). Имеют доступ только к портам primary VLAN, к другим портам из secondary VLAN никакого доступа.
 - общими (community). Имеют доступ к портам primary VLAN и доступ к другим портам из этого же community.


Таким образом, это дает возможность гибко регулировать доступ. Скажем, если у нас есть один линк от провайдера и через него мы хотим выпустить хосты во внешнюю сеть, но при этом хосты не должны видеть друг друга. Или если надо дать доступ к серверу всем, но при этом, опять же, хосты не должны видеть друг друга или должны быть распределены группами. В этом случае, общий порт (к провайдеру или к серверу) назначаем в primary VLAN, остальных в secondary VLAN. В свою очередь, внутри secondary VLAN можно определить, будут порты изолированными (isolated) и не иметь доступа друг к другу или будут общими (community) и смогут общаться между собой, но не иметь доступа к другим community и isolated.
Информация о структуре Private VLAN в коммутаторе не распространяется дальше этого коммутатора, в том числе, и по протоколу VTP и когда вы приступите к настройке, коммутатор вам скажет, чтобы вы перевели его в режим transparent.

Catalyst(config-vlan)#private-vlan isolated
Private VLANs can only be configured when VTP is in transparent mode.

 Поэтому, первым делом необходимо перевести VTP-протокол коммутатора в прозрачный режим

Catalyst(config)#vtp mode transparent
Setting device to VTP TRANSPARENT mode.
Catalyst(config)#

 Также при настройке необходимо определить каждый причастный порт в режим работы в одном из следующих режимов
 - Promiscuous – как правило, назначается роутеру или серверу. Этот порт имеет доступ ко всем портам в VLAN, и к нему все имеют доступ. Такой общий для всех порт.
 - Host – тут имеет место разграничение доступа. Эти порты имеют доступ к Promiscuous портам и к портам в своем community (либо только к Promiscuous, если порт изолированный)


Настройка Private VLAN
Перед настройкой необходимо определиться, какие порты куда назначать, остальное – дело техники. Итак, назначим роутер в 10 VLAN и сделаем его primary. Остальных в 11 (изолированный) и 12 (общий). Настроим для начала 11-й и 12-й.
Catalyst(config)# vlan 11
Catalyst(config-vlan)#private-vlan isolated
Catalyst(config-vlan)#exit
Catalyst(config)#vlan 12
Catalyst(config-vlan)#private-vlan community
Catalyst(config-vlan)# exit
 Теперь настроим 10-й VLAN (который primary) и привяжем к нему 11-й и 12-й (которые secondary)
Catalyst(config)#vlan 10
Catalyst(config-vlan)#private-vlan association add 11
Catalyst(config-vlan)#private-vlan association add 12
Catalyst(config-vlan)# 
 Теперь перейдем к конфигурированию интерфейсов. Настроим первый интерфейс для роутера. К нему доступ должны иметь абсолютно все, так как это роутер. Поэтому настроим порт как promiscuous.
Catalyst(config)#int fa0/1
Catalyst(config-if)#switchport mode private-vlan promiscuous
Catalyst(config-if)#
Теперь привяжем к этому общему порту primary и secondary VLAN-ы. Используя этот режим необходимо также указать secondary VLAN-ы. В целом, синтаксис команды такой.
Switch(config-if)# switchport private-vlan mapping primary-vlan-id secondary-vlan-list | {add secondary-vlan-list} | {remove secondary-vlan-list}
 Для нас, соответственно:
Catalyst(config-if)#switchport private-vlan mapping 10 11,12
 Остальные порты для хостов. При чем, когда мы конфигурируем интерфейсы для хостов то необходимо также указать, к какой связке primary-secondary VLAN он принадлежит. Синтаксис команды такой:
Switch(config-if)# switchport private-vlan host-association primary-vlan-id secondary-vlan-id
 В нашем случае, настраиваем:
Catalyst(config)#int fa0/2
Catalyst(config-if)#switchport mode private-vlan host
Catalyst(config-if)#switchport private-vlan host-association 10 11
 И другие интерфейсы
Catalyst(config)#int range fa0/5 - 10
Catalyst(config-if-range)#switchport mode private-vlan host
Catalyst(config-if-range)#switchport private-vlan host-association 10 12

В заключение.
 Чтобы разрешить операции с трафиком на третьем уровне, нужно привязать secondary-vlan к SVI-интерфейсу primary-vlan.
Catalyst(config)#int vlan 10
Catalyst(config-if)#ip add 192.168.10.1 255.255.255.0
Catalyst(config-if)#private-vlan mapping 11,12

No comments:

Post a Comment