Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

01 - O que é DHCP e Portas (67 e 68)

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

O que é DHCP e Portas (67 e 68)

1. Definição do Protocolo DHCP

O DHCP (Dynamic Host Configuration Protocol) é o protocolo da camada de aplicação responsável por atribuir automaticamente endereços IP e parâmetros de configuração de rede a dispositivos em uma infraestrutura TCP/IP. Padronizado pela RFC 1534 (1993) e posteriormente refinado pela RFC 2131 (1997, versão atual) e RFC 2132 (opções e extensões), o DHCP elimina a necessidade de configuração manual (estática) de cada host, reduzindo drasticamente o custo operacional de redes de qualquer tamanho.

Objetivo Original

Antes do DHCP, administradores precisavam atribuir IPs manualmente em cada estação. Em uma universidade com 5.000 hosts, isso significava um pesadelo de planilhas, conflitos de IP duplicados e dificuldade de reconfigurar máquinas móveis (laptops). O DHCP surgiu para automatizar todo esse ciclo de "plug-and-play" de endereçamento IP.

Parâmetros Distribuídos pelo DHCP

Parâmetro Função
Endereço IP Identidade L3 do host na rede
Máscara de sub-rede Define o tamanho da sub-rede local
Default Gateway Roteador para sair da sub-rede local
Servidores DNS Resolvedores de nomes recursivos
Lease Time Tempo de validade da atribuição
Servidores WINS/NBNS Resolução de nomes NetBIOS (legado Windows)
MTU Maximum Transmission Unit do enlace
Domínio DNS Sufixo DNS padrão (ex: empresa.com)

2. As Portas 67 e 68 — Por que Duas?

Diferente da maioria dos protocolos que usa uma única porta bem conhecida, o DHCP opera sobre UDP em duas portas distintas:

Porta Direção Função
UDP 67 Servidor (inbound) Onde o servidor DHCP escuta requisições dos clientes
UDP 68 Cliente (inbound) Onde o cliente DHCP escuta respostas do servidor

A Lógica da Separação

Essa arquitetura incomum tem uma razão técnica precisa: no momento em que o cliente inicia a negociação DHCP, ele ainda não possui endereço IP. Portanto, ele não pode enviar pacotes unicast válidos. O cliente precisa usar endereços especiais de bootstrap (0.0.0.0 como origem e 255.255.255.255 como destino em broadcast). Ter portas distintas permite que o servidor distinga claramente quem é quem na negociação, mesmo quando o IP ainda não foi atribuído.

Endereços Especiais Usados pelo DHCP

  • 0.0.0.0 — Source IP usado pelo cliente quando ainda não tem IP ("este host").
  • 255.255.255.255 — Destination broadcast limitado à sub-rede local (RFC 919).
  • Endereço de rede da sub-rede — Usado em broadcast dirigido (ex: 192.168.1.255 para /24).

3. O Processo DORA (Discover, Offer, Request, Ack)

A negociação DHCP clássica é chamada de DORA — quatro mensagens trocadas entre cliente e servidor:

Cliente                  Servidor DHCP
  |                          |
  |---- DHCPDISCOVER ----->  |  (broadcast UDP, sport=68, dport=67)
  |                          |
  |<--- DHCPOFFER -----------|  (pode ser broadcast ou unicast)
  |                          |
  |---- DHCPREQUEST ------>  |  (broadcast - aceita oferta, avisa outros servidores)
  |                          |
  |<--- DHCPACK ------------|  (confirmação final com lease)
  |                          |

Detalhamento das Quatro Etapas

  1. DHCPDISCOVER — O cliente envia um broadcast UDP para a porta 67 procurando servidores disponíveis. Esse pacote carrega o MAC address do cliente (CHADDR — Client Hardware Address) como identificador único.
  2. DHCPOFFER — Cada servidor DHCP que ouve o discover responde com uma oferta de IP, máscara, lease time e demais parâmetros.
  3. DHCPREQUEST — O cliente escolhe uma das ofertas (geralmente a primeira recebida) e envia um broadcast confirmando a escolha. O broadcast é importante: ele informa aos servidores não escolhidos que seus IPs oferecidos podem voltar ao pool.
  4. DHCPACK — O servidor escolhido confirma definitivamente a atribuição e marca o IP como "em uso" em sua tabela interna de leases.

4. Estrutura Interna do Pacote DHCP

O DHCP é transportado sobre UDP, com payload máximo de 576 bytes em IPv4 (RFC 2131). O pacote herda o formato do BOOTP (RFC 951) e adiciona o campo Options com TLV (Type-Length-Value):

Campo Tamanho Função
OP 1 byte Tipo de mensagem (1=BOOTREQUEST, 2=BOOTREPLY)
HTYPE 1 byte Tipo de hardware (1=Ethernet)
HLEN 1 byte Tamanho do endereço de hardware (6 para MAC)
HOPS 1 byte Contagem de saltos (usado por relay agents)
XID 4 bytes ID de transação (correlaciona discover/offer/request/ack)
SECS 2 bytes Segundos desde o início da negociação
FLAGS 2 bytes Bit 0 = broadcast flag (cliente pede resposta em broadcast)
CIADDR 4 bytes Client IP Address (preenchido se cliente já tem IP)
YIADDR 4 bytes "Your" IP Address (IP atribuído ao cliente)
SIADDR 4 bytes Server IP Address (próximo servidor, usado em PXE boot)
GIADDR 4 bytes Gateway IP Address (relay agent - DHCP cross-subnet)
CHADDR 16 bytes Client Hardware Address (MAC)
SNAME 64 bytes Server host name (opcional)
FILE 128 bytes Boot file name (PXE/TFTP)
OPTIONS variável Opções DHCP (TLV) - onde a mágica acontece

