Subscribe via RSS Feed Connect on Google Plus Connect on LinkedIn
1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Loading...Loading...

Protegendo o Gateway em Switches Cisco

14 de julho de 2013 0 Comments
ShareTweet about this on TwitterShare on TumblrShare on LinkedInShare on Google+Share on FacebookPin on PinterestEmail this to someonePrint this page

ARP é um protocolo que não requer autenticação e não há como assegurar se os arp requests e arp replies são verdadeiros. Uma pessoa mal intencionada pode obter dados importantes da rede colocando fazendo um ataque chamado de “man-in-the-middle-attack”. Por exemplo, um host pode se passar pelo router respondendo arp requests e passar a encaminhar todos os pacotes por ele.

Outro caso tipico é colocar o ip do router em um host por engano. Isso pode provocar indisponibilidade para toda rede.

O Arp Traffic Inspection nos permite criar um conjunto de regras dentro de uma ARP ACL prevenindo de um ataque deste tipo e prevenindo erros de configurações.

Nesse post falaremos como proteger o gateway em uma rede Data Center no qual, tipicamente, não é usado DHCP para fornecimento de ips automático.

 

ARP

Address Resolution Protocol (ARP) proporciona a tradução de IP para MAC-address (endereço de camada 3 de 32 bits para endereço de camada 2 de 48 bits) colocando em uma tabela conhecida como ARP-cache.

Gratuitous ARP

Quando um interface é habilitada na rede é mandado um “gratuitous arp request” na rede informando seu ip para todos os hosts para atualização de tabelas e pedindo a tradução do ip dele proprio. Caso exista o mesmo ip setado em outro host, o mesmo responderá com um “gratuitous arp reply” indicando seu mac .

ARP Request e ARP Reply

 Quando um host sabe o ip mas não sabe o mac-address é mandado um ARP-Request perguntando “qual é o mac do ip x.x.x.x?” para todos endereços ethernet (todos os macs via broadcast FF:FF:FF;FF:FF:FF) o host que tem o ip x.x.x.x responde com ARP-Reply informando seu endereço mac.

Formato do ARP

Não é o objetivo desse post explicar em detalhes de cada campo do protocolo arp.

 

ARP Inspection (Estático)

ARP Inspection é uma feature que inspeciona pacotes ARP. Ele intercepta, loga, e descarta pacotes IP-to-MAC inválidos.

O ARP Inspection tem as seguintes características:

– Intercepta todos os pacotes ARP Requests e ARP Replies em “untrusted ports” (portas não confiáveis)

– Verifica que esses pacotes interceptados possuem uma relação IP-to-MAC válida antes de atualizar a tabela ARP local e antes de encaminhar o pacote para o destino apropriado.

– Descarta pacotes ARP inválidos

O ARP Inspection (estático) valida um pacote ARPs através do uso de ARP ACLs. 

 

Caso de Uso: Implantação do ARP Inspection

Não tem muita teoria, vamos para um caso de uso e prática. Considere a topologia abaixo.

 

Nessa topologia estamos com 2 switches Cisco 6500 na camada de agregação com SVIs (vlan 51) e HSRP (redundância de gateway) habilitado, e switches de acesso Cisco 6500 e Cisco 4500 com função somente de camada 2 onde os servers estão conectados, todos na vlan 51.

Não são todos os switches que suportam ARP Inspection Estático. Verifiquem o manual e datasheet do equipamento. 

Em uma rede como na topologia acima, o ideal é fazermos mais próximo das máquinas. Fazendo essa configuração em todos os switches de Acesso já seria suficiente para ter seu Gateway seguro.

Vamos no passo a passo, exemplo de configuração nos switches da camada de Acesso:

Passo 1 – Crie uma ARP ACL de modo que nenhum server possa mandar ARP com o IP Gateway, a não ser o verdadeiro Gateway, o resto deixe passar:


arp access-list ACL_VLAN51
permit ip host 192.168.0.1 mac host 0000.0c07.ac01
deny ip host 192.168.0.1 mac any log
permit ip any mac any

 

Passo 2 – Aplique a regra na vlan 51


ip arp inspection filter ACL_VLAN51 vlan  51

 

Passo 3 – Desabilite o rate limit de pacotes ARP por segundo nos uplinks dos switches da camada de Acesso com a Agregação

