Press "Enter" to skip to content

Redes Cisco – Controle de tráfego com VACL

0

SEGURANÇA EM VLANS –  VACL

Para controlar o tráfego que passa através de um switch podemos utilizar a ACL. Quando as ACL normais são configuradas em um Catalyst poderiam filtrar o trafego mediante o uso de TCAM (Ternary Content Addressable Memory): cada ACL se aplica a uma interface de acordo com o endereço de entrada ou saída do trafego. Os pacotes serão filtrados por hardware de maneira que não influi no rendimento do dispositivo, só os pacotes entre VLANs podem ser filtrados nesse mecanismo. Os pacotes dentro da mesma VLAN não podem ser filtrados com esse processo multicamada.

As VACL (VLAN ACL) são filtros que podem afetar o manuseio dos pacotes dentro da mesma VLAN.

SWITCH CISCO – CONFIGURAÇÃO DE VACL

As VACL (VLAN Access Lists) são configuradas através de uma VLAN access map  que tem um formato similar a um route-map. Uma VLAN access map consiste em uma ou mais sentencias com um nome comum.

Para começar, devemos definir a VACL com o seguinte comando:

Switch(config)# vlan access-map map-name [sequence-number]

As sentencias são avaliadas de acordo com o numero de sequência, cada sentencia pode ter uma ou mais condições de coincidência seguidas de uma ação determinada. Posteriormente são definidas as condições para essas coincidências que identificam o trafego para ser filtrado.

As coincidências se levam a cabo pelas ACL (de qualquer tipo), que devem configurar de maneira independente. A configuração de uma condição de coincidência pode ser alguma das seguintes:

Switch(config-access-map)# match ip address {acl-number | acl-name}
Switch(config-access-map)# match ipx address {acl-number | acl-name}
Switch(config-access-map)# match mac address acl-name

Os comandos podem repetir-se tantas vezes como condições sejam necessárias, a primeira coincidência encontrada desencadeará a ação a tomar. O seguinte comando define a ação a seguir pelo access map:

Switch(config-access-map)# action {drop | forward [capture] | redirect type mod/num}

Um VACL pode descartar um pacote que foi coincidido, enviá-lo ou redirecioná-lo até outra interface. A TCAM executa as coincidências na VACL. Por último, a VACL deve ser aplicada a uma VLAN com o seguinte comando:

Switch(config)# vlan filter map-name vlan-list vlan-list

Um VACL são aplicadas globalmente a uma ou mais VLAN listadas e não a uma interface VLAN (SVI). Levando em consideração que a VACL funciona dentro da VLAN, não é necessário aplicar direção de entrada ou saída do trafego porque é para o próprio tráfego dentro da VLAN.

Por exemplo, quando queremos filtrar o trafego na VLAN 99 de tal maneira que o host 192.168.99.7 não tenha permissão para contatar com outro host em sua rede local. A ACL denominada CCNP é criada para identificar o trafego entre esse host e qualquer outro host dentro de sua subrede. Quando a VLAN access map esteja definida de forma que a ACL local permita o trafego IP, o pacote é descartado. Todo outro trafego é enviado.

Switch(config)# ip access-list extended local-17
Switch(config-acl)# permit ip host 192.168.99.7 192.168.99.0 0.0.0.255
Switch(config-acl)# exit
Switch(config)# vlan access-map block-17 10
Switch(config-access-map)# match ip address local-17
Switch(config-access-map)# action drop
Switch(config-access-map)# vlan access-map block-17 20
Switch(config-access-map)# action forward
Switch(config-access-map)# exit
Switch(config)# vlan filter block-17 vlan-list 99

SWITCH CISCO – PRIVATE VLANs

Geralmente o trafego é permitido sem nenhum tipo de restrição dentro da mesma VLAN. Os pacotes são enviados de um host até outro e normalmente são recebidos pelo host de destino, graças a natureza de camada 2 que tem os switches.

Mas se um host envia um pacote de broadcast, todos os demais hosts dentro da mesma VLAN receberão. Uma VACL pode filtrar os pacotes entre origem e os destinos na mesma VLAN se ambos estão conectados ao mesmo switch. É muito útil poder segmentar o trafego em uma VLAN sem ter que utilizar múltiplas VLAN e um roteador.