Opções DHCP Mais Comuns

Código Nome Função
53 DHCP Message Type Discover=1, Offer=2, Request=3, Ack=5, Decline=4, Release=7
1 Subnet Mask Máscara de sub-rede
3 Router Default gateway
6 Domain Name Server Lista de DNS recursivos
51 IP Address Lease Time Duração do lease em segundos
54 DHCP Server Identifier IP do servidor DHCP escolhido
82 Relay Agent Information Sub-opções inseridas por relays (circuito, remote ID)
60 Vendor Class Identifier Identifica fornecedor (ex: "MSFT 5.0" para Windows)
119 Domain Search List Lista de sufixos DNS para busca

5. Renovação e Liberação do Lease

O lease DHCP não é permanente — ele segue um ciclo de vida baseado em temporizadores (timers):

Estado Timer Padrão Ação do Cliente
T1 (Renew) 50% do lease Cliente envia DHCPREQUEST unicast ao servidor original pedindo renovação
T2 (Rebind) 87,5% do lease Se T1 falhou, cliente envia DHCPREQUEST broadcast para qualquer servidor
Expiração 100% do lease Cliente libera IP e volta ao estado INIT (DISCOVER)

Liberação Manual: DHCPRELEASE

Um cliente pode liberar o IP antes da expiração usando o comando DHCPRELEASE. Em Linux, isso é feito via:

# Liberar o lease atual
sudo dhclient -r eth0

# Solicitar novo lease
sudo dhclient eth0

Em Windows, o equivalente é:

ipconfig /release
ipconfig /renew

6. DHCP Relay Agent — Inter-VLAN Operation

Como broadcasts não atravessam roteadores, o DHCP nativamente só funcionaria dentro de uma única sub-rede/VLAN. Para permitir que um único servidor DHCP atenda múltiplas VLANs, usa-se o DHCP Relay Agent (RFC 1542):

  • O roteador intercepta o broadcast DHCPDISCOVER na porta 67.
  • Ele encapsula o pacote em unicast para o servidor DHCP centralizado, preenchendo o campo GIADDR com o IP da interface onde o broadcast foi recebido.
  • O servidor usa o GIADDR para selecionar o pool correto de IPs para aquela sub-rede.

Em roteadores Cisco, a configuração típica é ip helper-address 10.0.0.5 sob cada interface VLAN. Em Linux, o isc-dhcp-relay faz a mesma função.

7. Perspectiva de Segurança: Ataques ao DHCP

Rogue DHCP Server

Um atacante liga um servidor DHCP falso na rede, que responde mais rapidamente que o servidor legítimo, distribuindo gateway falso (para capturar tráfego) e DNS falso (para redirecionar vítimas a clones de sites bancários). Mitigação: DHCP Snooping em switches gerenciados — apenas portas confiáveis (trusted) podem enviar respostas DHCP.

DHCP Starvation (DoS)

Um atacante envia milhares de DHCPDISCOVER com MACs forjados, esgotando o pool de IPs do servidor em segundos. Mitigação: Port security limitando MACs por porta; rate-limiting de broadcasts.

Ataque via Opção 82 Manipulada

Relays comprometidos podem injetar sub-opções maliciosas em Opção 82, explorando parsers vulneráveis em servidores legados.

8. Diagnóstico e Auditoria

Captura de Tráfego DHCP

# Capturar todo tráfego DHCP em uma interface
sudo tcpdump -i eth0 -n port 67 or port 68 -vv

# Ver leases ativos em um servidor ISC DHCP
cat /var/lib/dhcp/dhcpd.leases

# Ver IP obtido por DHCP no Linux
ip addr show eth0
cat /var/lib/dhcp/dhclient.leases

Logs Típicos de Servidor DHCP

Apr 14 10:23:45 dhcp01 dhcpd[1234]: DHCPDISCOVER from 00:1a:2b:3c:4d:5e via eth0
Apr 14 10:23:45 dhcp01 dhcpd[1234]: DHCPOFFER on 192.168.1.42 to 00:1a:2b:3c:4d:5e via eth0
Apr 14 10:23:45 dhcp01 dhcpd[1234]: DHCPREQUEST for 192.168.1.42 from 00:1a:2b:3c:4d:5e via eth0
Apr 14 10:23:45 dhcp01 dhcpd[1234]: DHCPACK on 192.168.1.42 to 00:1a:2b:3c:4d:5e via eth0

9. Resumo Técnico

Atributo Valor
RFC principal RFC 2131 (DHCPv4)
Camada OSI Aplicação (7)
Transporte UDP
Porta servidor 67
Porta cliente 68
Funcionamento base Broadcast inicial, unicast na confirmação
Mecanismo de estado Lease temporário (renovação T1/T2)
Cross-subnet DHCP Relay Agent (ip helper-address)
Segurança típica DHCP Snooping, port security

10. Conclusão

O DHCP é a peça que tornou viável operar redes de grande escala sem intervenção manual em cada host. Suas portas 67/68 (servidor/cliente) refletem a natureza assimétrica do protocolo, onde o cliente inicia sem IP válido e depende de broadcasts bootstrap. Compreender o ciclo DORA, a estrutura de opções TLV e os mecanismos de relay é essencial para qualquer administrador de redes ou analista de segurança, já que o DHCP é um dos primeiros vetores de ataque em redes internas corporativas.