College Online
0%

Redes na Pratica

Modulo 4 · Aula 3 ~25 min de leitura Nivel: Intermediario

Video da aula estara disponivel em breve

Firewalls

Um firewall e um dispositivo (hardware ou software) que filtra trafego de rede baseado em regras. Existem varios tipos:

VPN e tunneling

Uma VPN (Virtual Private Network) cria um "tunel" criptografado sobre a Internet publica, permitindo comunicacao segura entre redes privadas.

Diagrama
Sem VPN:
  Laptop --[HTTP/TCP/IP]--> Internet --> Servidor
  (dados visiveis para qualquer ponto intermediario)

Com VPN (tunneling):
  Laptop --[dados|TCP|IP|ENCRIPTADO|IP_externo]--> VPN Server --> Servidor
  |                                              |
  +---- Tunel VPN (IPsec/WireGuard) ------+
  (dados invisiveis para intermediarios)

Protocolos VPN:
  IPsec:     Padrao, complexo, suporte nativo em SO
  WireGuard: Moderno, simples, rapido (4000 linhas de codigo)
  OpenVPN:   Maduro, flexivel, baseado em SSL/TLS

Cloud networking

Em ambientes cloud (AWS, GCP, Fly.io), conceitos de rede tradicionais ganham novas abstrações:

Referencia
Conceito cloud            Equivalente de rede
──────────────────        ──────────────────────────
VPC                       Rede privada virtual (seu proprio /16)
Subnet                    Sub-rede dentro do VPC
Security Group            Firewall stateful por instancia
Load Balancer             Distribui trafego entre instancias
NAT Gateway               NAT para acesso a Internet de subnets privadas
Peering                   Conexao direta entre dois VPCs
Private Link              Acesso a servicos sem sair da rede privada

Conexoes Neon Postgres

Entender networking e essencial para configurar e debugar conexoes ao banco de dados:

Diagrama
Conexao Neon Postgres (o que realmente acontece):

App/Agent
    |
    |-- DNS resolve: ep-xxx.us-east-2.aws.neon.tech -> IP
    |-- TCP handshake (SYN/SYN-ACK/ACK)
    |-- TLS handshake (ClientHello, ServerHello, certificates)
    |-- PostgreSQL startup (authentication, database selection)
    |
    v
Neon Proxy (PgBouncer)
    |-- Connection pooling (reutiliza conexoes ao compute)
    |-- Wakes up compute if cold-started
    |
    v
Neon Compute (PostgreSQL)
    |-- Executa queries
    |-- Retorna resultados via TCP
    |
    v
Neon Storage (pageserver)

Connection string:
  postgresql://user:pass@ep-xxx.us-east-2.aws.neon.tech/dbname?sslmode=require

Cada parte mapeia para conceitos de rede:
  user:pass     -> Autenticacao (camada de aplicacao)
  ep-xxx...     -> DNS (camada de aplicacao)
  :5432         -> Porta TCP (camada de transporte)
  sslmode=require -> TLS (entre transporte e aplicacao)

No harness.os

Diagrama
Auditoria de seguranca de rede do harness.os:

1. MCP Server (Fly.io)
   [x] HTTPS obrigatorio (TLS 1.3)
   [x] Fly.io private networking (WireGuard interno)
   [ ] Rate limiting em endpoints publicos
   [ ] mTLS entre nodes do mesh

2. Neon Postgres
   [x] SSL required (sslmode=require)
   [x] Connection pooling (PgBouncer)
   [x] IP allowlist (Neon dashboard)
   [ ] Rotacao automatica de credenciais

3. Claude CLI -> MCP (local)
   [x] stdio (sem rede, mais seguro)
   [ ] Nenhuma exposicao de porta

4. Fly.io networking
   [x] Anycast IP (distribuicao global)
   [x] Auto-TLS (Let's Encrypt)
   [x] Private networking entre apps (WireGuard mesh)
   [ ] DDoS protection (built-in Fly.io)

Resumo

Exercicio pratico

Faca uma auditoria de seguranca das conexoes de rede do harness.os.

  1. Liste todas as conexoes de rede: MCP (local e remoto), Neon DB, Fly.io
  2. Para cada conexao: qual protocolo? Usa TLS? Qual porta?
  3. Identifique vulnerabilidades: endpoints sem autenticacao? conexoes sem TLS?
  4. Propponha melhorias: mTLS entre mesh nodes? IP allowlist no Neon?

Verifique seu entendimento

Qual a principal funcao do connection pooling (PgBouncer) em conexoes Neon Postgres?

  • Criptografar dados entre aplicacao e banco
  • Reutilizar conexoes TCP existentes, evitando o custo de novos handshakes
  • Fazer backup automatico do banco de dados
  • Comprimir queries SQL antes de enviar ao servidor