Crea tu Proxy inverso blindado con CloudFlare Zero Trust
Proxy Inverso de CloudFlare. Ultraseguro y compatible con usuarios que están bajo CG-NAT.
Regístrate en HDS+
Tutoriales y soporte sobre sistemas NAS, Redes, Docker y SelfHosting.
Sin SPAM. Es gratuito. Ten acceso a todo el contenido.
Cuando queremos acceder a un servicio de forma externa sin la utilización de una VPN de por medio, estamos obligados a la utilización de un Proxy Inverso. Esto tiene como desventaja que expondremos nuestros servicios a Internet. Todos sabemos que cualquier servicio que expongamos, será susceptible de posibles ataques y por lo tanto, fugas de información. Nuestra seguridad y la de nuestros datos puede verse mermada. Como siempre digo, la seguridad absoluta no existe, y menos aún cuando exponemos un servicio al exterior.
En la actualidad existen decenas de soluciones para intentar evitar esto lo máximo posible cuando estamos usando un Proxy Inverso como NPM: GeoIP2, Fail2Ban, Authelia, Authentik, etc. En todos ellos, es necesario un equipo capaz de ejecutar Docker, además de contar con una serie de conocimientos para aprender a configurar y poner en marcha todos ellos.
Es por ello que CloudFlare sacó al mercado Zero Trust, una solución muy rápida y sencilla. No se requieren conociminentos ni la instalación de ningún Docker, bueno, sólo uno. Toda la configuración se lleva a cabo a través de su Dashboard.
Con Zero Trust, no necesitas la instalación de Nginx Proxy Manager ni servicios asociados para restringir el acceso a los servicios. ¡Todo se vuelve my fácil!
Además, para todos aquellos usuarios que están bajo CG-NAT por culpa de su operador, y que hasta ahora, no podían levantar un Proxy Inverso, ahora podrán hacerlo gracias a CloudFlare Zero Trust, al no tener que redirigir los puertos 80/443 al exterior.
Este método ha sido posible configurarlo gracias a la inestimable ayuda del compañero Pepebetis.
PASO 1 - Añadir tu dominio a CloudFlare

Lo primero que tendremos que tener es nuestro dominio en CloudFlare, para ello en HDS+ tenéis un tutorial detallado en el cual explico como hacerlo.
PASO 2 - Configuración inicial de Zero Trust

Una vez ya tenemos nuestro dominio en CloudFlare, nos dirigimos al Dashboard de Zero Trust y rellenamos el formulario inicial para dar de alta el servicio.
Elegiremos el plan gratuito, que en nuestro caso es más que suficiente. Una vez finalizado el proceso obtendremos una dirección con el nombre que hayamos escogido del tipo: xxxx.cloudflareaccess.com
PASO 3 - Creación del túnel y el primer Proxy Inverso
Lo primero que tendremos que hacer es la creación del túnel que conectará CloudFlare con nuestro NAS / Servidor. Para ello nos dirigimos a: Access ➙ Tunnels.
Hacemos clic sobre Create a tunnel y tras asignarle un nombre, deberemos de instalar un único contenedor vía Docker-run en nuestro NAS.
Para ello nos conectaremos vía SSH y ejecutaremos el comando que nos genera CloudFlare dentro de la pestaña Docker (ver foto 2).



Proceso de creación del túnel y primer Proxy Inverso
Ahora que ya tenemos el túnel conectado, en el último paso nos dejará añadir nuestro primer Proxy Inverso, dentro de la pestaña Public networks. Para ello:
- Si nos fijamos en la tercera imagen, en el campo marcado en verde, deberemos de especificar que subdominio vamos a crear para el Proxy Inverso (al igual que haríamos en NPM).
- En la segunda parte, especificaremos en que IP local + puerto está el servicio que queremos asociar a ese Proxy Inverso.
Una vez hecho esto, ya podremos acceder a nuestro primer Proxy Inverso. Sin creación de certificados ni historias. De todo esto, se encarga CloudFlare.
Para crear más, tendremos que dirigirnos a Access ➙ Tunnels y editar el túnel como muestro en las siguientes capturas e ir añadiendo nuevos Proxy Inverso, tantos como queramos:


Deshabilitar "Proxied" a nuestro Proxy Inverso
Si queremos que nuestro Proxy Inverso no esté bajo la protección de Proxied, tendremos que irnos al Dashboard principal de CloudFlare, entrar en nuestro dominio y dirigirnos a la pestaña DNS. Buscamos el CNAME que nos ha generado Zero Trust hacia ese servicio y deshabilitamos la opción Proxied.

PASO 4 - Blindar tu Proxy Inverso
Ya tenemos nuestros servicios levantados con el Proxy Inverso de CloudFlare, pero ahora toca la parte más interesante, que es la de blindar el acceso a aquellos servicios que nosotros queramos.
Como hacía mención al inicio del artículo, es un engorro tener que instalar NPM + servicios asociados para restringir el acceso, como Authelia o GeoIP2. Pues bien, puedes olvidarte de todo esto. Ahora será mucho más sencillo.
Nos dirigimos a Access ➙ Applications y añadiremos una nueva haciendo clic en Add an application.
Seleccionamos aplicación del tipo Self-hosted.

- Punto 1: indicamos el nombre de la aplicación.
- Punto 2: especificaremos la duración que tendrán las reglas que vayamos a especificar.
- Punto 3: especificamos a que subdominio afectarán estos bloqueos que configuraremos en el siguiente paso.

- Punto 1: especificaremos el nombre de esta regla.
- Punto 2: escogemos que acción queremos llevar a cabo, si Permitir o Bloquear.
- Punto 3: especificaremos la duración que tendrán las reglas de bloqueo que vayamos a especificar en dicho Proxy Inverso. Si por ejemplo especificamos como en la captura superior, una duración de 6 horas, una vez validado el acceso, no tendremos que volver a validarnos en ese tiempo.
- Include: Yo he seleccionado que solamente pueda acceder al servicio con mi dirección de email.
- Require: Además, he especificado que aunque acceda con mi email, si estoy fuera de España, me bloquee el acceso de todas formas.

En la última parte de la configuración solamente nos faltará especificar los CORS. Para ello habilitaremos las dos opciones que señalo a continuación:

Una vez tenemos la regla creada, nos dirigimos de nuevo a Access ➙ Tunnels y editamos nuestro túnel.
Editamos el Proxy Inverso que queremos que aplique esta regla que acabamos de crear. Habilitamos la restricción haciendo clic en Access y habilitando el Protect with Access. Por último seleccionaremos qué regla queremos aplicar (en caso de haver creado más de una) y aplicamos.


Podemos crear tantas reglas como queramos, y con los atributos que queramos. El utilizado en este tutorial es solamente un ejemplo para que veáis cual es el funcionamiento.
Aplicando MFA para incrementar más aún la seguridad


Si además de proteger el acceso a nuestro servicio con las reglas que hayamos creado, queremos una doble verificación que nos permita acceder, CloudFlare también nos lo permite hacer. Para ello nos vamos a Access ➙ Applications y editamos la aplicación a la cual queremos aplicarlo habilitando las opciones de la imagen inferior.

Ejemplo: El usuario pide autorización con su email al acceder al servicio. Llega el email con el código de verificación. Y después, enviará una segunda autorización a la dirección de email que hayamos especificado a continuación que nos acabará permitiendo el paso o no.

ÚLTIMO PASO: Probando que todo funciona
Una vez hemos creado el Proxy Inverso y aplicado la regla de restricción, probamos a acceder a él y deberíamos ver una pantalla de CloudFlare Access donde nos pedirá un email al cual enviar el código para poder acceder al servicio.


Después de introducir el código, ya nos redireccionará al servicio en cuestión. En mi ejemplo he añadido el Proxy Inverso del Blog HDS+.
Una vez validado el acceso con mi email, puedo acceder al servicio con normalidad. Pero ojo, si recordáis, he especificado en la regla que además, el acceso solamente sea desde España, por lo que si me conecto por VPN a otro país, mostrará la pantalla de la imagen inferior derecha conforme tengo el acceso prohibido.


Izq.: Acceso al servicio una vez validado el email / Dcha.: Acceso bloqueado si accedo fuera de España.