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

02 - Segurança

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

A segurança na camada de aplicação começa com a gestão das portas. Toda porta aberta é um ponto onde o mundo exterior pode interagir com o seu código.

1. Port Scanning: O Primeiro Passo de um Ataque

Um atacante usa ferramentas de Port Scanning (como o Nmap) para enviar pacotes de sondagem para um IP e descobrir quais portas estão abertas.

  • Porta Aberta: Significa que há um processo escutando e aceitando conexões.
  • Porta Fechada: Significa que o computador está ativo, mas não há serviço naquela porta.
  • Porta Filtrada: Significa que um Firewall ou IDS está bloqueando o tráfego, impedindo o Nmap de saber o estado da porta.

O objetivo do atacante é encontrar um serviço desatualizado ou vulnerável rodando em uma porta conhecida (Vulnerability Research).

Tipos de Scan do Nmap

Tipo Flag TCP Vantagem
-sS (SYN scan) SYN Padrão, rápido, furtivo
-sT (TCP connect) SYN+ACK via SO Lento, mas funciona sem root
-sU (UDP scan) UDP Deteciona serviços UDP (DNS, SNMP)
-sA (ACK scan) ACK Mapeia regras de firewall
-sF/-sX/-sN FIN/Xmas/Null Bypass de firewalls stateless antigos
-sV - Detecta versão do serviço
-O - Detecta sistema operacional

Exemplo Prático de Scan

# Scan rápido das 1000 portas mais comuns
nmap 192.168.1.10

# Scan completo (65535 portas) com detecção de serviço
nmap -p- -sV 192.168.1.10

# Scan furtivo via SYN (requer root)
sudo nmap -sS 192.168.1.10

2. Hardening e Proteção de Portas

Para proteger a identificação de processos, aplicamos técnicas de Hardening:

  1. Princípio do Menor Privilégio: Desabilite todos os serviços e feche todas as portas que não são essenciais para o negócio.
  2. Port Knocking: Uma técnica de segurança onde todas as portas ficam fechadas por padrão. Para abrir uma porta (ex: 22/SSH), o usuário deve enviar uma sequência específica de pacotes ("batidas") em outras portas primeiro.
  3. Firewall de Host (iptables/ufw/firewalld): Use regras de entrada (Inbound Rules) para filtrar quais IPs podem se conectar em portas sensíveis (ex: Permitir SSH apenas do IP da VPN da empresa).
  4. Mudança de Portas Padrão: Embora seja "Segurança por Obscuridade", mudar a porta do SSH (de 22 para 2222) ou RDP (de 3389 para uma aleatória) pode reduzir drasticamente o ruído de bots automáticos que tentam ataques de força bruta.

Exemplo de Configuração com UFW

# Bloqueia tudo por padrão
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Permite SSH apenas da rede da empresa
sudo ufw allow from 10.0.0.0/8 to any port 22 proto tcp

# Permite HTTP/HTTPS públicos
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Habilita firewall
sudo ufw enable

Exemplo de Port Knocking (knockd)

Configuração em /etc/knockd.conf:

[openSSH]
sequence    = 7000,8000,9000
seq_timeout = 15
command     = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

[closeSSH]
sequence    = 9000,8000,7000
seq_timeout = 15
command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

Cliente faz: knock servidor 7000 8000 9000 para abrir a porta.

3. Segurança no S.O. (Privilégios)

Em sistemas Linux, apenas o usuário root pode abrir portas abaixo de 1024.
- Isso é uma medida de segurança histórica para impedir que um usuário comum crie um servidor simulado (Fake Server) em uma porta bem-conhecida (como a 80) para capturar senhas ou enganar outros usuários.
- Boa Prática: Sempre que possível, configure serviços para rodar com usuários de sistema sem privilégios (ex: o usuário www-data para o servidor Web).

Portas Privilegiadas vs Efêmeras

Faixa Faixa Uso Permissão
Well-known 0-1023 Serviços padrão (HTTP, SSH, DNS, SMTP) Apenas root
Registradas 1024-49151 Aplicativos cadastrados na IANA Qualquer usuário
Dinâmicas/Efêmeras 49152-65535 Conexões de saída, sockets temporários Qualquer usuário

A faixa efêmera já foi 1024-4999 em sistemas antigos (Linux < 2.4). Em sistemas modernos, é 32768-60999 (configurável via /proc/sys/net/ipv4/ip_local_port_range).

