Poner una CDN o un proxy inverso delante de un sitio absorbe tráfico y oculta la dirección del servidor, pero solo mientras la IP real siga siendo desconocida. Los atacantes rara vez rompen la CDN. Buscan el origen directamente. Esta guía enumera dónde se filtran los orígenes y cómo hacer que el origen rechace todo excepto tu proxy.
Cómo se encuentran los orígenes
- Historial de DNS: hay servicios que conservan registros antiguos, así que una IP que usaste antes de añadir la CDN sigue apareciendo.
- Subdominios: registros como
mail.,ftp.odev.que apuntan directamente al servidor. - Cabeceras de correo: el correo saliente del mismo host revela su IP en las cabeceras.
- Transparencia de certificados y escaneos de internet: los escáneres relacionan un certificado con cada IP que lo sirve.
- Comportamiento de la aplicación: los webhooks, los descargadores de imágenes y las funciones de "comprobar esta URL" se conectan hacia fuera desde el origen.
Paso 1: empieza desde cero
Si el servidor ya ha quedado expuesto, la solución más segura es una IP nueva, o un servidor nuevo y una migración. Ocultar una dirección que ya es pública no funciona. Planifica el traslado con la guía de migración sin tiempo de inactividad.
Paso 2: acepta tráfico solo del proxy
Permite los puertos web desde los rangos publicados del proxy y nada más. Con UFW queda así, usando los rangos que publica tu proveedor.
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
Actualiza la lista periódicamente, ya que los rangos cambian. Para mayor garantía usa authenticated origin pulls (TLS mutuo) para que Nginx rechace cualquier cliente sin el certificado del proxy.
Paso 3: separa todo lo que pueda filtrarse
- Envía el correo a través de otro host o relay, nunca desde el origen.
- Mantén los subdominios que no son web fuera de la IP del origen.
- Haz que las descargas salientes de la aplicación pasen por un proxy o por un worker aparte.
- Sirve un bloque de servidor Nginx por defecto que devuelva una respuesta vacía ante un
Hostdesconocido, de modo que un escaneo de la IP sin más no muestre nada.
server {
listen 443 ssl default_server;
ssl_reject_handshake on;
}
Paso 4: prueba como un atacante
Busca tu dominio en herramientas de historial de DNS, escanea tu propio rango de IP en busca del certificado y revisa las cabeceras de correo de un mensaje de prueba. Si alguna de ellas muestra el origen, cambia la IP y repite.
Recuerda lo que esto hace y lo que no: protege la disponibilidad y la privacidad de la dirección. No oculta quién es el titular de la cuenta. Para eso, lee qué tan anónimo es realmente el hosting anónimo, y para los ataques que superan la capa de red consulta las defensas de capa 7.