- Início
- Simulador CDN
- Integrar com o Servidor de Origem
Integrar com o Servidor de Origem
Esta página abrange dois estágios de integração:
- Integração direta — a borda CDN encaminha diretamente para o servidor de origem (teste de linha de base)
- Inserção do F5 XC — o balanceador de carga HTTP do F5 XC inserido entre o CDN e a origem (demonstração de segurança)
Comece com a integração direta para estabelecer a linha de base e, em seguida, insira o F5 XC quando estiver pronto.
Referência do Servidor de Origem
Seção intitulada “Referência do Servidor de Origem”O componente de laboratório origin-server fornece aplicações web vulneráveis para testes de segurança.
| Propriedade | Valor |
|---|---|
| Documentação | f5-sales-demo.github.io/origin-server |
| Repositório | github.com/f5-sales-demo/origin-server |
| Porta Padrão | 80 |
| Verificação de Integridade | GET /health |
Aplicações Disponíveis
Seção intitulada “Aplicações Disponíveis”Obtenha o catálogo de aplicações atual a partir do manifesto publicado do servidor de origem:
MANIFEST_URL=$(curl -sf https://api.github.com/repos/f5-sales-demo/origin-server/releases/latest \ | python3 -c "import sys,json; assets=json.load(sys.stdin).get('assets',[]); print(next((a['browser_download_url'] for a in assets if a['name']=='manifest.json'),''))")curl -sf "$MANIFEST_URL" | python3 -m json.toolSe ainda não existir nenhuma versão, utilize diretamente o código-fonte do repositório:
curl -sf https://raw.githubusercontent.com/f5-sales-demo/origin-server/main/manifest.json | python3 -m json.toolO manifesto lista todos os caminhos de aplicação, verificações de integridade, imagens de contêiner e mapeamentos de funcionalidades de demonstração.
Caminhos das Aplicações
Seção intitulada “Caminhos das Aplicações”| Caminho | Aplicação | Funcionalidades de Demonstração |
|---|---|---|
/ | Página inicial | — |
/health | Verificação de integridade | — |
/juice-shop/ | OWASP Juice Shop | WAF, Bot Defense, API Security |
/dvwa/ | DVWA | WAF, Bot Defense |
/vampi/ | VAmPI | API Security |
/httpbin/ | httpbin | Diagnósticos |
/whoami/ | whoami | Verificação de cabeçalhos |
/csd-demo/ | CSD Demo | Client-Side Defense |
Estágio 1: Integração Direta (Linha de Base)
Seção intitulada “Estágio 1: Integração Direta (Linha de Base)”┌──────────┐ ┌──────────────────────┐ ┌─────────────────────┐│ Cliente │────▶│ CDN Edge (NGINX) │────▶│ Servidor de Origem ││ │ │ 20.65.90.112 │ │ 20.12.78.159 │└──────────┘ │ 67+ cabeçalhos CDN │ │ Juice Shop, DVWA, │ │ Cache em disco │ │ VAmPI, httpbin, │ └──────────────────────┘ │ whoami, CSD Demo │ └─────────────────────┘Configurar a Origem
Seção intitulada “Configurar a Origem”Defina o IP do servidor de origem na configuração NGINX da borda CDN:
ssh azureuser@<CDN_EDGE_IP>sudo sed -i 's|proxy_pass .*;|proxy_pass http://<ORIGIN_IP>;|' /etc/nginx/conf.d/cdn-edge.confsudo rm -rf /var/cache/nginx/cdn/*sudo nginx -t && sudo systemctl reload nginxOu defina-o no momento da implantação com o Terraform via terraform.tfvars:
origin_server = "http://<ORIGIN_IP>"Verificar Todas as Aplicações
Seção intitulada “Verificar Todas as Aplicações”Teste cada aplicação de origem através do CDN:
CDN=<CDN_EDGE_IP>
# Verificação de integridade (local do CDN)curl -sf "http://$CDN/health" | python3 -m json.tool
# Página inicialcurl -sf -o /dev/null -w "/ : HTTP %{http_code}\n" "http://$CDN/"
# Juice Shopcurl -sf -o /dev/null -w "/juice-shop/ : HTTP %{http_code}\n" "http://$CDN/juice-shop/"
# DVWA (segue o redirecionamento para o login)curl -sf -o /dev/null -w "/dvwa/ : HTTP %{http_code}\n" -L "http://$CDN/dvwa/"
# API VAmPIcurl -sf "http://$CDN/vampi/users/v1" | python3 -m json.tool | head -5
# Cabeçalhos httpbin (exibe cabeçalhos CDN em JSON)curl -sf "http://$CDN/httpbin/headers" | python3 -m json.tool | head -10
# whoami (exibe TODOS os cabeçalhos que a origem recebe)curl -sf "http://$CDN/whoami/"
# CSD Democurl -sf -o /dev/null -w "/csd-demo/ : HTTP %{http_code}\n" "http://$CDN/csd-demo/"Todos os caminhos devem retornar HTTP 200 (o DVWA retorna 302 e depois 200 após o redirecionamento).
Verificar Cabeçalhos CDN na Origem
Seção intitulada “Verificar Cabeçalhos CDN na Origem”O endpoint /whoami/ exibe todos os cabeçalhos que a origem recebe. Quando acessado por meio do CDN, ele apresenta todos os 67+ cabeçalhos do fornecedor:
curl -sf "http://$CDN/whoami/"Verifique se os seguintes cabeçalhos principais estão presentes:
| Fornecedor | Cabeçalho | Valor Esperado |
|---|---|---|
| Padrão | X-Forwarded-For | <your_ip>, <cdn_edge_ip> |
| Akamai | True-Client-Ip | <your_ip> |
| Cloudflare | Cf-Connecting-Ip | <your_ip> |
| CloudFront | Cloudfront-Viewer-Country | US |
| Fastly | Fastly-Client-Ip | <your_ip> |
| Azure FD | X-Azure-Clientip | <your_ip> |
Correlacionar Logs
Seção intitulada “Correlacionar Logs”Compare os logs de acesso em ambos os servidores para verificar o fluxo de tráfego:
# Log da borda CDN — exibe o IP do seu cliente como origemssh azureuser@<CDN_EDGE_IP> "sudo tail -5 /var/log/nginx/access.log"
# Log da origem — exibe o IP da borda CDN como origemssh azureuser@<ORIGIN_IP> "sudo tail -5 /var/log/nginx/access.log"O log da origem deve exibir o IP da borda CDN como o cliente conectado, enquanto o IP real do cliente é transportado em X-Forwarded-For e nos cabeçalhos específicos do fornecedor.
Comportamento do Cache
Seção intitulada “Comportamento do Cache”# Primeira requisição — MISS (obtido da origem)curl -s -I "http://$CDN/whoami/" | grep X-Cache-Status
# Segunda requisição — HIT (servido do cache CDN)curl -s -I "http://$CDN/whoami/" | grep X-Cache-StatusEstágio 2: Inserção do F5 XC (Demonstração de Segurança)
Seção intitulada “Estágio 2: Inserção do F5 XC (Demonstração de Segurança)”Após os testes de linha de base, insira um balanceador de carga HTTP do F5 XC entre o CDN e a origem:
┌──────────┐ ┌────────────────┐ ┌──────────────────┐ ┌─────────────────┐│ Cliente │────▶│ CDN Edge │────▶│ F5 XC HTTP LB │────▶│ Servidor Origem ││ │ │ (NGINX) │ │ WAF + Bot + API │ │ │└──────────┘ └────────────────┘ └──────────────────┘ └─────────────────┘- Crie o balanceador de carga HTTP do F5 XC com o servidor de origem em seu pool de origens
- Atualize a borda CDN para apontar para o VIP do F5 XC em vez de diretamente para a origem:
ssh azureuser@<CDN_EDGE_IP>sudo sed -i 's|proxy_pass .*;|proxy_pass https://<F5XC_LB_VIP>;|' /etc/nginx/conf.d/cdn-edge.confsudo rm -rf /var/cache/nginx/cdn/*sudo nginx -t && sudo systemctl reload nginx- Verifique a aplicação do WAF por toda a cadeia:
# Injeção SQL via CDN → o WAF do F5 XC deve bloquearcurl -I "http://$CDN/dvwa/vulnerabilities/sqli/?id=%27+OR+1%3D1--"
# Requisição normal deve passarcurl -sf -o /dev/null -w "%{http_code}" "http://$CDN/juice-shop/"- Configure o Cabeçalho de IP do Cliente Confiável no F5 XC para ler o IP real do cliente a partir dos cabeçalhos CDN (por exemplo,
True-Client-IPpara simulação do Akamai,CF-Connecting-IPpara simulação do Cloudflare)
Arquitetura com Múltiplos Componentes
Seção intitulada “Arquitetura com Múltiplos Componentes”| Componente | Repositório | Finalidade |
|---|---|---|
| CDN Edge (este) | cdn-simulator | Cache, cabeçalhos do fornecedor |
| Servidor de Origem | origin-server | Aplicações web vulneráveis |
| Configuração F5 XC | Diversos (waf, api-protection, bot-*, etc.) | Políticas de segurança |
Cada componente publica documentação que os assistentes de IA leem para implantar a infraestrutura. O servidor de origem publica um manifesto de endpoints como um artefato de Release do GitHub, listando todos os caminhos de aplicação e verificações de integridade.