# Verificar faixa efêmera atual
cat /proc/sys/net/ipv4/ip_local_port_range
# 32768   60999

# Aumentar faixa (útil para servidores de alta carga)
echo "10000 65535" | sudo tee /proc/sys/net/ipv4/ip_local_port_range

Bypass: CAP_NET_BIND_SERVICE

Em sistemas modernos com capabilities, é possível permitir que um binário específico faça bind em portas privilegiadas sem dar root completo ao processo:

# Permite que Nginx faça bind na 80 sem root
sudo setcap 'cap_net_bind_service=+ep' /usr/sbin/nginx

4. O Ataque de Injeção de Protocolo

A vulnerabilidade ocorre quando um serviço em uma porta aceita comandos de outro protocolo. A segregação clara de portas e a validação rigorosa do cabeçalho na camada de transporte ajudam a mitigar esses riscos.

Port Hijacking

Um atacante que consiga prever qual porta efêmera o SO vai atribuir a uma nova conexão pode tentar hijack — criar um socket falso antes do processo legítimo. Defesas:

  • Randomização de portas efêmeras: SO modernos aleatorizam a seleção (Linux via net.ipv4.ip_local_port_range + randomização).
  • SO_REUSEADDR com cuidado: Evitar race conditions em binds de portas.
  • PID checking: Serviços que dependem de socket inheritance podem validar o PID do cliente.

Ataques Clássicos

  • DNS Spoofing via UDP 53: Atacante envia resposta UDP forjada antes do servidor legítimo.
  • HTTP Smuggling em porta 80: Explora diferenças de parsing HTTP entre proxies front-end e back-end.
  • FTP Bounce Attack em porta 21: Usa servidor FTP como relay para port scan interno (RFC 2577).

5. Web Application Firewall (WAF)

O WAF é um firewall específico para a camada de aplicação (HTTP/HTTPS), analisando o conteúdo das requisições, não apenas IPs e portas:

Recurso Função
Filtro SQL Injection Bloqueia payloads como ' OR 1=1--
Filtro XSS Bloqueia <script>...</script>
Rate limiting Limita requisições por IP
Geo-blocking Bloqueia países não autorizados
Bot detection Identifica user-agents suspeitos
Virtual patching Aplica regra de bloqueio para CVE conhecido antes do patch oficial

WAFs Comuns

  • ModSecurity: Open-source, integrado com Apache/Nginx, com o OWASP Core Rule Set (CRS).
  • Cloudflare WAF: SaaS, baseado em nuvem, com ML para detecção.
  • AWS WAF: Integrado com CloudFront e ALB.
  • Imperva / F5 ASM: Soluções enterprise on-premise.

Exemplo de Regra ModSecurity (OWASP CRS)

# Bloqueia SQL Injection
SecRule ARGS "(?i:union\s+select)" \
  "id:1001,phase:2,deny,status:403,log,msg:'SQL Injection attempt'"

6. IDS/IPS - Detecção de Intrusão

Complementando o WAF, sistemas IDS/IPS monitoram tráfego para detectar padrões de ataque:

  • Snort: Open-source, analisa pacotes por regras.
  • Suricata: Evolução multithread do Snort.
  • Zeek (Bro): Foco em análise forense e logs estruturados.
  • Suricata + ELK: Stack comum de SIEM para monitorar portas e tráfego.

7. Resumo Técnico

Mecanismo Camada Função
Port Scanning (Nmap) Ataque Descobrir serviços
Firewall de Host (iptables/ufw) Rede/Host Filtrar portas
Port Knocking Host Esconder serviços
Capabilities (CAP_NET_BIND_SERVICE) SO Permitir bind sem root
WAF (ModSecurity, Cloudflare) Aplicação Filtrar payload HTTP
IDS/IPS (Snort, Suricata) Rede/Host Detectar ataques

8. Conclusão

A segurança de portas não é apenas "fechar o que não precisa". É um ecossistema que combina firewall de host, princípio do menor privilégio, WAF na borda da aplicação, IDS/IPS para detecção e boas práticas de configuração do SO. Cada porta aberta é uma superfície de ataque potencial, e o trabalho do engenheiro é minimizar essa superfície enquanto mantém a funcionalidade do negócio. A redundância de camadas (firewall + WAF + IDS) é o que chamamos de "defesa em profundidade".