domingo, 15 de setembro de 2013

Private VLAN na Segurança e Particionamento de VLANs

Olá Pessoal.

As VLANs são comumente utilizadas para quebrar os domínios de broadcast em grandes redes de computadores, o que é muito desejável para dois fins principais: (i) desempenho e (ii) segurança. Quando algumas portas de um (ou mais) switch(es) são colocadas em uma determinada VLAN os quadros de broadcast originados por uma máquina ficam restritos somente a essas portas, o que implica em melhor desempenho decorrente da presença de menos máquinas gerando broadcasts. Outra vantagem do ponto de vista de segurança é que deixa de existir a possibilidade de alcançabilidade entre outras portas que não sejam membros da mesma VLAN na camada de enlace.

Embora a principal funcionalidade das VLANs seja segmentar os domínios de broadcast, há algumas situações específicas em que pode ser necessário particionar uma dada VLAN para que, por exemplo, algumas portas de uma VLAN tenham acesso a apenas algumas outras portas da mesma VLAN, ao invés de ter acesso a todas as porta da sua respectiva VLAN. Esse é um requisito de segurança comum em alguns ambientes, a exemplo de server-farms onde ficam localizados os servidores da empresa. 

Nesse contexto, é muito comum que os servidores de uma empresa tenham sua própria sub-rede (layer-3) associada com uma respectiva VLAN (layer-2), de forma que os acessos dos hosts aos servidores tenham que passar pelas políticas de segurança impostas pelos roteadores com função de firewall. Acontece que, ainda assim, caso haja alguma vulnerabilidade na rede e alguém consiga acesso não autorizado a qualquer um dos servidores, então provavelmente será fácil, a partir dele, acessar qualquer outro servidor da server-farm porque existe uma relação "natural" de confiança (nem sempre desejável) entre os servidores que pertencem à mesma VLAN e sub-rede.

Para evitar esse tipo de situação é conveniente do ponto de vista de segurança que os servidores não tenham alcançabilidade entre si no mesmo domínio de broadcast, mesmo que pertençam à mesma VLAN. É impossível fazer isso através de VLANs convencionais, mas esse cenário pode ser implementado em switches Catalyst e Nexus da Cisco através da configuração de Private VLANs.

Em muitos casos não há necessidade de comunicação dos servidores entre si, o que faz desses servidores bons candidatos a serem totalmente isolados em suas VLANs. Em outros casos é necessário que haja comunicação entre os servidores, por exemplo em clusters onde os nós trocam mensagens entre si com frequência para manter a abstração do cluster como sendo uma máquina "única" composta por todos os seus nós que executam a solução de clusterização (middleware). Então vamos observar a figura abaixo para enxergar essas diferentes possibilidades e para entender de que forma a Private VLAN pode ser bastante desejável.


Na configuração de "Private VLANs" somente pode existir  uma única VLAN primária que, por sua vez, pode ser vinculada a várias VLANs secundárias. As VLANs secundárias podem ser de dois tipos: (i) community ou (ii) isolated. Uma VLAN secundária do tipo community é aquela em que suas portas podem se comunicar apenas umas com as outras e também com a VLAN primária. Já as portas de uma VLAN secundária do tipo isolated não podem se comunicar entre si e só conseguem alcançar a VLAN primária.

Na figura temos uma VLAN primária que possui dois sub-domínios vinculados à ela (círculo amarelo), sendo uma do tipo isolated onde os servidores não conseguem se comunicar entre si (círculo azul) e outra do tipo community onde precisa haver comunicação entre as portas para que os servidores possam trocar mensagens e formar um cluster (círculo rosa).

A associação das portas de um switch que irão utilizar o recurso da "Private VLAN" não é tão direta quanto as associações convencionais de portas e VLANs que era realizada através do comando "switchport access vlan X".  Essa configuração é diferente porque agora as portas podem assumir dois modos: (i) promiscuous ou (ii) host.

A porta configurada em modo promíscuo normalmente é aquela em que é conectado o roteador/firewall que é o gateway das máquinas, afinal essa porta pode se comunicar com qualquer outra porta na VLAN primária ou em suas respectivas VLANs secundárias, sejam elas community ou isolated. A porta é configurada em modo host quando conecta uma máquina regular porque somente pode se comunicar com portas em modo promíscuo na VLAN primária ou com outras portas da sua VLAN secundária, desde que essa VLAN secundária seja do tipo community.

Para exemplificar como seria o processo de configuração vamos utilizar como base o cenário da figura acima, onde estaremos assumindo que a VLAN 10 será primária, que a VLAN 20 será secundária do tipo isolated e que a VLAN 30 será secundária do tipo community. Estaremos assumindo que a interface g1/1 do switch está conectada ao roteador que é gateway dos servidores, enquanto que as interfaces f0/1, f0/2 e f0/3 conectam os servidores do cluster da VLAN 20 e as interfaces f0/4, f0/5 e f0/6 conectam os servidores isolados da VLAN 30.

01. Switch(config)# vlan 20
02. Switch(config-vlan)# name "VLAN do Cluster"
03. Switch(config-vlan)# private-vlan community
04. Switch(config-vlan)# vlan 30
05. Switch(config-vlan)# name "VLAN dos Servidores Isolados"
06. Switch(config-vlan)# private-vlan isolated
07. Switch(config-vlan)# vlan 10
08. Switch(config-vlan)# name "VLAN Primaria"
09. Switch(config-vlan)# private-vlan primary
10. Switch(config-vlan)# private-vlan association 20,30
11. Switch(config-vlan)# exit
12. Switch(config)# interface range f0/1 - 3
13. Switch(config-if-range)# switchport mode private-vlan host
14. Switch(config-if-range)# switchport private-vlan host-association 10 20
15. Switch(config-if-range)# interface range f0/4 - 6
16. Switch(config-if-range)# switchport mode private-vlan host
17. Switch(config-if-range)# switchport private-vlan host-association 10 30
18. Switch(config-if-range)# interface g1/1
19. Switch(config-if)# switchport mode private-vlan promiscuous
20. Switch(config-if)# switchport private-vlan mapping 10 20,30

