No permite que alguien eluda la protección de Cloudflare y haga un uso indebido de su servidor de origen
Cloudflare es una de las populares CDN y plataforma de seguridad, impulsando millones de sitios desde pequeños hasta empresas. Cuando implementa Cloudflare para su sitio web, todo el tráfico está asegurado y acelerado. Pero esto es así cuando se accede a un sitio utilizando un nombre de dominio. ¿Y si alguien averigua la IP real del servidor (Origen) y hace un mal uso de ella?
Averiguar la IP del servidor del sitio detrás de Cloudflare no cuesta mucho. Puede averiguar cómo, como se explique aquí y aquí. Como ve, no basta con implementar CDN y WAF basados en Cloudflare. También debe considerar la protección del origen
Entonces, ¿cuál es la solución?
Túnel Argo - una solución inteligente de Cloudflare para proteger el servidor de origen de ataques directos
Es un demonio que necesita instalar en su servidor que crea un túnel encriptado entre el servidor y la red de Cloudflare. No hay ninguna configuración complicada de ACL/tabla IP
La buena noticia es que no necesita estar bajo el plan PRO o superior. Puede ponerlo en marcha incluso si está bajo el plan FREE. Todo lo que tiene que pagar es por la suscripción a Argo, que empieza desde 5 dólares al mes
Empecemos con la instalación y configuración
Instalación del demonio de Cloudflare
- Inicie sesión en el servidor de origen con privilegios de root o sudo
- Descargue el último paquete estable. Estoy en Ubuntu por lo que, archivo .deb para otro sistema operativo, echa un vistazo a la página oficial de descarga.
wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-amd64.deb
- Instale el paquete descargado
dpkg -i cloudflared-stable-linux-amd64.deb
- Verifiquemos la versión para asegurarnos de que se ha instalado
root@gf-prod:~# cloudflared --version
cloudflared version 2020.2.0 (built 2020-02-07-1653 UTC)
root@gf-prod:~#
¡Genial!
Autenticar Daemon
Lo siguiente sería autenticarse en Cloudflare utilizando el demonio. Ejecute el siguiente comando
cloudflared tunnel
inicio de sesión
- Le pedirá la URL que puede utilizar para iniciar sesión en Cloudflare y autorizar el sitio.
root@gf-prod:~# cloudflared tunnel login
Por favor, abra la siguiente URL e inicie sesión con su cuenta de Cloudflare:
https://dash.cloudflare.com/argotunnel?callback=https://login.argotunnel.com%XXXXX-XXX-XXXXXX;
Deje cloudflared en ejecución para descargar el cert automáticamente.
INFO[00 30] Esperando inicio de sesión...
INFO[0060 ] Esperando inicio de sesión...
INFO[0090 ] Esperando inicio de sesión...
INFO[0120 ] Esperando inicio de sesión...
Ha iniciado sesión correctamente.
Si desea copiar sus credenciales a un servidor, se han guardado en:
/root/
.cloudflared/cert.pem
root@gf-prod:~#
- Una vez autorizado, debería ver algo como esto.
Iniciando el túnel
Vamos a iniciar el túnel a continuación
cloudflared tunnel --nombre de host [HOSTNAME] http://localhost:80
Ej
root@gf-prod:~# cloudflared tunnel --nombre_de_hostel tunnel.geekflare.com http://0.0.0.0:80
WARN<x><x><x><x><x><x><x>[0000]</x></x></x></x></x></x></x> No se puede determinar la ruta de configuración predeterminada. No hay archivo [config.yml config.yaml] en [~/.cloudflared ~/.cloudflare-warp ~/cloudflare-warp /usr/local/etc/cloudflared /etc/cloudflared]
INFO<x><x><x><x><x><x><x>[0000]</x></x></x></x></x></x></x> Versión 2020.2.0
INFO<x><x><x><x><x><x><x>[0000]</x></x></x></x></x></x></x> GOOS: linux, GOVersion: go1.12.7, GoArch: amd64
INFO<x><x><x><x><x><x><x>[0000</x></x></x></x></x></x></x> ] Flags hostname=tunnel.geekflare.com proxy-dns-upstream="https://1.1.1.1/dns-query, https://1.0.0.1/dns-query"
INFO<x><x><x><x><x><x><x>[0000]</x></x></x></x></x></x></x> cloudflared no se actualizará automáticamente cuando se ejecute desde el shell. Para habilitar las actualizaciones automáticas, ejecute cloudflared como un servicio: https://developers.cloudflare.com/argo-tunnel/reference/service/
INFO<x><x><x><x><x><x><x>[00</x></x></x></x></x></x></x> 00] Iniciando servidor de métricas addr="127.0.0.1:35597"
INFO<x><x><x><x><x><x><x>[0000]</x></x></x></x></x></x></x> Proxyando peticiones de túnel a http://0.0.0.0:80
INFO
<x><x><x><x><x><x><x>[0000</x></x></x></x></x></x></x> ] Conectado a LAX connectionID=0
INFO<x>[0001]</x> IDs de túnel de cada conexión HA: map[0:xxx] connectionID=0
INFO<x>[0001]</x> Propagando ruta, puede tardar hasta 1 minuto para que su nueva ruta sea funcional connectionID=0
INFO[0003] Conectado a LAX
Enhorabuena! origin está bloqueado ahora. Intente acceder a su sitio web utilizando la IP de origen, y debería ver el mensaje de "conexión denegada".
Iniciando el túnel Argo en el arranque
Asegurémonos de que el Túnel Argo se inicia cuando el servidor se reinicia. Ejecute el siguiente comando en el servidor
cloudflared service install
Conclusión
Cloudflare Argo Tunnel parece prometedor. Sólo en unos 30 minutos, puede proteger el servidor de origen.