ip arp inspection limit none

 

Passo 4 – Habilite o ARP Inspection na vlan

ip arp inspection vlan 51

 

 

Pronto! Isso é o básico.

 

 

Outras features e comandos interessantes:

Port Trusted e Untrusted

– Portas trusted são portas que não terão ARP Inspection habilitado

– Portas untrusted são portas que serão checadas pelo ARP Inspection, esse é a configuração default de todas as portas quando o ARP Inspection é habilidado

Para desabilitar o ARP Inspection de uma interface, digite o comando abaixo no modo de configuração de interface:

ip arp inspection trust 

 

* Não usamos esse comando no nosso caso de uso porque queremos que todas as portas sejam verificadas! Esse comando é mais usado quando usamos o Dynamic Arp Inspection, que não é o caso do nosso post.

 

Rate Limit para Pacotes ARP em uma Interface

Por default, o rate limit de pacotes ARP por segundo em uma interface untrusted (não há limitação nas portas trusted) é de 15 pacotes por segundo (pps).

Quando uma porta excede esse limite, ela entra no estado error-disable. A porta fica em desabilitada até que seja habilitada manualmente. O comando abaixo sobe a porta novamente após um determinado período especificado (o default é 300 segundos). O comando é no modo de configuração global:

errdisable recovery cause arp-inspection

* No nosso caso de uso poderíamos usar esse comando para que uma máquina legítima (que por alguma falha temporária gerou mais de 15 pps) não fique fora do ar até a intervenção do administrador da rede.

 

Para desabilitar o limite de pacotes ARP por segundo, no modo de configuração de interface, use o comando abaixo:

ip arp inspection limit none

* No nosso caso de uso, esse comando foi aplicado nos uplinks dos switches de Acesso com a Agregação.

 

Habilitando validações adicionais

O ARP Inspection intercepta, loga, e decarta pacotes ARP IP-to-MAC inválidos. É possível ainda habilitar validações adicionais no endereço MAC de origem e destino, e endereço IP de origem e destino.

– dst-mac -> Descarta pacotes onde o endereço MAC de destino é diferente do endereço MAC de destino contido no cabeçalho Ethernet. O dest-mac previne muitos ataques de arp, a maioria dos ataques de arp-spoofing só mudam o endereço no pacote arp e não do header ethernet.

src-mac -> Descarta pacotes onde o endereço MAC de origem o é diferente do endereço MAC de origem contido no cabeçalho Ethernet. Assim como o dest-mac, o src-mac previne muitos ataques de arp, a maioria dos ataques de arp-spoofing só mudam o endereço no pacote arp e não do header ethernet.

– ip -> Os endereços ips 0.0.0.0, 255.255.255.255 e todos os ips multicast (Classe D) são considerados inválidos. O comando descarta pacotes ARP vindos com essa origem.

Comando que habilita essas validações:

ip arp inspection validate src-mac dst-mac ip 
 
 

Verificando as configurações

 

Verificando a configuração de ARP ACL
 

Cisco4500#sh arp access-list 
ARP access list ACL_VLAN51
    permit ip host 192.168.0.1 mac host 0000.0c07.ac01
    deny ip host 192.168.0.1 mac any log
    permit ip any mac any 

 
 
Verificando a configuração do ARP Inspection na vlan 51
 

Cisco4500#sh ip arp inspection vlan 51
 
Source Mac Validation      : Enabled
Destination Mac Validation : Enabled
IP Address Validation      : Enabled
 
 Vlan     Configuration    Operation   ACL Match          Static ACL
 —-     ————-    ———   ———          ———-
    51     Enabled          Active      ACL_VLAN51          No
 
 Vlan     ACL Logging      DHCP Logging
 —-     ———–      ————
    51     Deny             Deny 
Cisco4500#

 

 

Verificando a configuração de ARP Inspection de uma interface
 

Cisco4500#show ip arp inspection interfaces fastethernet 6/3
 Interface        Trust State     Rate (pps)
 —————  ———–     ———-
 Fa6/3            Untrusted               15

 

 

Verificando estátisticas do ARP Inspection na vlan 51

 