Na configuração acima criamos primeiro as VLANs secundárias, sendo a VLAN 20 do tipo community (linhas de 01 a 03) e a VLAN 30 do tipo isolated (linhas de 04 a 06). Na sequência criamos a VLAN 10 do tipo primária e já informamos o vínculo com suas VLANs secundárias (linhas de 07 a 10). Nas linhas de 12 a 14 associamos as interfaces f0/1, f0/2 e f0/3 em modo host com a VLAN 20 (cluster), sendo que o primeiro número que aparece no comando é menção à VLAN primária em que ela possui vínculo. O mesmo procedimento é feito nas linhas de 15 a 17 em relação às interfaces f0/4, f0/5 e f0/6 que pertencem à VLAN 30 (servidores isolados). Por fim, nas linhas de 18 a 20 configuramos a interface g1/1 em modo promíscuo na VLAN primária (e secundárias).

Para encerrar o artigo, é importante ter em mente que "Private VLANs" só existem no contexto local de um único switch e por isso não são propagadas através dos links trunk, devendo ser configuradas individualmente em cada switch no qual se estendem. Outro detalhe importante é que não são todas as versões do IOS que têm suporte a esse recurso, por isso convém pesquisar no site da Cisco!

Abraço.

Samuel.

9 comentários:

  1. Taí um tópico legal do CCNP Switch :-)
    Tks

    ResponderExcluir
  2. Ótima explicação Samuel, poderia complementar em outro post e mostrar como seria no caso de termos mais switches nesse cenário, alguns que não falassem pvlan(trunk isolated),outros que falassem (trunk normal) ou no caso de um router on a stick (trunk Promiscuous) ...

    ResponderExcluir
  3. Bom dia,

    Professor, realizei todas as configurações elencadas em um LAB no GNS3. Reitero que está tudo configurado em conformidade com as instruções. Embora as interfaces ficam Down acusando problema na camada de protocolos (encapsulamento). Você saberia elucidar o impasse?
    Obrigado.

    ResponderExcluir
  4. No parágrafo abaixo, informa (vlan 20 -> Tipo isolated) e (vlan 30 -> Tipo community) :

    "Para exemplificar como seria o processo de configuração vamos utilizar como base o cenário da figura acima, onde estaremos assumindo que a VLAN 10 será primária, que a VLAN 20 será secundária do tipo isolated e que a VLAN 30 será secundária do tipo community. Estaremos assumindo que a interface g1/1 do switch está conectada ao roteador que é gateway dos servidores, enquanto que as interfaces f0/1, f0/2 e f0/3 conectam os servidores do cluster da VLAN 20 e as interfaces f0/4, f0/5 e f0/6 conectam os servidores isolados da VLAN 30."

    Porém na configuração está :

    Switch(config)# vlan 20
    Switch(config-vlan)# private-vlan community

    Switch(config-vlan)# vlan 30
    Switch(config-vlan)# private-vlan isolated

    Obs.: Pequeno erro de digitação, porém muito boa explicação, Parabéns !

    ResponderExcluir
  5. ROTEADOR 1900 PERDE COMUNICACAO COM VLAN
    Bom dia! Sou novo na comunidade, me desculpem se já houver algum outro tópico semelhante, não localizei.



    1) Possuo um Roteador Cisco 1900 que entrega IP fixo /29 do nosso link de Internet da VIVO. Até ontem (sei que isto é até vergonhoso mas faz parte do cenário) este Roteador era ligado em uma HUB 10/100, e do HUB eu linkava na porta WAN dos roteadores da Rede Interna, que iriam distribuir para LAN e/ ou também servidores que tinham necessariamente de acessar o IP Real para seus serviços.



    2) Em um Switch HP1910 configurei uma VLAN, sem tag (camada 2) para que todos os equipamentos que fossem conectados nesta VLAN conversassem entre si. A ideia era colocar plugado neste switch as portas WAN dos roteadores da rede Interna e o Roteador Cisco que faz a entrega do LINK.



    3) Consigo comunicação entre as máquinas/ roteadores da VLAN. Porém, no momento que coloco o roteador, a porta do Switch e do Roteador fica UP, começo a pinga o Roteador, porém depois de no máximo 10 segundos, ele para o ping, ambas as portas ficam down e eu perco a comunicação com o roteador.



    4) O fato é que se eu colocar o cabo do roteador, em outro roteador da porta WAN de outro roteador (MIKROTIK, DLINK) a comunicação se mantém normal; se eu plugar diretamente em note, configurar os ips, a configuração se mantem também normal. Até no HUB como mencionei a comunicação se mantém normal, consigo "repartir" com as demais máquinas. Porém no momento que plugo para partilhar com a VLAN, ele cai.



    5) Já testei em outras VLAN´s. Já testei outro SWITCH de modelo semelhante (mesmo problema). Algo que notei de diferente foi que quando mudo o tipo de link da porta do SWITCH de acess para hybrid, a comunicação se mantém por um tempo maior; depois cai também.



    6) Usei tanto os simuladores da Cisco (Packet Tracer) como o da HP. E ambos os simuladores, minha rede se mantém UP. Único teste que ainda não fiz, é o cabo cross... mas não tem nada a ver, porque sei que não é o caso para interagir estes dois equipamentos.





    Desde já, agradeço.

    ResponderExcluir