quinta-feira, 24 de janeiro de 2013

DHCP Snooping na Mitigação de Servidores Falsos

Olá Pessoal.

Todo processo automatizado que emprega tecnologias dinâmicas nas redes de computadores traz vários benefícios que simplificam o cotidiano do profissional de networking, no entanto muitas pessoas esquecem que essas facilidades também têm algumas desvantagens de (i) desempenho e (ii) segurança

A desvantagem do ponto de vista de desempenho é decorrente da necessidade de troca de mensagens adicionais entre os dispositivos para que uma determinada tarefa seja realizada "automaticamente" sem a intervenção do administrador, o que implica em mais tráfego na rede e maior demanda de processamento nos dispositivos.

Quanto à segurança, ocorre que qualquer processo de configuração dinâmica tende a ser padronizado e, portanto, é de domínio público. Dessa forma qualquer pessoa disposta a estudar a lógica envolvida no processo dinâmico pode encontrar vulnerabilidades técnicas, uma vez que boa parte dessas tecnologias opera com base no princípio da confiança. 

Um bom exemplo de tecnologia dinâmica que facilita bastante a tarefa de configuração de máquinas na rede e que opera com base na confiança é o DHCP, acrônimo de Dynamic Host Configuration Protocol. Um servidor DHCP é instalado na rede e configurado para fornecer informações de endereçamento aos clientes, tais como: IP, Máscara, Gateway e DNS. Ou seja, não necessidade de configuração manual (estática) em cada uma das máquinas, o que é inviável num ambiente de grande porte porque consome tempo e abre margem para erros humanos na configuração recorrente! 

Quando uma máquina configurada com endereço dinâmico é inicializada, então temos a seguinte sucessão de eventos:

  1. O cliente envia um broadcast para toda a rede na busca por servidores locais que possam atender à requisição através de uma mensagem DHCPDISCOVER;
  2. Quando algum servidor que esteja executando o serviço DHCP receber essa mensagem, ele responde com uma nova mensagem unicast ao solicitante (DHCPOFFER) com a oferta dos parâmetros de configuração;
  3. O cliente aceita essa oferta e envia uma mensagem de requisição (DHCPREQUEST) dos parâmetros definitivos;
  4. O servidor confirma (DHCPACK) e envia os parâmetros para que o cliente possam configurar seus endereços de rede.  

Esse processo é automático e fica evidente que não oferece muita segurança. Nada impede um usuário mal intencionado de carregar um serviço DHCP em sua máquina fazendo com que ela responda às requisições DHCP dos novos clientes. Ao fazê-lo, surge um servidor intruso (rogue server) na rede! Esse é um tipo de ataque MUITO simples de ser executado e que tem um potencial desastroso em qualquer rede!

Outro detalhe importante é que atualmente esse tipo de ataque ficou muito comum de ser "executado" involuntariamente por um usuário menos experiente que negligentemente conecta um desses roteadores wireless residenciais no ambiente corporativo para compartilhar a Internet com seus dispositivos móveis. Acontece que esses roteadores residenciais normalmente estão com o serviço DHCP habilitado para tornar o equipamento plug-and-play para os usuários domésticos. Esse roteador residencial pode ser facilmente carregado e entrar despercebidamente na empresa, bastanto o usuário conectá-lo na rede para instaurar o CAOS!

Pois bem, felizmente esse tipo de "ataque" (ou negligência) pode ser facilmente mitigado nos switches Catalyst da Cisco através de um recurso denominado DHCP Snooping. Através desse recurso o engenheiro/administrador da rede configura a porta em que o servidor legítimo está conectado como sendo confiável e todas as demais passam a não ser confiáveis. Assim qualquer mensagem DHCP que chegar nas portas não confiáveis serão descartadas e a porta em questão será bloqueada - problema resolvido! Simples, funcional e muito útil em QUALQUER empresa!

Para exemplificar o processo de configuração, vamos trabalhar com um cenário bem simplista que pode ser observado na figura abaixo.


O processo de configuração é simples e direto:

01. Switch(config)# ip dhcp snooping
02. Switch(config)# ip dhcp snooping vlan 10
03. Switch(config)# interface range f0/1 - 10
04. Switch(config-if-range)# ip dhcp snooping limit rate 5 
05. Switch(config-if-range)# interface g0/1
06. Switch(config-if)# ip dhcp snooping trust  
07. Switch(config-if)# end 
08. Switch# show ip dhcp snooping

Pronto! Somente essas linhas de configuração são suficientes para proteger a rede contra um tipo de ataque bastante nocivo. Na linha 01 estamos ativando o recurso no switch e na linha 2 estamos habilitando a proteção na VLAN 10. Nas linhas 03 e 04 estamos impondo um limite de requisições DHCP que as portas não confiáveis podem receber em pacotes por segundo (pps). Por padrão todas as interfaces de um switch são classificadas como não confiáveis (untrusted) e por isso nas linhas 05 e 06 configuramos a porta em que o servidor legítimo está conectado como sendo confiável. Vocês podem utilizar o comando show da linha 08 para visualizar as portas configuradas com DHCP Snooping. 