Cisco4500#sh ip arp inspection statistics vlan 51
 
 Vlan      Forwarded        Dropped     DHCP Drops      ACL Drops
 —-      ———        ——-     ———-      ———
   51       11819252             97              0              0
 
 Vlan   DHCP Permits    ACL Permits   Source MAC Failures
 —-   ————    ———–   ——————-
   51              0       11819349                     9
 
 Vlan   Dest MAC Failures   IP Validation Failures   Invalid Protocol Data
 —-   —————–   ———————-   ———————
   51                  75                       13                       0
Cisco4500#

 
 
 

Validando o Caso de Uso
 

IP e Mac da SVI 51 e Gateway HSRP no Aggr1

 

Aggr1#sh int vlan 51
Vlan51 is up, line protocol is up 
  Hardware is Cat6k RP Virtual Ethernet, address is 00d0.0088.ff5c (bia 00d0.0088.ff5c)
  Description: Teste-NETADM
  Internet address is 192.168.0.253/24
  MTU 1500 bytes, BW 1000000 Kbit, DLY 10 usec, 
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive not supported
  ARP type: ARPA, ARP Timeout 04:00:00
  Last input 00:00:02, output 00:00:02, output hang never
  Last clearing of “show interface” counters never
  Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
  Queueing strategy: fifo
  Output queue: 0/40 (size/max)
  30 second input rate 0 bits/sec, 0 packets/sec
  30 second output rate 0 bits/sec, 0 packets/sec
     93979 packets input, 6205148 bytes, 0 no buffer
     Received 93853 broadcasts (0 IP multicasts)
     0 runts, 0 giants, 0 throttles
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
     94566 packets output, 6252244 bytes, 0 underruns
     0 output errors, 1 interface resets
     0 output buffer failures, 0 output buffers swapped out

 

Aggr1#sh standby vlan 51
Vlan51 – Group 1
  Local state is Active, priority 101, may preempt
  Hellotime 3 sec, holdtime 10 sec
  Next hello sent in 0.426
  Virtual IP address is 192.168.0.1 configured
  Active router is local
  Standby router is 192.168.0.254 expires in 7.224
  Virtual mac address is 0000.0c07.ac01
  2 state changes, last state change 3d04h
  IP redundancy name is “hsrp-Vl51-1” (default)
Aggr1#
Aggr1#
 

 
 
Setando um ip livre da rede 192.168.0.0 /24 no host

 

host1:~ # ifconfig eth2
 
 
eth2      Link encap:Ethernet  HWaddr 00:0E:0C:77:16:5C  
          inet addr:192.168.0.5  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20e:cff:fe77:165c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4469 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7423 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:314797 (307.4 Kb)  TX bytes:567018 (553.7 Kb)

 
 
Validando comunicação
 

host1:~ # ping 192.168.0.253

PING 192.168.0.253 (192.168.0.253) 56(84) bytes of data.
64 bytes from 192.168.0.253: icmp_seq=1 ttl=255 time=0.390 ms
64 bytes from 192.168.0.253: icmp_seq=2 ttl=255 time=0.347 ms
64 bytes from 192.168.0.253: icmp_seq=3 ttl=255 time=0.557 ms
64 bytes from 192.168.0.253: icmp_seq=4 ttl=255 time=0.358 ms
64 bytes from 192.168.0.253: icmp_seq=5 ttl=255 time=0.283 ms
64 bytes from 192.168.0.253: icmp_seq=6 ttl=255 time=0.302 ms
64 bytes from 192.168.0.253: icmp_seq=7 ttl=255 time=0.313 ms
 
— 192.168.0.253 ping statistics —
7 packets transmitted, 7 received, 0% packet loss, time 5997ms
rtt min/avg/max/mdev = 0.283/0.364/0.557/0.086 ms
host1:~ # ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=255 time=3.69 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=255 time=0.313 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=255 time=0.314 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=255 time=0.468 ms
64 bytes from 192.168.0.1: icmp_seq=5 ttl=255 time=0.476 ms
64 bytes from 192.168.0.1: icmp_seq=6 ttl=255 time=0.381 ms
 
— 192.168.0.1 ping statistics —
6 packets transmitted, 6 received, 0% packet loss, time 5002ms
rtt min/avg/max/mdev = 0.313/0.940/3.692/1.232 ms
host1:~ # ping 192.168.0.254
PING 192.168.0.254 (192.168.0.254) 56(84) bytes of data.
64 bytes from 192.168.0.254: icmp_seq=1 ttl=255 time=2.13 ms
64 bytes from 192.168.0.254: icmp_seq=2 ttl=255 time=0.308 ms
64 bytes from 192.168.0.254: icmp_seq=3 ttl=255 time=0.337 ms
 
