Segurança de DNS e DHCP
Esta aula aborda a segurança de DNS e DHCP, incluindo ataques de spoofing, a implementação do DNSSEC, o DHCP snooping e a configuração do resolv.conf. O objetivo é fornecer uma compreensão prática e teórica desses componentes críticos da infraestrutura de rede e como protegê-los.
O DNS (Domain Name System) e o DHCP (Dynamic Host Configuration Protocol) são serviços fundamentais em qualquer rede IP. O DNS traduz nomes de domínio em endereços IP, enquanto o DHCP atribui automaticamente configurações de rede, como endereço IP, máscara de sub-rede, gateway e servidores DNS. No entanto, ambos são alvos frequentes de ataques que podem comprometer a integridade e a disponibilidade da rede. Nesta aula, vamos explorar as vulnerabilidades mais comuns e as técnicas de mitigação, incluindo spoofing, DNSSEC, DHCP snooping e a configuração do resolv.conf.
Compreender esses mecanismos é essencial para administradores de rede e profissionais de segurança, pois ataques bem-sucedidos ao DNS podem redirecionar usuários para sites maliciosos, enquanto ataques ao DHCP podem causar negação de serviço ou interceptação de tráfego. Vamos analisar cada tópico em detalhes, com exemplos práticos e boas práticas de configuração.
Spoofing
Spoofing é uma técnica em que um atacante falsifica informações para se passar por uma entidade legítima. No contexto de DNS e DHCP, o spoofing pode ocorrer de várias formas: o atacante pode enviar respostas falsas de DNS (DNS spoofing) ou oferecer serviços DHCP maliciosos (DHCP spoofing). O objetivo é redirecionar o tráfego da vítima para servidores controlados pelo atacante, permitindo a interceptação de dados, a inserção de conteúdo malicioso ou a negação de serviço.
O DNS spoofing, também conhecido como envenenamento de cache, ocorre quando um atacante injeta registros falsos no cache de um resolvedor de DNS. Isso pode ser feito explorando vulnerabilidades no software do servidor DNS ou adivinhando IDs de transação e portas de origem. Uma vez que o cache é envenenado, todos os clientes que consultam esse resolvedor receberão respostas falsas. Já o DHCP spoofing envolve a configuração de um servidor DHCP não autorizado na rede, que fornece configurações maliciosas, como um gateway ou DNS falso.
Para mitigar o spoofing, é crucial implementar medidas como o DNSSEC (para validar respostas DNS), DHCP snooping (para filtrar mensagens DHCP não autorizadas) e a configuração correta de firewalls e listas de controle de acesso. Além disso, é importante manter os sistemas atualizados e monitorar a rede em busca de atividades suspeitas.
DNSSEC
O DNSSEC (Domain Name System Security Extensions) é um conjunto de extensões do DNS que adiciona autenticação e integridade às respostas DNS. Ele utiliza criptografia de chave pública para assinar digitalmente os registros DNS, permitindo que os resolvedores verifiquem se as respostas são autênticas e não foram adulteradas. O DNSSEC não criptografa os dados, mas garante que eles não foram modificados durante a transmissão e que vêm de uma fonte confiável.
A implementação do DNSSEC envolve a criação de chaves públicas e privadas para cada zona DNS. As chaves privadas assinam os registros, enquanto as chaves públicas são publicadas no DNS para que os resolvedores possam verificar as assinaturas. O processo de validação é baseado em uma cadeia de confiança, que começa na raiz do DNS e desce até os domínios específicos. Para que o DNSSEC funcione, todas as partes envolvidas (desde os servidores raiz até os resolvedores) precisam suportar e habilitar a validação.
A configuração do DNSSEC pode ser complexa, mas é essencial para proteger contra DNS spoofing. Muitos provedores de DNS e registradores oferecem suporte a DNSSEC, e ferramentas como o dnssec-keygen e dnssec-signzone (do BIND) ajudam na administração das chaves e assinaturas. Abaixo está um exemplo de como gerar chaves e assinar uma zona:
# Gerar chaves KSK e ZSK (em um servidor BIND)
dnssec-keygen -a RSASHA256 -b 2048 -f KSK nomedozona
dnssec-keygen -a RSASHA256 -b 1024 nomedozona
# Assinar a zona
dnssec-signzone -o nomedozona -t db.nomedozona
# Configurar o arquivo de zona para incluir as chaves e assinaturas
# Exemplo de diretivas no arquivo de zona:
$include /etc/bind/Knomedozona.+005+12345.key
$include /etc/bind/Knomedozona.+005+12345.private
Após a assinatura, o resolvedor precisa ser configurado para validar as respostas. No BIND, isso é feito adicionando a opção dnssec-validation yes; no arquivo de configuração. Com o DNSSEC habilitado, o resolvedor rejeitará respostas que não possuam assinaturas válidas, impedindo o envenenamento de cache.
DHCP snooping
O DHCP snooping é um recurso de segurança disponível em switches de rede que filtra mensagens DHCP não autorizadas. Ele permite que o switch examine o tráfego DHCP e bloqueie mensagens de servidores DHCP não confiáveis, prevenindo ataques de DHCP spoofing. O DHCP snooping também pode mitigar ataques de esgotamento de pool de endereços IP, limitando a taxa de mensagens DHCP e verificando a autenticidade das mensagens.
O DHCP snooping funciona criando uma tabela de confiança, na qual as portas conectadas a servidores DHCP legítimos são marcadas como confiáveis, enquanto as demais portas são não confiáveis. O switch só aceita mensagens DHCP de servidores em portas confiáveis. Além disso, o DHCP snooping pode registrar a associação entre endereços IP e endereços MAC dos clientes, criando uma tabela de ligação que pode ser usada por outros recursos de segurança, como o IP Source Guard.
Para configurar o DHCP snooping em um switch Cisco, por exemplo, são utilizados os seguintes comandos:
! Habilitar DHCP snooping globalmente
ip dhcp snooping
! Habilitar DHCP snooping na VLAN 10
ip dhcp snooping vlan 10
! Marcar a interface GigabitEthernet0/1 como confiável (conectada ao servidor DHCP)
interface GigabitEthernet0/1
ip dhcp snooping trust
! (Opcional) Limitar a taxa de mensagens DHCP na interface não confiável
interface GigabitEthernet0/2
ip dhcp snooping limit rate 10
Além de bloquear servidores DHCP não autorizados, o DHCP snooping também pode ser usado para evitar ataques de DHCP starvation, onde um atacante envia muitas solicitações DHCP para esgotar o pool de endereços. Ao limitar a taxa de mensagens DHCP em portas não confiáveis, o switch impede que o atacante consuma todos os endereços disponíveis.
Resolv.conf
O arquivo resolv.conf é um arquivo de configuração do sistema operacional Linux/Unix que define os resolvedores de DNS a serem utilizados pelo sistema. Ele contém diretivas como nameserver (endereço IP do servidor DNS), search (lista de domínios de busca) e options (configurações avançadas). A segurança do DNS também depende de uma configuração correta do resolv.conf, pois um arquivo mal configurado pode apontar para servidores DNS não confiáveis ou vulneráveis.
O arquivo resolv.conf é frequentemente gerenciado automaticamente pelo DHCP ou pelo NetworkManager, mas em ambientes críticos pode ser necessário configurá-lo manualmente. É importante garantir que os servidores DNS listados sejam confiáveis e que o resolvedor esteja configurado para usar DNSSEC, se disponível. Além disso, é possível definir opções como timeout e attempts para melhorar a resiliência.
Abaixo está um exemplo de um arquivo resolv.conf seguro:
# /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
search example.com
domain example.com
options timeout:2 attempts:2
Neste exemplo, os servidores DNS são os do Google (8.8.8.8 e 8.8.4.4), que suportam DNSSEC. A opção timeout define o tempo de espera para uma resposta, e attempts define o número de tentativas. É importante lembrar que, se o sistema estiver usando o systemd-resolved ou o dnsmasq, o resolv.conf pode ser um link simbólico para outro arquivo, e as configurações devem ser feitas nos serviços apropriados.
Para verificar se o DNSSEC está sendo usado, pode-se consultar as estatísticas do resolvedor ou usar ferramentas como dig com a flag +dnssec para verificar as assinaturas.
Boas Práticas e Observações Finais
Além das medidas específicas discutidas, é importante adotar boas práticas gerais de segurança para DNS e DHCP. Mantenha os servidores atualizados com os patches mais recentes, monitore logs em busca de atividades suspeitas e utilize ferramentas de análise de tráfego para detectar anomalias. A segmentação de rede e o uso de VLANs podem limitar o impacto de um ataque. Implementar autenticação em servidores DHCP (como o DHCP authentication) e usar firewalls para restringir o tráfego DNS e DHCP também são recomendados.
Por fim, a educação dos usuários é fundamental: eles devem ser orientados a verificar a autenticidade de sites e a não ignorar avisos de segurança do navegador. A segurança da informação é um processo contínuo, e a proteção do DNS e do DHCP é apenas uma parte dele.
Referências
- RFC 4033: DNS Security Introduction and Requirements
- ICANN: What is DNSSEC and Why Is It Important?
- Cisco: Configuring DHCP Snooping
- Linux man page: resolv.conf(5)
- ISC BIND: DNS Software
- DNSSEC Deployment Initiative
- RFC 2131: Dynamic Host Configuration Protocol
Exercícios
- Explique a diferença entre DNS spoofing e DHCP spoofing e dê um exemplo de como cada um pode ser realizado.✓ Resposta: DNS spoofing envolve a falsificação de respostas DNS para redirecionar o tráfego de um domínio para um IP malicioso. Por exemplo, um atacante pode envenenar o cache de um resolvedor DNS, fazendo com que o domínio 'exemplo.com' aponte para um servidor de phishing. DHCP spoofing envolve a configuração de um servidor DHCP não autorizado que oferece configurações de rede falsas, como um gateway ou DNS controlado pelo atacante. Por exemplo, em uma rede sem DHCP snooping, um atacante pode ligar um roteador malicioso que responde às solicitações DHCP, fornecendo um gateway falso para interceptar o tráfego.
- Descreva o funcionamento do DNSSEC e como ele protege contra o envenenamento de cache.✓ Resposta: O DNSSEC adiciona assinaturas digitais aos registros DNS usando criptografia de chave pública. Cada zona DNS possui uma chave privada que assina um conjunto de registros, e uma chave pública que é publicada no DNS. Os resolvedores que suportam DNSSEC validam as assinaturas usando a cadeia de confiança, começando na raiz. Se um atacante tentar injetar um registro falso, a assinatura será inválida e o resolvedor rejeitará a resposta, impedindo o envenenamento de cache.
- Quais são as principais funções do DHCP snooping e como ele pode ser configurado em um switch?✓ Resposta: O DHCP snooping filtra mensagens DHCP não autorizadas, bloqueando servidores DHCP maliciosos e prevenindo ataques de DHCP starvation. Ele cria uma tabela de confiança, onde portas conectadas a servidores legítimos são marcadas como confiáveis. Para configurar, é necessário habilitar o DHCP snooping globalmente e por VLAN, e marcar as interfaces confiáveis. Exemplo:
ip dhcp snooping ip dhcp snooping vlan 10 interface GigabitEthernet0/1 ip dhcp snooping trust - O que é o arquivo resolv.conf e quais são as diretivas mais importantes para segurança?✓ Resposta: O resolv.conf é um arquivo de configuração do Linux/Unix que define os servidores DNS a serem usados pelo sistema. As diretivas principais são:
nameserver(endereço IP do servidor DNS),search(domínios de busca) eoptions(como timeout e attempts). Para segurança, é importante usar servidores DNS confiáveis (como os do Google ou da sua organização) e, se possível, configurar o DNSSEC. Exemplo:nameserver 8.8.8.8 options timeout:2 attempts:2 - Cite três boas práticas para proteger o DNS e o DHCP em uma rede corporativa.✓ Resposta: 1. Implementar DNSSEC para validar respostas DNS e prevenir spoofing. 2. Configurar DHCP snooping nos switches para bloquear servidores DHCP não autorizados. 3. Manter os servidores DNS e DHCP atualizados com patches de segurança e monitorar logs para atividades suspeitas. Além disso, segmentar a rede e usar firewalls para restringir o tráfego.