TP 5 – Laboratório: SSH, HTTP e Firewall
Elementos de correção para este TP estão disponíveis no repositório de exercícios: 👉 module-17 – Correções
Este TP utiliza até 3 placas de rede por VM. Para uma explicação detalhada dos tipos de placas (NAT, Internal Network, Host-Only, Bridged) e seu equivalente VMware, consulte: 👉 Módulo 15 - Bônus: Placas de rede VirtualBox vs VMware
Trabalho em dupla
| Nome | |
|---|---|
| Estudante 1 | ........................ |
| Estudante 2 | ........................ |
Objetivos
Este laboratório tem como objetivo aplicar os conhecimentos adquiridos sobre os protocolos e serviços estudados até agora (SSH, HTTP, Firewall) em um ambiente Linux.
Ambiente necessário
Hypervisor
- VirtualBox (ou VMware Workstation / VMware Player)
Máquinas virtuais a serem criadas
| Máquina | Sistema operacional | RAM | Disco | CPU | Interfaces de rede |
|---|---|---|---|---|---|
| srvGateway | Ubuntu Server 24.04 LTS (ou 22.04 LTS) | 1 GB mínimo | 20 GB | 1 vCPU | 3 interfaces: NAT + Rede interna lan + Rede interna clientnet |
| srvSSH | Ubuntu Server 24.04 LTS (ou 22.04 LTS) | 1 GB mínimo | 20 GB | 1 vCPU | 1 interface: Rede interna lan |
| srvWEB | Ubuntu Server 24.04 LTS (ou 22.04 LTS) | 1 GB mínimo | 20 GB | 1 vCPU | 1 interface: Rede interna lan |
| Client | Ubuntu Server 24.04 LTS (ou 22.04 LTS) | 1 GB mínimo | 20 GB | 1 vCPU | 1 interface: Rede interna clientnet |
- srvGateway precisa de 3 placas de rede:
- Adaptador 1: NAT (acesso à Internet)
- Adaptador 2: Internal Network →
lan(rede LAN10.11.12.0/24) - Adaptador 3: Internal Network →
clientnet(rede Cliente20.21.22.0/30)
- srvSSH e srvWEB: Internal Network →
lan - Client: Internal Network →
clientnet
Softwares necessários nas VMs
| Máquina | Softwares a instalar |
|---|---|
| srvGateway | iptables, net-tools |
| srvSSH | openssh-server |
| srvWEB | apache2, openssl, certbot (opcional) |
| Client | openssh-client, curl, wget |
O roteamento IP (ip_forward) deve estar ativado no srvGateway para que o tráfego circule entre as redes.
As outras máquinas (srvSSH, srvWEB, Client) devem ter o srvGateway como gateway padrão.
Topologia de rede
Descrição das máquinas
| Máquina | Papel | Interface(s) |
|---|---|---|
| srvGateway | Roteamento e gateway para Internet | Interface 1: NAT (Internet) |
Interface 2: 10.11.12.1/24 (LAN) | ||
Interface 3: 20.21.22.1/30 (Cliente) | ||
| srvWEB | Servidor web Apache | 10.11.12.150/24 |
| srvSSH | Servidor SSH | 10.11.12.100/24 |
| Client | Máquina cliente | 20.21.22.2/30 |
Conectividade esperada
srvGatewaytem acesso à Internet- O cliente,
srvWEBesrvSSHpodem acessar a Internet através dosrvGateway - O tráfego SSH, HTTP e HTTPS é autorizado no
srvGateway
O não cumprimento da topologia ou o fornecimento de capturas de tela que não correspondam às instruções resultará em penalização de pontos.
Parte 1 – Configuração de roteamento e compartilhamento de conexão (40 pontos)
1.1 – Configurar endereços IP estáticos
Configure os endereços IP estáticos em cada uma das quatro máquinas conforme a topologia.
Faça uma captura das interfaces para cada uma das máquinas.
1.2 – Ativar roteamento permanente no srvGateway
Ative o roteamento (IP forwarding) de forma permanente no srvGateway.
Insira a captura de tela da ativação do roteamento permanente.
1.3 – Configurar o compartilhamento de conexão com a Internet no srvGateway
Adicione regras iptables para:
a) Autorizar o tráfego de saída da LAN, roteado pelo srvGateway
Captura obrigatória.
b) Autorizar apenas tráfego SSH, HTTP, HTTPS e ICMP para as demais máquinas
Captura obrigatória.
c) Ativar o MASQUERADE
Captura obrigatória.
d) Testar a conexão com a Internet
Teste a conexão com a Internet a partir do client, srvSSH e srvWEB.
Captura obrigatória.
Parte 2 – Configuração dos serviços (40 pontos)
2.1 – Configurar um servidor web Apache no srvWEB
a) Criar dois hosts virtuais
Crie dois hosts virtuais no srvWEB:
| Host virtual | Nome de domínio |
|---|---|
| Site 1 | www.test.local |
| Site 2 | www.labo.local |
Captura obrigatória.
b) Páginas HTML com os nomes dos estudantes
Insira páginas HTML com os nomes dos estudantes da equipe.
Captura obrigatória.
c) Arquivos de configuração e páginas web
Insira as capturas de tela dos arquivos de configuração e das páginas web exibidas.
2.2 – Configurar acesso seguro em HTTPS
a) Instalar certificados SSL
Instale certificados SSL para os dois hosts virtuais.
Hosts virtuais envolvidos:
- www.test.local → certificado autoassinado
- www.labo.local → certificado autoassinado
Captura obrigatória: certificados e páginas HTTPS.
2.3 – Restringir o acesso ao srvWEB a partir do client
a) Bloquear o acesso do endereço 20.21.22.2
Modifique a configuração para bloquear o endereço 20.21.22.2.
Captura obrigatória.
b) Testar com curl
Teste com curl e insira a captura de tela da recusa de acesso.
Parte 3 – Configuração de acesso remoto (20 pontos)
3.1 – Configurar um servidor SSH no srvSSH
a) Criar o usuário bob
Crie um usuário bob com /home/bob e /bin/bash.
Capturas obrigatórias:
- Saída do
ss -tan - Saída do
tail /etc/passwd
3.2 – Configurar um redirecionamento SSH local (túnel)
Utilize um túnel SSH para que o client possa acessar o www.labo.local via srvSSH.
Princípio do túnel SSH:
Capturas obrigatórias:
- Comando do túnel SSH
- Acesso bem-sucedido ao
www.labo.locala partir do client via túnel
Recapitulação da topologia e dos fluxos
Grade de avaliação
| Parte | Critérios | Pontos |
|---|---|---|
| Parte 1 | Configuração de roteamento e compartilhamento de conexão | 40 |
| Configuração dos endereços IP estáticos + capturas | 10 | |
| Ativação do roteamento permanente | 5 | |
| Regras iptables (SSH, HTTP, HTTPS, ICMP) | 10 | |
| MASQUERADE | 5 | |
| Testes de conexão com a Internet (client, srvSSH, srvWEB) | 10 | |
| Parte 2 | Configuração dos serviços | 40 |
| Hosts virtuais Apache (www.test.local, www.labo.local) | 10 | |
| Páginas HTML com nomes dos estudantes | 5 | |
| Arquivos de configuração + páginas exibidas | 5 | |
| Certificados SSL e HTTPS | 10 | |
| Restrição de acesso (bloqueio 20.21.22.2) | 5 | |
| Teste curl + captura da recusa de acesso | 5 | |
| Parte 3 | Configuração de acesso remoto | 20 |
| Usuário bob + capturas (ss -tan, /etc/passwd) | 10 | |
| Túnel SSH + acesso ao www.labo.local | 10 | |
| Total | 100 |
TP criado em: Fevereiro de 2025
MÓDULO BÔNUS – Entendendo o handshake TLS (explicação simplificada)
O objetivo aqui é explicar, com palavras bem simples, o que acontece quando você digita um endereço em HTTPS.
Uma versão “módulo bônus” (fora deste TP) está disponível aqui: Módulo 15 – Bônus: Handshake TLS (explicação simplificada).
1) Antes do TLS: o “handshake” TCP (SYN / SYN‑ACK / ACK)
Antes de falar de criptografia (TLS), é preciso primeiro estabelecer a conexão de rede. Para HTTPS, geralmente é TCP na porta 443.
O TCP usa um aperto de mão em 3 mensagens:
- SYN: “Alô, quero falar com você, está aí?”
- SYN‑ACK: “Sim, estou aqui, recebi seu SYN. Você me ouve?”
- ACK: “Sim, te ouço, recebi sua mensagem. Podemos começar.”
ACK = Confirmação de recebimento (só quer dizer: “recebi”).
👉 Importante: esse handshake TCP não criptografa nada. Ele serve apenas para dizer: “a conexão está pronta”.
2) Depois: o handshake TLS (para proteger a conversa)
Uma vez estabelecido o TCP, inicia-se o TLS (que transforma HTTP em HTTPS).
Pense no TLS como: combinar um cadeado, verificar a identidade do servidor e depois falar em uma língua secreta.
Aqui está a ideia geral (sem entrar nos detalhes criptográficos):
- ClientHello (cliente → servidor):
- “Olá, eu sei fazer TLS, estas são as versões e algoritmos que eu suporto.”
- ServerHello (servidor → cliente):
- “OK, vamos usar tal versão TLS e tais algoritmos.”
- O servidor também envia seu certificado (sua “identidade”).
- Verificação do certificado (lado cliente):
- O cliente verifica se o certificado é válido, corresponde ao nome do site e é assinado por uma autoridade conhecida (ou aceito manualmente se autoassinado).
- Criação de um segredo compartilhado:
- Cliente e servidor estabelecem chaves para criptografar (geralmente via troca de chaves tipo Diffie‑Hellman).
- A partir daí, podem gerar chaves de sessão.
- Finished (dos dois lados):
- Eles trocam uma última mensagem para confirmar: “temos as mesmas chaves, estamos prontos”.
✅ Depois disso, tudo é criptografado: URLs completas, conteúdos, senhas, cookies, etc.
3) Pequeno resumo “em uma frase”
- TCP (SYN/SYN‑ACK/ACK): abrimos a porta (conexão)
- TLS (ClientHello… Finished): colocamos um cadeado e verificamos a identidade (segurança)
- HTTP/HTTPS: é o que dizemos depois que a porta está aberta e o cadeado colocado
- Em HTTP, você verá o conteúdo (geralmente legível).
- Em HTTPS, você verá principalmente o handshake TLS e depois pacotes criptografados (conteúdo ilegível).