— 192.168.0.254 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.308/0.928/2.139/0.856 ms

 
 
 
 Hora da verdade: Setando o ip do gateway no host

 

 

host1:~ # ifconfig eth2
eth2      Link encap:Ethernet  HWaddr 00:0E:0C:77:16:5C  
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20e:cff:fe77:165c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4497 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7457 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:317939 (310.4 Kb)  TX bytes:570652 (557.2 Kb)
          Base address:0xdf00 Memory:ff8c0000-ff8e0000 
 
 
 
(Pingando ele mesmo)
host1:~ # ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.158 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=0.129 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=0.131 ms
 
— 192.168.0.1 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.129/0.139/0.158/0.016 ms
host1:~ # ping 192.168.0.253
PING 192.168.0.253 (192.168.0.253) 56(84) bytes of data.
From 192.168.0.1: icmp_seq=2 Destination Host Unreachable
From 192.168.0.1 icmp_seq=2 Destination Host Unreachable
From 192.168.0.1 icmp_seq=3 Destination Host Unreachable
From 192.168.0.1 icmp_seq=4 Destination Host Unreachable
 
— 192.168.0.253 ping statistics —
5 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3999ms
, pipe 3
host1:~ # ping 192.168.0.254
PING 192.168.0.254 (192.168.0.254) 56(84) bytes of data.
From 192.168.0.1: icmp_seq=1 Destination Host Unreachable
From 192.168.0.1 icmp_seq=1 Destination Host Unreachable
From 192.168.0.1 icmp_seq=2 Destination Host Unreachable
From 192.168.0.1 icmp_seq=3 Destination Host Unreachable
 
— 192.168.0.254 ping statistics —
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3008ms
, pipe 3

 

 

 

Verificação do Bloqueio no Switch de Acesso

 

 

SwitchAcesso1#   sh logging
 
.Jul 12 21:32:55.436 UTC: %SW_DAI-4-ACL_DENY: 1 Invalid ARPs (Req) on Gi4/5, vlan 51.([000e.0c77.165c/192.168.0.1/0000.0000.0000/192.168.0.253/21:32:55 GMT Sun Jul 12 2013])
.Jul 12 21:32:56.436 UTC: %SW_DAI-4-ACL_DENY: 1 Invalid ARPs (Req) on Gi4/5, vlan 51.([000e.0c77.165c/192.168.0.1/0000.0000.0000/192.168.0.253/21:32:55 GMT Sun Jul 12 2013])
.Jul 12 21:32:57.436 UTC: %SW_DAI-4-ACL_DENY: 1 Invalid ARPs (Req) on Gi4/5, vlan 51.([000e.0c77.165c/192.168.0.1/0000.0000.0000/192.168.0.253/21:32:56 GMT Sun Jul 12 2013])
.Jul 12 21:41:19.601 UTC: %SW_DAI-4-ACL_DENY: 1 Invalid ARPs (Req) on Gi4/5, vlan 51.([000e.0c77.165c/192.168.0.1/0000.0000.0000/192.168.0.254/21:41:19 GMT Sun Jul 12 2013])

 
 
 
Referências

http://www.cisco.com/en/US/docs/switches/lan/catalyst6500/ios/12.2SX/configuration/guide/dynarp.html#wp1070277

http://www.cisco.com/en/US/docs/switches/lan/catalyst4500/12.2/20ew/configuration/guide/dynarp.html

http://www.cisco.com/en/US/docs/switches/datacenter/sw/5_x/nx-os/security/configuration/guide/b_Cisco_Nexus_7000_NX-OS_Security_Configuration_Guide__Release_5.x_chapter_010011.html

http://www.tcpipguide.com/

 

 

😉

 

Seu ip é:
54.81.88.93

ShareTweet about this on TwitterShare on TumblrShare on LinkedInShare on Google+Share on FacebookPin on PinterestEmail this to someonePrint this page

About the Author:

O autor trabalha com tecnologia de redes há 13 anos, participa de congressos no Brasil e no mundo, e contribui para melhoria de protocolos e sistemas com fabricantes de equipamentos de rede.