Pular para o conteúdo

Integrar com o Servidor de Origem

Esta página abrange dois estágios de integração:

  1. Integração direta — a borda CDN encaminha diretamente para o servidor de origem (teste de linha de base)
  2. 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.

O componente de laboratório origin-server fornece aplicações web vulneráveis para testes de segurança.

PropriedadeValor
Documentaçãof5-sales-demo.github.io/origin-server
Repositóriogithub.com/f5-sales-demo/origin-server
Porta Padrão80
Verificação de IntegridadeGET /health

Obtenha o catálogo de aplicações atual a partir do manifesto publicado do servidor de origem:

Terminal window
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.tool

Se ainda não existir nenhuma versão, utilize diretamente o código-fonte do repositório:

Terminal window
curl -sf https://raw.githubusercontent.com/f5-sales-demo/origin-server/main/manifest.json | python3 -m json.tool

O manifesto lista todos os caminhos de aplicação, verificações de integridade, imagens de contêiner e mapeamentos de funcionalidades de demonstração.

CaminhoAplicaçãoFuncionalidades de Demonstração
/Página inicial
/healthVerificação de integridade
/juice-shop/OWASP Juice ShopWAF, Bot Defense, API Security
/dvwa/DVWAWAF, Bot Defense
/vampi/VAmPIAPI Security
/httpbin/httpbinDiagnósticos
/whoami/whoamiVerificação de cabeçalhos
/csd-demo/CSD DemoClient-Side Defense
┌──────────┐ ┌──────────────────────┐ ┌─────────────────────┐
│ 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 │
└─────────────────────┘

Defina o IP do servidor de origem na configuração NGINX da borda CDN:

Terminal window
ssh azureuser@<CDN_EDGE_IP>
sudo sed -i 's|proxy_pass .*;|proxy_pass http://<ORIGIN_IP>;|' /etc/nginx/conf.d/cdn-edge.conf
sudo rm -rf /var/cache/nginx/cdn/*
sudo nginx -t && sudo systemctl reload nginx

Ou defina-o no momento da implantação com o Terraform via terraform.tfvars:

origin_server = "http://<ORIGIN_IP>"

Teste cada aplicação de origem através do CDN:

Terminal window
CDN=<CDN_EDGE_IP>
# Verificação de integridade (local do CDN)
curl -sf "http://$CDN/health" | python3 -m json.tool
# Página inicial
curl -sf -o /dev/null -w "/ : HTTP %{http_code}\n" "http://$CDN/"
# Juice Shop
curl -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 VAmPI
curl -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 Demo
curl -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).

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:

Terminal window
curl -sf "http://$CDN/whoami/"

Verifique se os seguintes cabeçalhos principais estão presentes:

FornecedorCabeçalhoValor Esperado
PadrãoX-Forwarded-For<your_ip>, <cdn_edge_ip>
AkamaiTrue-Client-Ip<your_ip>
CloudflareCf-Connecting-Ip<your_ip>
CloudFrontCloudfront-Viewer-CountryUS
FastlyFastly-Client-Ip<your_ip>
Azure FDX-Azure-Clientip<your_ip>

Compare os logs de acesso em ambos os servidores para verificar o fluxo de tráfego:

Terminal window
# Log da borda CDN — exibe o IP do seu cliente como origem
ssh azureuser@<CDN_EDGE_IP> "sudo tail -5 /var/log/nginx/access.log"
# Log da origem — exibe o IP da borda CDN como origem
ssh 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.

Terminal window
# 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-Status

Está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 │ │ │
└──────────┘ └────────────────┘ └──────────────────┘ └─────────────────┘
  1. Crie o balanceador de carga HTTP do F5 XC com o servidor de origem em seu pool de origens
  2. Atualize a borda CDN para apontar para o VIP do F5 XC em vez de diretamente para a origem:
Terminal window
ssh azureuser@<CDN_EDGE_IP>
sudo sed -i 's|proxy_pass .*;|proxy_pass https://<F5XC_LB_VIP>;|' /etc/nginx/conf.d/cdn-edge.conf
sudo rm -rf /var/cache/nginx/cdn/*
sudo nginx -t && sudo systemctl reload nginx
  1. Verifique a aplicação do WAF por toda a cadeia:
Terminal window
# Injeção SQL via CDN → o WAF do F5 XC deve bloquear
curl -I "http://$CDN/dvwa/vulnerabilities/sqli/?id=%27+OR+1%3D1--"
# Requisição normal deve passar
curl -sf -o /dev/null -w "%{http_code}" "http://$CDN/juice-shop/"
  1. 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-IP para simulação do Akamai, CF-Connecting-IP para simulação do Cloudflare)
ComponenteRepositórioFinalidade
CDN Edge (este)cdn-simulatorCache, cabeçalhos do fornecedor
Servidor de Origemorigin-serverAplicações web vulneráveis
Configuração F5 XCDiversos (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.