Duração: 75 minutos (explicação 20, prática guiada 45, verificação 10). Resultados dos TdR trabalhados: Serviços de rede: DHCP, DNS, VPN, NAT, VLAN e autenticação; Protecção de dados e identidades: MFA e cifra.
Objectivos
- Explicar porque o acesso remoto deve passar por um canal cifrado e autenticado.
- Configurar um túnel WireGuard de prática entre um posto remoto e a rede de gestão.
- Endurecer o SSH com chaves e restrições no servidor.
VPN e SSH
Uma VPN cria um canal cifrado entre dois pontos através de uma rede não confiável. O WireGuard usa pares de chaves públicas: cada lado conhece a chave pública do outro e a lista de endereços que pode usar dentro do túnel (AllowedIPs). O SSH (RFC 4253) cifra uma sessão de administração num único servidor.
Regras práticas: autenticação por chave em vez de palavra-passe; desactivar entrada directa como root; limitar quem pode entrar (AllowUsers); expor a gestão só dentro da VPN; registar ligações. As chaves privadas nunca saem do equipamento onde foram geradas.
Caso fictício
O técnico de piquete da DPE (fictícia) precisa de administrar o srv a partir de casa. A direcção só aceita se a gestão não ficar exposta na «Internet».
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).
- Posto remoto «casa» ligado ao isp (203.0.113.50/24). Túnel WireGuard 10.10.98.0/24: r1 = 10.10.98.1, casa = 10.10.98.2, porta UDP 51820 no r1.
Passos
Crie o posto remoto.
sudo ip netns add casa sudo ip link add casa-isp type veth peer name isp-casa sudo ip link set casa-isp netns casa; sudo ip link set isp-casa netns isp sudo ip -n casa addr add 203.0.113.50/24 dev casa-isp; sudo ip -n casa link set casa-isp up; sudo ip -n casa link set lo up sudo ip -n isp link add br-isp type bridge; sudo ip -n isp link set isp-r1 master br-isp; sudo ip -n isp link set isp-casa master br-isp sudo ip -n isp addr flush dev isp-r1; sudo ip -n isp addr add 203.0.113.1/24 dev br-isp; sudo ip -n isp link set br-isp up; sudo ip -n isp link set isp-casa upGere as chaves em cada lado (ficam em /tmp da prática; não as copie para fora).
umask 077; wg genkey | tee /tmp/r1.key | wg pubkey > /tmp/r1.pub umask 077; wg genkey | tee /tmp/casa.key | wg pubkey > /tmp/casa.pubConfigure o túnel no r1 e na casa.
sudo ip -n r1 link add wg0 type wireguard sudo ip netns exec r1 wg set wg0 listen-port 51820 private-key /tmp/r1.key peer $(cat /tmp/casa.pub) allowed-ips 10.10.98.2/32 sudo ip -n r1 addr add 10.10.98.1/24 dev wg0; sudo ip -n r1 link set wg0 up sudo ip -n casa link add wg0 type wireguard sudo ip netns exec casa wg set wg0 private-key /tmp/casa.key peer $(cat /tmp/r1.pub) endpoint 203.0.113.2:51820 allowed-ips 10.10.98.0/24,10.10.20.0/24 persistent-keepalive 25 sudo ip -n casa addr add 10.10.98.2/24 dev wg0; sudo ip -n casa link set wg0 up sudo ip -n casa route add 10.10.20.0/24 dev wg0Verifique o aperto de mão e o acesso ao srv só pelo túnel.
sudo ip netns exec casa ping -c 1 10.10.20.53 sudo ip netns exec r1 wg show wg0 latest-handshakesSaída de exemplo (didáctica):
1 packets transmitted, 1 received (chave pública da casa) 1759012345Endurecimento SSH (ficheiro de exemplo para o srv; ler e discutir, aplicar só se o srv tiver OpenSSH de prática).
cat > /tmp/sshd-dpe.conf <<'EOF' PermitRootLogin no PasswordAuthentication no KbdInteractiveAuthentication no PubkeyAuthentication yes AllowUsers tecnico ListenAddress 10.10.20.53 LogLevel VERBOSE EOF sshd -t -f /tmp/sshd-dpe.conf && echo sintaxe-okSaída de exemplo (didáctica):
sintaxe-ok
Critérios de sucesso
- wg show mostra aperto de mão recente.
- O ping da casa ao srv passa pelo túnel.
- O formando justifica cada linha do sshd-dpe.conf.
Como desfazer (reversão)
- sudo ip -n r1 link del wg0; sudo ip netns del casa
- sudo ip -n isp link set isp-r1 nomaster; sudo ip -n isp link del br-isp; sudo ip -n isp addr add 203.0.113.1/24 dev isp-r1
- rm -f /tmp/r1.key /tmp/r1.pub /tmp/casa.key /tmp/casa.pub /tmp/sshd-dpe.conf
Alternativa em papel: tarefas e respostas esperadas
- Explique a função de AllowedIPs em cada lado do túnel desta prática.
- No r1, só aceita do par pacotes com origem 10.10.98.2; na casa, envia pelo túnel o que se destina a 10.10.98.0/24 e 10.10.20.0/24 e aceita respostas dessas redes.
- Porque «PasswordAuthentication no» reduz o risco?
- Impede ataques de adivinhação de palavras-passe; só entra quem tem a chave privada correspondente a uma chave autorizada.
Verifique o que aprendeu
Questão 1
Onde deve ficar a chave privada do WireGuard?
- No correio electrónico da equipa
- Apenas no equipamento que a gerou, com permissões restritas
- No site da instituição
- Num papel colado ao monitor
Ver resposta comentada
Resposta: Apenas no equipamento que a gerou, com permissões restritas
A chave pública pode ser partilhada; a privada identifica o equipamento e nunca sai dele.
Questão 2
Qual é a melhor forma de expor a gestão dos equipamentos a um técnico remoto?
- Abrir SSH para toda a Internet
- Só através de VPN, com autenticação por chave
- Partilhar a palavra-passe por mensagem
- Desligar a firewall durante o piquete
Ver resposta comentada
Resposta: Só através de VPN, com autenticação por chave
A VPN reduz a superfície exposta; a chave substitui palavras-passe adivinháveis.
Em leitura fácil
- Acesso de fora passa por um túnel cifrado.
- Use chaves, não palavras-passe.
- A chave secreta nunca sai do computador.
Fontes
- WireGuard — documentação e wg(8) (https://www.wireguard.com/quickstart/)
- OpenSSH — manuais sshd_config(5) e ssh-keygen(1) (https://www.openssh.com/manual.html)
- IETF RFC 4253 — SSH Transport Layer Protocol (https://www.rfc-editor.org/rfc/rfc4253)
- NIST SP 800-77 Rev. 1 — Guide to IPsec VPNs (https://csrc.nist.gov/pubs/sp/800/77/r1/final)
- 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)
