Duração: 75 minutos (explicação 20, prática guiada 45, verificação 10). Resultados dos TdR trabalhados: Segurança desde a concepção; Identificar vulnerabilidades e aplicar mitigação.
Objectivos
- Explicar o endurecimento de equipamentos de rede: plano de gestão protegido, serviços mínimos, parâmetros seguros, credenciais únicas, registos centralizados, hora certa e actualizações.
- Verificar um encaminhador de prática com uma lista de verificação automática, só de leitura, que devolve OK/FALHA com o valor obtido e o esperado.
- Aplicar correcções justificadas (parâmetros do núcleo, retirada de serviço desnecessário, cadeia de entrada com negação por omissão) e repetir a verificação como reteste.
- Explicar a gestão de vulnerabilidades dos equipamentos: inventário de versões, avisos do fabricante, identificadores CVE e janelas de actualização.
Proteger o próprio equipamento
Um encaminhador ou comutador comprometido compromete toda a rede que passa por ele. Segurança desde a concepção significa começar pela configuração mínima: desligar serviços não usados (páginas web de gestão antigas, telnet, SNMP v1/v2c), permitir a gestão só a partir da rede de gestão e por protocolos cifrados (SSH, SNMPv3), trocar todas as credenciais de fábrica por credenciais únicas guardadas em cofre, enviar registos para o receptor central e sincronizar a hora (módulo 11).
Há também parâmetros de encaminhamento a endurecer. O filtro de caminho inverso (rp_filter) descarta pacotes com endereço de origem impossível para a interface de entrada, dificultando a falsificação de origem; em redes com encaminhamento assimétrico pode descartar tráfego legítimo, por isso escolhe-se com conhecimento da topologia. Redirecções ICMP permitem a outro equipamento alterar a tabela de encaminhamento e normalmente desactivam-se num encaminhador. No Linux, para o rp_filter conta o maior valor entre «all» e o da interface; a lista desta lição verifica só «all», o que é uma simplificação declarada.
Vulnerabilidades e actualizações
Os fabricantes publicam avisos de segurança; cada vulnerabilidade conhecida recebe um identificador CVE e, muitas vezes, uma pontuação CVSS que resume a gravidade técnica, não o risco na instituição. A gestão de actualizações (NIST SP 800-40) começa pelo inventário de modelos e versões (módulo 11, lição 1), acompanha os avisos, avalia a exposição de cada equipamento, testa, aplica numa janela aprovada com plano de reversão e confirma.
Uma lista de verificação só vale se cada item tiver um valor esperado justificado, se correr sem alterar nada e se for repetida depois da correcção (reteste). Um OK significa «este item, neste momento, tem o valor esperado»; não significa que o equipamento esteja seguro em geral.
Caso fictício
Na DPE (fictícia), o encaminhador da sede (r1 na rede de prática) foi instalado há anos: tem uma página de gestão antiga sem cifra no porto 8080, parâmetros de fábrica e nenhuma protecção de entrada. O chefe aprova uma verificação e as correcções na rede de prática, para depois preparar a mudança real com pedido de alteração. Todos os dados são fictícios.
Prática guiada em rede isolada
Rede de prática fictícia, criada dentro de um computador de prática com o script base (módulo 1, lição 1). Nunca use estes passos na rede de produção nem contra endereços reais. As saídas mostradas são exemplos didácticos, não resultados de uma execução.
Topologia (descrição em texto)
- pc-adm (10.10.10.10) — ligado a r1 pela VLAN 10.
- srv (10.10.20.53) — ligado a r1 pela VLAN 20.
- r1 (encaminhador da sede) — ligado a pc-adm, srv, r2 e isp.
- r2 (encaminhador da delegação) — ligado a r1 e a pc-del (10.20.10.10).
- isp (operador simulado) — ligado a r1 e ao servidor externo 198.51.100.10 (endereço dentro de isp).
- Âmbito autorizado: apenas os espaços de nomes acima; alvo desta lição: o r1.
- Serviço desnecessário simulado: servidor web em primeiro plano no r1, porto 8080, iniciado pelo formador para representar a página de gestão antiga.
- Correcções: parâmetros sysctl dentro do espaço de nomes r1 (não afectam a VM) e tabela nftables «m12equip» no r1.
- Nota: esta lista pressupõe o r1 da rede base, sem FRR. Se o r1 correr FRR (módulos 3 e 5), há serviços à escuta legítimos: ajustar o valor esperado e justificá-lo.
Passos
Pré-verificação e âmbito (não altera nada): confirme as ferramentas, a rede de prática e que a pasta do módulo está livre. Leia em voz alta a declaração de âmbito: «os testes desta aula só se aplicam aos espaços de nomes da rede de prática; qualquer outro endereço está fora do âmbito autorizado». Todos os comandos de teste começam por «ip netns exec <nome>»: um comando sem esse prefixo sairia da rede de prática e não deve ser executado.
for d in nmap nft python3 ssh ssh-keygen sshd git; do command -v $d >/dev/null || echo "Em falta: $d"; done ip netns list | grep -cE '^(pc-adm|srv|r1|r2|pc-del|isp)( |$)' sudo ip netns exec pc-adm ping -c 2 10.10.20.53 | tail -1 test -e /tmp/dpe-m12 && echo 'ATENÇÃO: /tmp/dpe-m12 já existe' || echo 'pasta livre'Saída de exemplo (didáctica):
(nenhuma linha «Em falta») 6 rtt min/avg/max/mdev = 0.05/0.07/0.09/0.02 ms pasta livreFormador, consola F: inicie o serviço desnecessário simulado no r1 (esperar «Serving HTTP»).
F: sudo ip netns exec r1 python3 -m http.server 8080 --bind 0.0.0.0 --directory /usr/share/doc/nftablesSaída de exemplo (didáctica):
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...Guarde os valores iniciais dos parâmetros (para poder repor) e grave a lista de verificação (texto completo abaixo).
mkdir -p /tmp/dpe-m12/l2 && cd /tmp/dpe-m12/l2 for k in net.ipv4.conf.all.rp_filter net.ipv4.conf.all.accept_redirects net.ipv4.conf.all.send_redirects; do echo "$k=$(sudo ip netns exec r1 sysctl -n $k)"; done | tee valores-iniciais.txt cat > verificar-r1.sh <<'EOF' #!/bin/sh # verificar-r1.sh — lista de verificação SÓ DE LEITURA do encaminhador r1 (rede de prática DPE). # Uso: sudo sh verificar-r1.sh Código de saída: 0 sem falhas, 1 com falhas, 2 erro de execução. set -u [ "$(id -u)" = 0 ] || { echo "ERRO: executar com sudo." >&2; exit 2; } ip netns list | awk '{print $1}' | grep -qx r1 || { echo "ERRO: espaço de nomes r1 não existe." >&2; exit 2; } falhas=0 verif() { # descrição, valor obtido, valor esperado if [ "$2" = "$3" ]; then echo "OK $1 ($2)" else echo "FALHA $1 (obtido: $2; esperado: $3)"; falhas=$((falhas + 1)); fi } s() { ip netns exec r1 sysctl -n "$1" 2>/dev/null || echo "?"; } verif "Filtro de caminho inverso, rp_filter (all)" "$(s net.ipv4.conf.all.rp_filter)" 1 verif "Não aceitar redirecções ICMP (all)" "$(s net.ipv4.conf.all.accept_redirects)" 0 verif "Não enviar redirecções ICMP (all)" "$(s net.ipv4.conf.all.send_redirects)" 0 verif "Não aceitar encaminhamento pela origem (all)" "$(s net.ipv4.conf.all.accept_source_route)" 0 verif "Serviços à escuta no r1 (TCP/UDP)" "$(ip netns exec r1 ss -Htuln | wc -l)" 0 pol=$(ip netns exec r1 nft list chain inet m12equip entrada 2>/dev/null | grep -o 'policy [a-z]*' || echo "sem-cadeia") verif "Política da cadeia de entrada do r1" "$pol" "policy drop" echo "Total de falhas: $falhas" [ "$falhas" -eq 0 ] EOFSaída de exemplo (didáctica):
net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.all.accept_redirects=1 net.ipv4.conf.all.send_redirects=1 (os valores iniciais num espaço de nomes novo podem variar com a versão do núcleo; guarde os que vir)Verificação inicial (só leitura). Complete com a visão de um terceiro: o que o posto de administração vê aberto no r1.
sudo sh verificar-r1.sh; echo "código=$?" sudo ip netns exec pc-adm nmap -Pn -p 22,23,80,161,8080 10.10.10.1Saída de exemplo (didáctica):
FALHA Filtro de caminho inverso, rp_filter (all) (obtido: 0; esperado: 1) FALHA Não aceitar redirecções ICMP (all) (obtido: 1; esperado: 0) FALHA Não enviar redirecções ICMP (all) (obtido: 1; esperado: 0) OK Não aceitar encaminhamento pela origem (all) (0) FALHA Serviços à escuta no r1 (TCP/UDP) (obtido: 1; esperado: 0) FALHA Política da cadeia de entrada do r1 (obtido: sem-cadeia; esperado: policy drop) Total de falhas: 5 código=1 8080/tcp open http-proxy 22/tcp closed ssh (e restantes closed)Classifique cada falha (gravidade, justificação, correcção) na folha de remediação antes de corrigir.
nano /tmp/dpe-m12/l2/remediacao.txtCorrecções: parâmetros do núcleo no r1; retirada do serviço desnecessário (Ctrl+C na consola F); cadeia de entrada com negação por omissão (texto completo abaixo).
sudo ip netns exec r1 sysctl -w net.ipv4.conf.all.rp_filter=1 net.ipv4.conf.all.accept_redirects=0 net.ipv4.conf.all.send_redirects=0 F: Ctrl+C cat > equip.nft <<'EOF' table inet m12equip { chain entrada { type filter hook input priority 0; policy drop; iifname "lo" accept ct state established,related accept icmp type { echo-request, destination-unreachable, time-exceeded } counter accept comment "diagnostico" iifname "r1-pc-adm" ip saddr 10.10.10.10 tcp dport 22 counter accept comment "gestao-ssh-futura" counter comment "entrada-recusada" } } EOF sudo ip netns exec r1 nft -f equip.nftSaída de exemplo (didáctica):
net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0Reteste: a mesma lista e a mesma visão de terceiro. Confirme também que o encaminhamento continua a funcionar (a cadeia de entrada não afecta o tráfego que atravessa o r1).
sudo sh verificar-r1.sh; echo "código=$?" sudo ip netns exec pc-adm nmap -Pn -p 22,23,80,161,8080 10.10.10.1 sudo ip netns exec pc-del ping -c 2 10.10.20.53 | tail -1Saída de exemplo (didáctica):
OK Filtro de caminho inverso, rp_filter (all) (1) OK Não aceitar redirecções ICMP (all) (0) OK Não enviar redirecções ICMP (all) (0) OK Não aceitar encaminhamento pela origem (all) (0) OK Serviços à escuta no r1 (TCP/UDP) (0) OK Política da cadeia de entrada do r1 (policy drop) Total de falhas: 0 código=0 8080/tcp filtered http-proxy (e restantes filtered) rtt min/avg/max/mdev = 0.06/0.07/0.08/0.01 msExercício de vulnerabilidades (em papel, com dados fictícios): o inventário diz que o encaminhador real tem o sistema versão 4.2.1; o aviso fictício do fabricante DPE-SA-2026-07 afecta 4.0 a 4.2.3 na página de gestão web, corrigido em 4.2.4. Preencha a ficha de decisão.
nano /tmp/dpe-m12/l2/ficha-vulnerabilidade.txt
Critérios de sucesso
- A verificação inicial mostra 5 falhas com valor obtido e esperado; o reteste mostra 0 falhas e código 0.
- O visto de terceiro passa de 8080 «open» para «filtered», e o encaminhamento continua a funcionar.
- A folha de remediação tem, para cada falha, gravidade, justificação e correcção, preenchida antes de corrigir.
- A ficha de vulnerabilidade indica exposição, medida provisória (desligar a página de gestão), actualização numa janela aprovada e reteste.
Como desfazer (reversão)
- sudo ip netns exec r1 nft delete table inet m12equip
- Repor os valores iniciais guardados, um a um: por exemplo sudo ip netns exec r1 sysctl -w net.ipv4.conf.all.rp_filter=0 (usar os valores de /tmp/dpe-m12/l2/valores-iniciais.txt).
- Confirmar que a consola F já não tem o servidor web (Ctrl+C feito) e que sudo ip netns pids r1 não lista python3.
- rm -r /tmp/dpe-m12/l2. Nada foi alterado fora do espaço de nomes r1.
Alternativa em papel: tarefas e respostas esperadas
- Para cada falha da verificação inicial de exemplo, indique gravidade (alta/média/baixa), porquê e a correcção.
- Página de gestão sem cifra em 8080: alta (credenciais em claro, superfície de ataque) — retirar o serviço. Sem cadeia de entrada: alta — negação por omissão com excepções para diagnóstico e gestão. rp_filter 0: média — activar, confirmando que não há encaminhamento assimétrico. Aceitar redirecções: média — desactivar. Enviar redirecções: baixa — desactivar. (Outras gradações são aceitáveis se justificadas.)
- Ficha de decisão para o aviso fictício DPE-SA-2026-07 (versão 4.2.1 afectada; correcção em 4.2.4).
- Afectado: sim (4.2.1 está entre 4.0 e 4.2.3). Exposição: a página de gestão web está activa? Se sim, medida provisória imediata: desligá-la ou limitá-la à rede de gestão. Correcção: actualizar para 4.2.4 numa janela aprovada, com cópia da configuração e plano de reversão. Reteste: confirmar versão e que a página não está exposta. Registo no inventário.
- Um colega diz: «a lista deu 0 falhas, o encaminhador está seguro». Corrija.
- Quer dizer só que os 6 itens verificados têm o valor esperado neste momento. Não cobre versões vulneráveis, credenciais, registos, hora, cópias de configuração, nem itens que a lista não inclui; e só verifica «all» no rp_filter.
- Porque se guardam os valores iniciais antes de corrigir?
- Para poder repor exactamente o estado anterior se a correcção causar problemas (plano de reversão) e para documentar a diferença antes/depois como evidência.
Verifique o que aprendeu
Questão 1
Porque se retira uma página de gestão web antiga sem cifra de um encaminhador?
- Porque ocupa largura de banda
- Porque expõe credenciais em claro e aumenta a superfície de ataque sem necessidade
- Porque o nmap a detecta
- Porque impede o encaminhamento
Ver resposta comentada
Resposta: Porque expõe credenciais em claro e aumenta a superfície de ataque sem necessidade
Cada serviço activo é uma porta de entrada possível. A gestão faz-se por protocolos cifrados, a partir da rede de gestão; o resto desliga-se.
Questão 2
O que significa um resultado «OK» numa lista de verificação automática?
- Que o equipamento está seguro
- Que aquele item tinha o valor esperado no momento da verificação
- Que não há vulnerabilidades CVE
- Que a auditoria terminou
Ver resposta comentada
Resposta: Que aquele item tinha o valor esperado no momento da verificação
Uma lista cobre só os itens que contém, no momento em que corre. Complementa-se com inventário de versões, avisos do fabricante e revisão humana.
Em leitura fácil
- Os equipamentos de rede também precisam de protecção.
- Desligue os serviços que não são usados.
- A gestão faz-se só a partir de computadores autorizados.
- Uma lista automática verifica cada ponto.
- Depois de corrigir, verifique outra vez.
- Actualize os equipamentos quando o fabricante avisar.
Fontes
- NIST SP 800-40 Rev. 4 — Enterprise Patch Management Planning (https://csrc.nist.gov/pubs/sp/800/40/r4/final)
- NIST SP 800-41 Rev. 1 — Guidelines on Firewalls and Firewall Policy (https://csrc.nist.gov/pubs/sp/800/41/r1/final)
- NIST SP 800-128 — Guide for Security-Focused Configuration Management of Information Systems (https://csrc.nist.gov/pubs/sp/800/128/upd1/final)
- FIRST — Common Vulnerability Scoring System (CVSS) v4.0 Specification (https://www.first.org/cvss/v4-0/specification-document)
- Programa CVE — Common Vulnerabilities and Exposures (https://www.cve.org/)
- Projecto nftables — wiki oficial (https://wiki.nftables.org/)
- Linux iproute2 — páginas de manual ip(8), ip-netns(8), bridge(8), tc(8) (https://man7.org/linux/man-pages/man8/ip.8.html)
- Nmap Reference Guide (https://nmap.org/book/man.html)