As PVLAN (Private VLAN) solucionam esse problema. Sinteticamente podemos dizer que uma VLAN normal pode estar logicamente associada com uma VLAN secundaria, os hosts associados com a VLAN secundaria poderão comunicar-se com a VLAN primaria (por exemplo, com um roteador) mas não com outros da VLAN secundaria. Uma VLAN secundaria é configurada com um dos seguintes tipos:

  • Isolated (isolada): Qualquer porta associada com uma VLAN isolada poderá alcançar a VLAN primaria, mas não poderá alcançar outra porta na VLAN secundaria. Na soma, os hosts associados com a mesma VLAN estão isoladas entre si mas não da VLAN primaria.
  • Community: Qualquer porta associada com uma VLAN community pode comunicar-se com outros e ademais com a VLAN primaria, mas não poderá comunicar com qualquer outra VLAN secundaria. Isso proporciona uma segmentação básica para farms de servidores e grupos de trabalho dentro de uma organização, oferecendo um isolamento entre organizações.

Todas as VLANs secundarias devem estar associadas com a VLAN primaria para levar a cabo uma relação unidirecional. As PVLAN estão configuradas utilizando com base VLAN normais, mas VTP não envia informações sobre PVLAN por tanto essas tem apenas significado local nos switches. Cada uma das PVLAN devem ser configuradas localmente em cada um dos switches interconectados.

Cada porta do switch que utilize uma PVLAN deve ser configurada com uma atribuição de VLAN; também a porta deve ser definida em algum dos seguintes modos:

  • Promiscuo: A porta do switch está conectada a um roteador, firewall ou algum dispositivo que faz de gateway. A porta pode comunicar com qualquer dispositivo conectado, seja VLANs primarias ou secundarias. As regras das PVLAN são ignoradas.
  • Host: A porta do switch está conectada a um host normal que reside em uma VLAN isolada ou community. A porta somente se comunica com portas promíscuos ou com portas da mesma VLAN community.

A seguinte figura mostra a operação básica da PVLAN, na imagem mostra alguns PCs conectados a uma VLAN community secundaria, as duas VLANs community estão associadas com uma VLAN primaria onde está conectado o roteador. O roteador está conectado a uma porta promiscuo na VLAN primaria e um host conectado a uma VLAN secundaria isolada de tal forma que somente poderá comunicar-se com os roteadores na porta promiscuo.

Redes Cisco - Controle de tráfego com VACL

O primeiro passo na configuração da PVLAN é definir alguma VLAN secundária, para isso utilizar-se o comando:

Switch(config)# vlan vlan-id
Switch(config-vlan)# private-vlan {isolated | community}
A VLAN secundária pode ser isolated o community, o seguinte é definir a VLAN primária:
Switch(config)# vlan vlan-id
Switch(config-vlan)# private-vlan primary
Switch(config-vlan)# private-vlan association {secondary-vlan-list | addsecondary-vlan-list | remove secondary-vlan-list}

A VLAN primária deve estar corretamente associada com todas as VLANs secundárias utilizando o parâmetro association. Se a VLAN primaria já foi configurada, só poderemos adicionar o parâmetro remove para a associação individual. Esses comandos de configuração de VLAN só proporcionam os mecanismos para blindar a conectividade unidirecional da VLAN secundaria para a primaria. Também devemos associar cada porta do switch individual com suas VLANs privadas respectivas.

Uma vez definida a função da porta que participará na PVLAN, podemos configurá-la com o seguinte comando:

Switch(config-if)# switchport mode private-vlan {host | promiscuous}

Se o host conectado a essa porta é um roteador ou firewall ou um gateway para a VLAN, utilizar-se o parâmetro promiscuous para que o host seja alcançável pelas outras portas associadas com a VLAN primaria. Para as portas em modo isoleted ou community utilizamos o parâmetro host.

Para uma porta não promiscua devemos associar a porta do switch com a VLAN primaria ou secundaria apropriada. Até agora somente foi configurada as PVLAN, a porta do switch tem que saber como interatuar com os diferentes tipos de VLAN através dos seguintes comandos:

Switch(config-if)# switchport private-vlan host-association primary-vlan-idsecondary-vlan-id

 Quando uma porta do switch é associada a uma PVLAN não tem que configurá-la com uma porta de acesso a uma VLAN estática. A porta toma possessão da VLAN primária e secundaria de maneira simultânea, mas isso não significa que participará de múltiplas VLANs, significa que terá um comportamento unidirecional entre a VLAN secundaria e a VLAN primaria.

Temos que associar uma porta promiscua a VLAN primaria e a VLAN secundária. Essas portas devem comunicar com qualquer outro dispositivo em uma PVLAN. As portas em modo promiscuo tem um comportamento bidirecional enquanto que as portas em VLAN secundárias tem um comportamento em modo unidirecional. Isso é um comportamento lógico.