Abraço.

Samuel.

18 comentários:

  1. Olá Caro Samuel!

    Nao obstante este Post ser antigo (ano passado) mas a noticia em si é e sempre será valida a todo tempo...

    Estou a conhecer o seu site e achei-o super interessante.

    Relativamente a este Post eu tenho uma duvida.

    1. Numa Catalyst Switch com 24 portas, e em uma das portas exemplo fa 0/24 está ligado o Servidor DHCP Legitimo ou Confiavel!! e nas restantes portas estao as estaçoes de trabalho (PCs). face a isto como deve ser a minha configuração?

    Será assim; Ex;
    Switch(config)#ip dhcp snooping
    Switch(config)# ip dhcp snooping vlan 1
    Switch(config)# interface range f0/1 - 23
    Switch(config)# ip dhcp snooping limit rate 5
    Switch(config)# interface fa 0/24
    Switch(config)# ip dhcp snooping trust
    Switch(config)# end

    Será isso? isto porque na sua esplanaçao, te referes apenas as portas fa 1 - 10 como untrusted e depois te referes e bem da porta G0/1 como a trusted port.!!

    2. Agora imagine num ambiente de rede em que eu tenha por exemplo mais de 20 Switches catalyst.... como deve ser a configuraçao? ou basta apenas esta configuraçao inicial na switch em que está ligada direitamente o servidor dhcp??

    Muito obrigado


    Até ja.

    Denzel

    ResponderExcluir
    Respostas
    1. Olá Denzel.

      Sim, seria essa a configuração, basta você seguir o exemplo do artigo. Em ambientes onde há vários switches você deve ativar o recurso "DHCP Snooping" individualmente em cada dispositivo para que não haja nenhum ponto vulnerável na rede.

      Abraço.

      Excluir
  2. Caro Professor Samuel!!

    Muito obrigado mesmo pela sua rapida resposta (confirmação) da qual agradeço imenso.
    Apos esta resposta, uma outra questão me vem acima:

    1. De acordo a mesma topologia acima, como posso configurar o protocolo STP de modos a previnir LOOK na minha rede? "lembrando que tenho mais de 10 switches catalyst 2960 series"

    Brigado pela atençao


    Denzel

    ResponderExcluir
    Respostas
    1. A melhor maneira de configurar o STP vai depender fortemente do arranjo topológico da sua rede. Recomendo a leitura dos links abaixo para você ter uma idéia de algumas práticas comuns:

      Manipulação do STP na Otimização de Redes Layer-2
      Configuração de Switch Layer-3

      Excluir
  3. Caro Professor Samuel..

    O meu muito obrigado cara.. voce nao imagina o quanto este post sobre dhcp snooping me vai ajudar...muito obrigado mesmo.

    Estou a ler e ler e ler mais e mais o seu post no link que enviou me sobre STP, mas te garanto que nao está facil entender e ter uma idei em como configurar.

    Minha rede está:

    Tenho cerca de 3 Racks e em cada Rack tenho 3 a 5 Switches Catalyst 2960
    entre elas, a SW que está no TOP distribui o sinal de internet as demais logo abaixo ou seja, se tenho 3 SW, a SW que estiver no TOP é a que recebe o primeiro sinal de internet que vem da rack principal, e as demais 2 ou 3 SW vao pegar o sinal de internet na SW do TOP. e assim sucessivamente para as restantes Racks.

    Alguma Ideia Professor?

    Obrigado pela sua grande capacidade de resposta e paciencia.

    ResponderExcluir
    Respostas
    1. Faça uma releitura cuidadosa dos demais artigos que sugeri para começar a ter idéia de algumas boas práticas de projeto, mas não fique limitado apenas aos artigos. É necessário estudar bastante fundamento e boas práticas de projeto para desenhar redes...

      A princípio sua descrição do ambiente apresenta erros de projeto, cabendo destacar a presença de um único dispositivo de borda (sem redundância) e a ligação assimétrica de switches (cascateamentos).

      Uma rede bem projetada, na medida do possível, deve ser simétrica, de maneira que a quantidade de links dos switches de acesso para o(s) de distribuição seja a mesma em qualquer localização física do ambiente.

      Sugiro que você faça o desenho da topologia da sua rede para enxergar melhor seu ambiente e identificar essas falhas que mencionei, antes de partir para qualquer configuração. Não adianta configurar uma rede que apresenta falhas de desenho... Se mesmo assim você não conseguir identificar esses pontos e não sentir confiança para executar o projeto, então a empresa em que você trabalha deve avaliar a contratação de terceiros para fazê-lo.

      Abraço.

      Excluir
    2. Caro Professor Samuel!!

      Permita me antes lhe agradecer e parabenizar pelo seu forte espirito profissional e de facto de um professor real. agradeço igualmente pela alerta que faz com relação aquilo que sentiu que deve ser um erros no meu projecto ou desenho da rede do ponto de vista da arquitetura (design).

      Permite me ihgualmente lhe dizer que sou ligeiramente novo na industria Cisco e somente a alguns meses completei o meu ccna, ccna wireless e ccna security, mas como deve calcular, descrever e perceber os meandros dessa enorme industria leva sempre alguma time.

      Eu realmente gostaria de lhe poder enviar um pequeno desenho da minha rede que fiz no cisco PT, para que tenha uma ideia mais visivel e lúcida da minha topologia, mas aqui no site nao vejo opçoes de como carregar o mesmo. mas a minha rede é assim:

      INTERNET»»»ROUETR»»»»ASA»»»»»SWITCH (3740 S)»»»Local LAN...e é apartir desta Switch de core, onde saiem ligaçoes por fibra optica para 4 Racks Diferentes, onde em cada uma das Rack tem entre 4 a 5 Switches todas elas catalyst 2960.

      1. Nestas Racks, as Switches que estao no Topo das restantes, recebem as ligaçoes em fibra obviamente apartir da Switch Core 3750. ou seja as primeiras 4 Switches que estâo no topo das outras.

      2. Ja as restantes SW em cada uma das Racks, recebem todas elas um (1) Link (cabo utp) apartir da SW do Topo, para as suas respectivas Portas a Giga, ex na G1... ou seja, da SW do Topo para a segunda SW,....outra vez da SW do Topo para a terceira SW...outra vez da SW to Topo para a quarta SW e assim sucessivamente.

      Resumindo essa é a forma como os meus dispositivos estão interligados. espero bem que isto ajoda lhe para mais promenores no que diz respeito a essa matéria, da qual gostaria eu de beber muito do seu Know How.

      Professor Samuel espero que dessa forma, consegui lhe ilustrar e lhe trazer alguma ideia mais clara da minha ligação. (pela é eu nao poder de facto anexar ficheiros para melhor ilustrar).

      Agradeço uma vez mais seu sentido profissional e de um grande professor.

      Antes de terminar gostaria lhe dizer que adorei bastante esta passagem em resposta neste post que passo a sitar:

      " ( Uma rede bem projetada, na medida do possível, deve ser simétrica, de maneira que a quantidade de links dos switches de acesso para o(s) de distribuição seja a mesma em qualquer localização física do ambiente)"

      Gostaria pois que me desmistificasse estes excelentes termos por outras palavras.


      ABRÇ


      Denzel

      Excluir
  4. Boa noite, excelente trabalho professor!
    Samuel estou com um dúvidas!

    Vamos supor em que minha rede, o Servidor DHCP esteja no Switch Core, onde eu tenho vários Switches fazendo uplink com o Switch Core, referente no seu tutorial, as portas de uplinks entre os Switches precisam estar em modo ip dhcp snooping trust?
    Obrigado

    ResponderExcluir
    Respostas
    1. Sim, os links trunk devem ser confiáveis para que as mensagens "offer" do(s) servidor(es) DHCP sejam permitidas.

      Excluir
    2. Eu tb estava com essa duvida, ou seja as portas trunk tem que ser marcadas como trust tb né? até pq as requisições do DHCP vão ser enviadas e recebidas pelas portas tronco, corrreto?

      Excluir
  5. Professor Samuel, bom dia!

    Este recurso pode ser usado para um roteador com a função de DHCP Server habilitado?

    Ou seja o próprio roteador é o servidor de DHCP, não havendo DHCP externo.

    ResponderExcluir
    Respostas
    1. O DHCP Snooping é um serviço ativado em switches para impedir servidores DHCP falsos na rede. Uma vez ativado esse recurso, não faz diferença nenhuma se o servidor legítimo em operação existe em um roteador, um switch, um firewall ou uma máquina tradicional rodando Windows ou Linux.

      Excluir
  6. Professor Samuel

    Não consigo ativar no SW_2960(config)# ip dhcp snooping, no Packet Tracer 6.0.1. Listo ip dhcp ? eme surgem apenas "pool" e "excluded-address"

    ResponderExcluir
    Respostas
    1. O Packet Tracer nao tem suporte ao recurso DHCP Snooping.

      Excluir
  7. Olá professor bom dia, vê se pode me dar uma luz, tenho 3 switch 3COM HP 4210 com 48 portas no meu rack, tenho que fazer esse procedimento nos 3? esses switchs aceitam esses comandos? Também possuo 18 unidades remotas nesse caso como seria feito? desculpe são muitas as duvidas e ficaria muito agradecido se tivesse alguma resposta, desde já obrigado.

    ResponderExcluir
    Respostas
    1. Você deve ativar esse recurso somente nas portas onde estão conectados servidores DHCP e também nos uplinks para outros switches, já que nesses pontos serão permitidas as mensagens OFFER do DHCP. Os comandos nas caixas da HP não são exatamente os mesmos, mas são bem parecidos.

      No caso do HP 4810, você ativa o DHCP Snooping em modo de configuração global e depois configura individualmente as interfaces que são confiáveis. Você deve usar os seguintes comandos:

      [4810]dhcp-snooping
      DHCP Snooping is enabled.
      [4810]int gX/X/X
      [4810-GigabitEthernetX/X/X]dhcp-snooping trust

      Excluir
    2. ok, muito obrigado verei se funciona e darei um retorno.

      Excluir