Redes na Pratica
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:
- Packet filter: inspeciona headers (IP, porta, protocolo) de cada pacote. Simples mas sem contexto.
- Stateful inspection: rastreia o estado das conexoes TCP. Permite respostas a conexoes iniciadas internamente.
- Application-layer (WAF): inspeciona o payload (conteudo HTTP, SQL, etc.). Mais lento mas detecta ataques na camada de aplicacao.
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
- Firewalls filtram trafego por regras (packet filter, stateful, WAF)
- VPNs criam tuneis criptografados sobre redes publicas
- Cloud networking abstrai conceitos tradicionais (VPC, security groups, load balancers)
- Conexoes Neon Postgres usam DNS, TCP, TLS e PostgreSQL wire protocol
- Connection pooling (PgBouncer) reutiliza conexoes TCP existentes
Exercicio pratico
Faca uma auditoria de seguranca das conexoes de rede do harness.os.
- Liste todas as conexoes de rede: MCP (local e remoto), Neon DB, Fly.io
- Para cada conexao: qual protocolo? Usa TLS? Qual porta?
- Identifique vulnerabilidades: endpoints sem autenticacao? conexoes sem TLS?
- 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?