O seguinte comando associa portas em modo promiscuo a VLAN secundárias e primarias:

Switch(config-if)# switchport private-vlan mapping primary-vlan-id secondaryvlan-list | {add secondary-vlan-list} | {remove secondary-vlan-list}

O switch mostrado a continuação, está configurado com a seguinte sintaxe. Os PCS nas portas Fast 1/1 e 1/2 estão em uma comunidade VLAN 10 e as portas Fast1/4 e 1/5 estão na comunidade VLAN 20 e o host na Fast1/3 está isolado na VLAN 30. O roteador está em modo promiscuo na VLAN primaria.

Switch(config)# vlan 10
Switch(config-vlan)# private-vlan community
Switch(config)# vlan 20
Switch(config-vlan)# private-vlan community
Switch(config)# vlan 30
Switch(config-vlan)# private-vlan isolated
Switch(config)# vlan 100
Switch(config-vlan)# private-vlan primary
Switch(config-vlan)# private-vlan association 10,20,30
Switch(config-vlan)# exit
Switch(config)# interface range fastethernet 1/1 - 1/2
Switchconfig# switchport private-vlan host
Switch(config-if)# switchport private-vlan host-association 100 10
Switch(config)# interface range fastethernet 1/4 - 1/5
Switchconfig# switchport private-vlan host
Switch(config-if)# switchport private-vlan host-association 100 20
Switch(config)# interface fastethernet 1/3
Switchconfig# switchport private-vlan host
Switch(config-if)# switchport private-vlan host-association 100 30
Switch(config)# interface fastethernet 2/1
Switch(config-if)# switchport mode private-vlan promiscuous
Switch(config-if)# switchport private-vlan mapping 100 10,20,30

Para associar VLANs secundarias e primarias nas SVI (switched Virtual Interfaces) ou interface VLAN configuradas como L3, temos que configurar algumas associações adicionais para a PVLAN. Considerando a SVI para uma PVLAN 100 que tem um endereço IP e participa no trafego de roteamento, as VLANs secundarias 40, que estão isoladas e a 50, que é comunitária, estão associadas na camada 2 com a PVLAN, conforme sintaxe:

Switch(config)# vlan 40
Switch(config-vlan)# private-vlan community vlan 200
Switch(config-vlan)# private-vlan primary
Switch(config-vlan)# private-vlan association 40,50
Switch(config-vlan)# exit
Switch(config)# interface vlan 200
Switch(config-if)# ip address 192.168.199.1 255.255.255.0

A VLAN primaria 200 pode enviar trafego de camada 3 mas as associações da VLAN secundaria só funcionarão em nível de camada 2. Para permitir o trafego de camada 2 a camada 3 das VLANs secundarias, devemos adicionar uma associação de PVLAN até a interface SVI utilizando o comando:

Switch(config-if)# private-vlan mapping {secondary-vlan-list | add secondaryvlan-list | remove secondary-vlan-list}

A função da VLAN SVI primaria é estender as VLAN secundarias em lugar de utilizar ou estender SVI para cada uma delas. Se varias associações já foram estabelecida e foram configuradas para a VLAN SVI primaria, podemos utilizar os parâmetros add ou remove para adicionar associações secundárias. O exemplo mostra uma associação da PVLAN:

Switch(config)# interface vlan 200
Switch(config-if)# private-vlan mapping 40,50

SWITCH CISCO – SECURITY VLAN TRUNK

SWITCH SPOOFING

Como vimos em capítulos anteriores, os switches podem estar conectados através de enlaces troncais para levar trafego de múltiplas VLANs. O trunk não tem porque estar sempre presente, os switches dinamicamente podem negociá-lo mediante a troca de mensagens DTP (Dynamic Trunking Protocol).

Se corretamente configurado, DTP pode facilitar a administração do switch. Se uma porta mantem sua configuração padrão onde o trunk está em auto, poderia ser indagada por uma porta de outro switch também em auto ou on enlaçando um trunk.

Quando um PC de usuário está conectado nessa porta nunca se utilizará DTP, dessa forma a porta funcionará em mode acesso de uma VLAN determinada. Um usuário malicioso poderia explorar o uso de DTP e tentar negociar um trunk, isso faria com que o PC pareça um switch. Uma vez que o trunk é negociado o atacante terá o acesso as VLANs permitidas por esse troncal.

O atacante pode receber qualquer tipo de trafego enviado por qualquer das VLANs do troncal e enviar trafego por qualquer delas.

