Enviado por magnus el Jue, 06/06/2019 - 11:19
AWS Fronting

A grandes rasgos, podemos decir que la técnica de fronting consiste en ofuscar el origen de datos de un sitio.
Esto es algo que existe desde hace mucho tiempo, pero últimamente ha recobrado su relevancia por las barreras que se han levantado en internet para censurar, filtrar e impedir el acceso a ciertos contenidos, generalmente por intereses políticos o ideológicos.
El fronting funciona en la capa de aplicación y permite a los usuarios acceder a contenidos que han sido bloqueados por las técnicas más comunes: bloqueo de IP, filtrado por DNS e incluso inspección de paquetes, ya que el encabezado de los mismos es el de un origen autorizado, y sólo se revela el contenido real una vez que la conexión ha sido autorizada y establecida. Cabe destacar que el fronting sólo funciona sobre protocolo HTTPS.
Hay muchos tutoriales en internet sobre como utilizar CDN (Content Delivery Network) en Amazon Web Services para proveer contenido desde distintos orígenes en caso de que uno de ellos quede offline. Sin embargo, no hemos encontrado explicaciones sobre cómo hacer esto cuando el origen de datos no proviene de un sitio alojado en AWS, por eso hemos decidido crear esta guía.

En nuestro ejemplo utilizaremos los siguientes nombres:
subdominio.domain.com : Nuestro subdominio con el que haremos la ofuscación
www.otrodominio.com/ruta/al/subdominio: El origen de los datos que mostraremos en sub.domain.com

Lo primero que debemos hacer es habilitar el fronting en el hosting de otrodominio.com, ya que en la mayoría se encuentra deshabilitado por defecto para evitar el phishing. (Más adelante haremos una guía para saber si tu dominio es vulnerable al fronting por parte de usuarios malintencionados.)
No puedo decirles detalladamente cómo habilitar el fronting en su hosting, ya que es diferente en cada uno. En todo caso, siempre se puede consultar con el equipo de soporte del proveedor.

Luego debemos ir a AWS y crear un CNAME para sub.domain.com. Por ahora no importa hacia donde apunte, ya que lo cambiaremos después
Vamos a Route53, seleccionamos nuestra zona y creamos un nuevo registro con "Create Record Set":
Create Record Set
 

Aqui seleccionamos como tipo CNAME, ponemos como nombre nuestro subdominio y como origen cualquier cosa, por ejemplo, www.google.com :

CNAME alias

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Luego vamos a Cloudfront y creamos una nueva distribución:

CloudFront distribution

 

 

 

 


Seleccionamos la opción Web y colocamos el dominio del origen de datos y la ruta, si es que la hay.

CDN 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Colocamos el nombre alternativo que escogimos para el origen de datos y seleccionamos el tipo de certificado. En este caso, escogimos uno público generado por Amazon para nuestro dominio:
CDN 2

Damos aceptar y mientras esto se hace, que llevará unos 20 minutos, seleccionamos el nombre de cloudfront que nos generó esta distribución. Es un nombre del tipo a1b2c3d4c5.cloudfront.net.
Lo copiamos y volvemos al CNAME que creamos antes y reemplazamos lo que sea que hayamos puesto (en este ejemplo era www.google.com) por este nuevo dominio.

Finalmente, nos conectamos por ssh al hosting de AWS con el método que tengamos configurado (archivo pem de certificado, usuario y contraseña, etc) y, dependiendo de la versión de apache que tengamos instalada navegamos hasta /etc/apache2/ y editamos apache2.conf o bien vamos a /etc/apache2/sites-available/ y editamos domain.com.conf (el nombre será el de tu dominio) y agregamos las siguientes líneas: 

<VirtualHost *:80>
        ServerName subdominio.domain.com
        ServerAlias http://subdominio.domain.com
        ProxyPass / https://www.otrodominio.com/ruta/al/subdominio
        ProxyPassReverse / https://www.otrodominio.com/ruta/al/subdominio
</VirtualHost>
<VirtualHost *:80>
        ServerName subdominio.domain.com
        ServerAlias https://subdominio.domain.com
        ProxyPass / https://www.otrodominio.com/ruta/al/subdominio
        ProxyPassReverse / https://www.otrodominio.com/ruta/al/subdominio
</VirtualHost>

con esto nos aseguramos que sea como sea que ingrese la solicitud del usuario a subdominio.domain.com, llegue por https a otrodominio.com/ruta/al/subdominio.

Finalmente, una vez que el CloudFront haya finalizado de crear la distribución (el status cambiará a deployed y ya no dirá in progress), podemos probar el fronting escribiendo subdominio.domain.com/index.php o una ruta que sólo se encuentre en www.otrodominio.com/ruta/al/subdominio/, por ejemplo www.otrodominio.com/ruta/al/subdominio/otra/ruta/test.php. Ponemos subdominio.domain.com/otra/ruta/test.php y voilá! allí está nuestro contenido de otrodominio.com y la URL que nos muestra el browser es subdominio.domain.com!

Quiero recordarles que nuestros tutoriales son de tipo educativo, realizados en ambientes controlados, y que cualquier duda o inquietud pueden dejarla en los comentarios.
Si les ha servido esta guía, los invito a registrarse en el foro, seguirnos en Facebook y Twitterunirse a nuestro chat en Discord y a compartirnos en las redes sociales.

Acerca del autor

Administrador de sistemas Linux.
Administrador de redes.
Programador en los ratos libres.
Técnico electrónico.

...me gusta desarmar cosas...