Mettere una CDN o un reverse proxy davanti a un sito assorbe il traffico e nasconde l'indirizzo del server, ma solo finché l'IP reale resta sconosciuto. Gli attaccanti raramente violano la CDN. Cercano direttamente l'origine. Questa guida elenca dove le origini trapelano e come fare in modo che l'origine rifiuti tutto tranne il tuo proxy.
Come vengono trovate le origini
- Cronologia DNS: alcuni servizi conservano i vecchi record, quindi un IP usato prima di aggiungere la CDN è ancora elencato.
- Sottodomini: record come
mail.,ftp.odev.che puntano direttamente al server. - Intestazioni email: la posta in uscita dallo stesso host rivela il suo IP nelle intestazioni.
- Certificate transparency e scansioni di internet: gli scanner associano un certificato a ogni IP che lo serve.
- Comportamento dell'applicazione: webhook, scaricatori di immagini e funzioni "controlla questo URL" si connettono all'esterno dall'origine.
Passo 1: parti da zero
Se il server è già stato esposto, la soluzione più sicura è un nuovo IP, oppure un nuovo server con migrazione. Nascondere un indirizzo già pubblico non funziona. Pianifica il passaggio con la guida alla migrazione senza downtime.
Passo 2: accetta traffico solo dal proxy
Consenti le porte web solo dagli intervalli pubblicati dal proxy e nient'altro. Con UFW appare come segue, usando gli intervalli che il tuo provider pubblica.
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
Aggiorna l'elenco periodicamente, perché gli intervalli cambiano. Per una garanzia maggiore usa le authenticated origin pull (mutual TLS) così Nginx rifiuta qualsiasi client senza il certificato del proxy.
Passo 3: separa tutto ciò che può far trapelare l'origine
- Invia la posta tramite un host o relay diverso, mai dall'origine.
- Tieni i sottodomini non web lontani dall'IP dell'origine.
- Fai passare le richieste in uscita dell'applicazione attraverso un proxy o un worker separato.
- Servi un server block Nginx predefinito che restituisce una risposta vuota per un
Hostsconosciuto, così una scansione del solo IP non mostra nulla.
server {
listen 443 ssl default_server;
ssl_reject_handshake on;
}
Passo 4: testa come un attaccante
Cerca il tuo dominio negli strumenti di cronologia DNS, scansiona il tuo intervallo di IP alla ricerca del certificato e controlla le intestazioni di un messaggio di prova. Se uno di questi mostra l'origine, cambia IP e ripeti.
Ricorda cosa fa e cosa non fa: protegge la disponibilità e la riservatezza dell'indirizzo. Non nasconde chi possiede l'account. Per questo leggi quanto è davvero anonimo l'hosting anonimo, e per gli attacchi che superano il livello di rete vedi le difese Layer 7.