- Início
- Servidor de origem
- Integrar
Integrar
Integração com Origin Pool do F5 XC
Seção intitulada “Integração com Origin Pool do F5 XC”Este servidor de origem foi projetado para ser utilizado como membro de um origin pool atrás de um balanceador de carga HTTP do F5 Distributed Cloud. A plataforma F5 XC fornece WAF, Bot Defense, API Security e Client-Side Defense na frente desta origem.
Arquitetura
Seção intitulada “Arquitetura”End User -> F5 XC HTTP LB (WAF/Bot/API/CSD) -> Origin Server VM (nginx -> Docker apps)Configuração do Origin Pool
Seção intitulada “Configuração do Origin Pool”Crie um origin pool do F5 XC apontando para o IP público desta VM:
| Configuração | Valor |
|---|---|
| Tipo de Servidor de Origem | IP Público do Servidor de Origem |
| Endereço IP | <terraform output public_ip> |
| Porta | 80 |
| Health Check | HTTP, caminho /health |
Configuração do Balanceador de Carga HTTP
Seção intitulada “Configuração do Balanceador de Carga HTTP”Crie um balanceador de carga HTTP com o origin pool:
| Configuração | Valor |
|---|---|
| Domínios | Seu domínio de demonstração (ex.: demo.example.com) |
| Origin Pool | O pool criado acima |
| WAF | Anexe sua política de WAF |
| Bot Defense | Habilite conforme necessário |
| API Discovery | Habilite para os endpoints do VAmPI |
Roteamento Baseado em Caminho
Seção intitulada “Roteamento Baseado em Caminho”Cada aplicação está acessível por meio de seu prefixo de caminho através do balanceador de carga:
| URL do F5 XC LB | Caminho de Origem | Aplicação |
|---|---|---|
https://demo.example.com/juice-shop/ | /juice-shop/ | Juice Shop (4 instâncias, cookie sticky) |
https://demo.example.com/dvwa/ | /dvwa/ | DVWA (4 instâncias + MariaDB, cookie sticky) |
https://demo.example.com/vampi/ | /vampi/ | VAmPI (4 instâncias, ip_hash sticky) |
https://demo.example.com/httpbin/ | /httpbin/ | httpbin (4 instâncias, round-robin) |
https://demo.example.com/whoami/ | /whoami/ | Diagnóstico de requisições (4 instâncias) |
https://demo.example.com/csd-demo/ | /csd-demo/ | CSD Demo (4 instâncias, ip_hash sticky) |
https://demo.example.com/dvga/ | /dvga/ | DVGA (4 instâncias, ip_hash sticky) |
https://demo.example.com/restaurant/ | /restaurant/ | RESTaurant (4 instâncias, round-robin) |
https://demo.example.com/health | /health | Health check (nginx direto) |
Verificar a Injeção de Cabeçalhos pelo F5 XC
Seção intitulada “Verificar a Injeção de Cabeçalhos pelo F5 XC”Utilize o endpoint whoami para verificar quais cabeçalhos o F5 XC injeta nas requisições que chegam à origem:
LB_DOMAIN="demo.example.com"
curl -sk "https://${LB_DOMAIN}/whoami/"Procure pelos seguintes cabeçalhos injetados pelo F5 XC na resposta:
| Cabeçalho | Significado |
|---|---|
X-Forwarded-For | Cadeia de IP do cliente através do F5 XC |
True-Client-IP | IP original do cliente |
X-Forwarded-Proto | https se o TLS for encerrado no F5 XC |
X-Volterra-Bot-Type | Classificação de bot (quando o Bot Defense está habilitado) |
X-Request-ID | ID de rastreamento de requisição do F5 XC |
Teste de WAF Através do F5 XC
Seção intitulada “Teste de WAF Através do F5 XC”Com uma política de WAF anexada ao balanceador de carga HTTP, teste payloads de ataque:
LB_DOMAIN="demo.example.com"
# SQL Injection (deve ser bloqueado pelo WAF)curl -sk "https://${LB_DOMAIN}/dvwa/vulnerabilities/sqli/?id=%27+OR+1%3D1--&Submit=Submit"
# XSS (deve ser bloqueado pelo WAF)curl -sk "https://${LB_DOMAIN}/juice-shop/rest/products/search?q=<script>alert(1)</script>"
# Command Injection (deve ser bloqueado pelo WAF)curl -sk "https://${LB_DOMAIN}/dvwa/vulnerabilities/exec/" \ -d "ip=127.0.0.1;cat+/etc/passwd&Submit=Submit"
# Requisição normal (deve passar)curl -sk "https://${LB_DOMAIN}/httpbin/get" | jq .Teste de Segurança de API
Seção intitulada “Teste de Segurança de API”Habilite a API Discovery no balanceador de carga HTTP para mapear os endpoints de API do VAmPI:
# Estas requisições constroem o inventário de API no F5 XCcurl -sk "https://${LB_DOMAIN}/vampi/users/v1"curl -sk -X POST "https://${LB_DOMAIN}/vampi/users/v1/register" \ -H "Content-Type: application/json" \ -d '{"username":"apitest","password":"test123","email":"api@test.com"}'curl -sk -X POST "https://${LB_DOMAIN}/vampi/users/v1/login" \ -H "Content-Type: application/json" \ -d '{"username":"apitest","password":"test123"}'Integração do crAPI (Porta 8888)
Seção intitulada “Integração do crAPI (Porta 8888)”O crAPI é executado em uma porta dedicada (8888) porque é uma aplicação de página única (SPA) que codifica seus caminhos de API de forma fixa e não pode ser servida atrás de um prefixo de caminho. Para integrar o crAPI com o F5 XC:
| Configuração | Valor |
|---|---|
| Tipo de Servidor de Origem | IP Público do Servidor de Origem |
| Endereço IP | <terraform output public_ip> |
| Porta | 8888 |
| Health Check | HTTP, caminho / |
Crie um origin pool separado para o crAPI na porta 8888, ou adicione um segundo membro ao seu pool existente com a porta 8888 e utilize regras de roteamento para direcionar o tráfego:
# Testar crAPI através do F5 XC (se configurado)curl -sk "https://${LB_DOMAIN}:8888/"
# Ou se estiver usando regras de roteamento no mesmo domínio do LB:# Configure uma regra de rota no F5 XC que corresponda ao cabeçalho Host ou prefixo de caminho# para encaminhar ao origin pool do crAPI (porta 8888)Considerações sobre Sessões Persistentes (Sticky Sessions)
Seção intitulada “Considerações sobre Sessões Persistentes (Sticky Sessions)”O servidor de origem utiliza sessões persistentes do nginx internamente para rotear aplicações com estado para contêineres de backend consistentes. Ao configurar o balanceador de carga HTTP do F5 XC, esteja ciente de:
| Aplicação | Método de Persistência | Motivo |
|---|---|---|
| Juice Shop | hash $cookie_token | Estado de sessão Node.js |
| DVWA | hash $cookie_PHPSESSID | Estado de sessão PHP |
| VAmPI | ip_hash | Banco de dados SQLite por instância |
| CSD Demo | ip_hash | Log de exfiltração em memória por instância |
| DVGA | ip_hash | Banco de dados SQLite por instância |
| RESTaurant | Round-robin | Backend PostgreSQL compartilhado |
| crAPI | — (porta única 8888) | 7 microsserviços, PostgreSQL + MongoDB |
| httpbin | Round-robin | Sem estado |
| whoami | Round-robin | Sem estado |
O F5 XC não precisa replicar essas sessões persistentes — o nginx na VM de origem gerencia o roteamento para o backend. O F5 XC deve tratar a origem como um único endpoint (o IP público da VM na porta 80).
Arquitetura Multicomponente
Seção intitulada “Arquitetura Multicomponente”Quando combinado com o Simulador de CDN, a arquitetura completa do laboratório é:
End User -> CDN Simulator (nginx cache) -> F5 XC HTTP LB -> Origin Server (this component)O Simulador de CDN utiliza o VIP do balanceador de carga HTTP do F5 XC como sua origem, e o balanceador de carga F5 XC utiliza este servidor de origem como seu backend. Isso cria uma arquitetura multicamadas realista para testes abrangentes.