Guía: Proteger tu Servidor Web (Caddy/OpenClaw) con Cloudflare Zero Trust y UFW
Tener un servidor web o un panel de control expuesto a internet es un riesgo constante. En esta guía, vamos a construir una doble barrera de seguridad de nivel empresarial para tu servidor Ubuntu:
El Muro Frontal: Usaremos Cloudflare Zero Trust para obligar a cualquier visitante a iniciar sesión con tu cuenta de Google antes de ver tu web.
El Candado Trasero: Configuraremos el cortafuegos de Ubuntu (UFW) para que tu servidor rechace cualquier conexión directa a su IP pública, a menos que venga de Cloudflare o de tu propia casa.
PARTE 1: Configurar Cloudflare Zero Trust con Google
Requisito previo: Tu dominio debe estar gestionado en Cloudflare y con el proxy activado (la "nube naranja" en la pestaña DNS).
Paso 1.1: Obtener tu "Team Domain" en Cloudflare
Antes de ir a Google, necesitamos saber cuál es el identificador único de tu escudo en Cloudflare.
Entra en tu cuenta de Cloudflare y accede al panel de Zero Trust (en el menú lateral izquierdo).
Ve abajo del todo en el menú lateral y haz clic en Settings (Ajustes).
En las pestañas superiores, elige Team name.
Apunta o copia la URL exacta que aparece bajo Team domain (será algo parecido a
https://tu-equipo.cloudflareaccess.com). ¡Guarda esta URL porque la usaremos ahora!
Paso 1.2: Crear las credenciales en Google Cloud
Vamos a autorizar a Cloudflare para que use los sistemas de inicio de sesión de Google como "portero".
Ve a la Consola de Google Cloud e inicia sesión con tu cuenta.
Crea un proyecto nuevo (ej. "Seguridad Servidor").
Ve a API y servicios > Pantalla de consentimiento de OAuth. Elige "Externo" y rellena tu email y el nombre de la app.
Ve a Credenciales > Crear credenciales > ID de cliente de OAuth y selecciona Aplicación web.
En Orígenes de JavaScript autorizados, pega tu Team Domain de Cloudflare:
https://tu-equipo.cloudflareaccess.comEn URI de redireccionamiento autorizados, pega tu Team Domain seguido de la ruta de respuesta:
https://tu-equipo.cloudflareaccess.com/cdn-cgi/access/callbackHaz clic en Crear. Copia el ID de cliente y el Secreto de cliente que aparecerán en pantalla.
Paso 1.3: Conectar Google con Cloudflare
Vuelve al panel de Zero Trust en Cloudflare.
En el menú lateral izquierdo, ve a Integrations > Identity providers.
Haz clic en Add new identity provider y selecciona Google.
Pega el ID y el Secreto de cliente que copiaste de Google y haz clic en Save.
Paso 1.4: Proteger tu dominio (Crear la Aplicación y la Política)
En el menú lateral de Zero Trust, ve a Access controls > Applications y pulsa Add an application. Selecciona Self-hosted.
Pestaña 1 (Configuración): Ponle un nombre (ej.
OpenClaw-Admin). En Public hostname, escribe tu subdominio (ej.openclaw) y selecciona tu dominio (ej.tudominio.com). Pulsa Next.Pestaña 2 (La Política VIP): Ponle un nombre a la regla (ej.
SoloYo) y asegúrate de que la acción es Allow.En la sección Include, abre el desplegable Selector y elige Emails. En el campo Value, escribe tu correo de Google exacto. Pulsa Next y luego Add application.
PARTE 2: Cerrar la "Puerta Trasera" con UFW en Ubuntu
Si alguien averigua la IP pública de tu servidor, podría escribirla en su navegador y saltarse todo el muro de Cloudflare. Vamos a blindar el servidor para que solo hable con Cloudflare.
Paso 2.1: Limpiar las reglas web abiertas (El método infalible)
Conéctate por SSH a tu servidor. Vamos a ver las reglas de tu cortafuegos numeradas para no cometer errores al borrarlas:
sudo ufw status numbered
Debes borrar todas las reglas que abran los puertos 80, 443 o el puerto directo de tu aplicación (ej. 18789), dejando viva ÚNICAMENTE la regla de OpenSSH. Para borrar una regla, usa su número (siempre borrando de los números más altos a los más bajos para que no se desordenen). Ejemplo:
sudo ufw delete 4
Paso 2.2: Permitir exclusivamente las IPs de Cloudflare
Copia y pega estos dos bloques de código en tu terminal para descargar la lista oficial de IPs de Cloudflare y permitirlas en tu servidor:
for i in $(curl -s https://www.cloudflare.com/ips-v4); do
sudo ufw allow from $i to any port 80,443 proto tcp
done
for i in $(curl -s https://www.cloudflare.com/ips-v6); do
sudo ufw allow from $i to any port 80,443 proto tcp
done
Paso 2.3: (Opcional) Permitir tu IP personal para uso de DNS Local
Si planeas modificar el archivo hosts de tu ordenador para acceder directamente a la IP del servidor usando el subdominio (haciendo Split DNS), Cloudflare no intervendrá y el UFW te bloqueará. Para evitarlo, añade la IP pública de tu casa a la lista de permitidos:
sudo ufw allow from TU_IP_PERSONAL to any port 80,443 proto tcp
Paso 2.4: Recargar el Firewall
Aplica todos los cambios blindando el sistema:
sudo ufw reload
¡Misión cumplida! Tu servidor es ahora una fortaleza. Nadie puede acceder a tus aplicaciones web sin pasar por el inicio de sesión de Google administrado por Cloudflare, y la puerta trasera directa a tu IP está cerrada a cal y canto.