A seguinte sintaxe mostra a configuração da porta do switch por padrão, dynamics auto, de maneira que está esperando a negociação de algum dispositivo DTP conectado.

Switch# show interfaces fastethernet 1/0/46 switchport
Name: Fa1/0/46
Switchport: Enabled
Administrative Mode: dynamic auto
Operational Mode: trunk
Administrative Trunking Encapsulation: negotiate
Negotiation of Trunking: On
Access Mode VLAN: 1 (default)
Trunking Native Mode VLAN: 1 (default)
Administrative Native VLAN tagging: enabled
Voice VLAN: none
Administrative private-vlan host-association: none
Administrative private-vlan mapping: none
Administrative private-vlan trunk native VLAN: none
Administrative private-vlan trunk Native VLAN tagging: enabled
Administrative private-vlan trunk encapsulation: dot1q
Administrative private-vlan trunk normal VLANs: none
Administrative private-vlan trunk private VLANs: none
Operational private-vlan: none
Trunking VLANs Enabled: ALL
Pruning VLANs Enabled: 2-1001
Capture Mode Disabled Capture VLANs Allowed: ALL
Protected: false
Unknown unicast blocked: disabled
Unknown multicast blocked: disabled
Appliance trust: none
Switch#

A solução para esta situação consiste em configurar todas as portas do switch e deixar as portas não utilizadas em shutdown.

Switch(config)# interface type mod/num
Switch(config-if)# switchport access vlan vlan-id
Switch(config-if)# switchport mode access

VLAN HOPPING

Para verificar assegurar um trunk, devemos levar em consideração o mecanismo de ataque chamado VLAN hopping. Consiste em que um atacante posicionado em uma VLAN de acesso possa enviar quadros com etiquetas 802.1Q falsas, sem a necessidade de um roteador, de tal maneira que os pacotes parecerão de uma VLAN completamente diferente.

Para que possamos aplicar esse mecanismo, devem-se cumprir as seguintes condições:

  • O atacante deve estar conectado a uma porta de acesso do switch
  • O switch tem que estar configurado com um trunk 802.1Q.
  • O trunk deve ter a VLAN de acesso do atacante configurada com VLAN nativa.

A seguinte figura mostra como trabalha VLAN Hopping: o atacante na VLAN 10 envia um frame duplamente etiquetadas como se utilizasse 802.1Q, naturalmente o atacante não está em um enlace trunk. A tentativa consiste em enganar o switch como se o enlace fosse um trocal através das etiquetas falsas 802.1Q e da VLAN de destino.

Quando o switch local recebe um frame duplamente etiquetado decide enviá-las através das interfaces troncais. Como a primeira etiqueta tem o mesmo VLAN ID da nativa do atacante, é eliminado o quadro e enviado ao troncal. O switch entende que a VLAN nativa deve permanecer não etiquetada. Quando o switch remoto recebe o quadro examina a etiqueta 802.1Q antes de tirá-la descobrindo a etiqueta falsa da VLAN 20. O switch envia o quadro normalmente até a VLAN 20. Agora o atacante pode enviar sem problemas quadros da VLAN 10 ocultas até a VLAN 20. Todo o processo mediante comutação de camada 2.

A chave para esse tipo de ataque está baseada no uso de VLAN nativas não etiquetadas. Para solucionar esse tipo de ataque podemos seguir esses passos:

  • Configurar a VLAN nativa com uma VLAN falsa ou uma que não esteja em uso.
  • Tirar a VLAN nativa dos enlaces trunks

Se o troncal só deve levar as VLANs 10 e 20, deveríamos configurar a VLAN nativa com um valor de uma VLAN que não esteja em uso, por tanto, a VLAN nativa poderia ser retirada no troncal, configurando o enlace conforme a sintaxe:

Switch(config)# vlan 500
Switch(config-vlan)# name CCNP_SW
Switch(config-vlan)# exit
Switch(config)# interface gigabitethernet 1/1
Switch(config-if)# switchport trunk encapsulation dot1q
Switch(config-if)# switchport trunk native vlan 500
Switch(config-if)# switchport trunk allowed vlan remove 500
Switch(config-if)# switchport mode trunk

Alternativa é forçar os troncais 802.1Q para adicionar etiquetas na VLAN nativa, dessa maneira o ataque VLAN Hopping não funcionará porque o switch não eliminará a primeira etiqueta da VLAN nativa etiquetada. Para forçar ao switch a etiquetar a VLAN nativa utilizamos o seguinte comando:

Switch(config)# vlan dot1q tag native


Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: