OffshoreVps
Segurança19 out. 20268 min de leituraPor a equipe da OffshoreVps

Oculte o IP do seu servidor de origem: proxies, CDNs e vazamentos

Uma CDN só esconde o seu servidor se nada mais o entregar. Saiba como os IPs de origem vazam por histórico de DNS, e-mail e certificados, e como blindar a origem.

Colocar uma CDN ou um proxy reverso na frente de um site absorve tráfego e esconde o endereço do servidor, mas só enquanto o IP real continuar desconhecido. Os atacantes raramente quebram a CDN. Eles procuram a origem diretamente. Este guia lista onde as origens vazam e como fazer a origem recusar tudo, exceto o seu proxy.

Ilustração de escudo e cadeado com os rótulos Proxy na frente, Lista de permissões da origem, Sem vazamentos, representando como manter secreto o IP do seu servidor de origem
Principais ideias abordadas neste post.

Como as origens são encontradas

  • Histórico de DNS: serviços guardam registros antigos, então um IP que você usava antes de adicionar a CDN continua listado.
  • Subdomínios: registros como mail., ftp. ou dev. que apontam direto para o servidor.
  • Cabeçalhos de e-mail: e-mails enviados pelo mesmo host revelam o IP dele nos cabeçalhos.
  • Transparência de certificados e varreduras da internet: scanners associam um certificado a todos os IPs que o servem.
  • Comportamento da aplicação: webhooks, buscadores de imagens e recursos de "verificar esta URL" se conectam a partir da origem.

Etapa 1: comece do zero

Se o servidor já foi exposto, a correção mais segura é um novo IP, ou um novo servidor e uma migração. Esconder um endereço que já é público não funciona. Planeje a mudança com o guia de migração sem downtime.

Os passos deste guia em ordem: 1. Como as origens são encontradas; 2. comece do zero; 3. aceite tráfego somente do proxy; 4. separe tudo o que pode vazar; 5. teste como um atacante
Os passos deste guia, em ordem.

Etapa 2: aceite tráfego apenas do proxy

Permita as portas web apenas a partir das faixas publicadas do proxy e de mais nada. Com o UFW, fica assim, usando as faixas que o seu provedor publica.

sudo ufw default deny incoming
sudo ufw allow OpenSSH
for ip in $(cat proxy-ranges.txt); do sudo ufw allow from "$ip" to any port 443 proto tcp; done
sudo ufw enable

Atualize a lista periodicamente, já que as faixas mudam. Para uma garantia maior, use authenticated origin pulls (TLS mútuo) para que o Nginx rejeite qualquer cliente sem o certificado do proxy.

Etapa 3: separe tudo o que pode vazar

  • Envie e-mails por outro host ou relay, nunca pela origem.
  • Mantenha os subdomínios que não são web fora do IP da origem.
  • Faça as requisições de saída da aplicação passarem por um proxy ou por um worker separado.
  • Sirva um bloco de servidor Nginx padrão que devolva uma resposta vazia para um Host desconhecido, para que uma varredura do IP puro não mostre nada.
server {
    listen 443 ssl default_server;
    ssl_reject_handshake on;
}

Etapa 4: teste como um atacante

Procure seu domínio em ferramentas de histórico de DNS, varra sua própria faixa de IPs atrás do certificado e verifique os cabeçalhos de uma mensagem de teste. Se qualquer um deles mostrar a origem, troque o IP e repita.

Lembre-se do que isso faz e do que não faz: protege a disponibilidade e a privacidade do endereço. Não esconde quem é o dono da conta. Para isso, leia quão anônima é a hospedagem anônima, e para ataques que passam da camada de rede veja as defesas de camada 7.