Skip to main content

Command Palette

Search for a command to run...

Guía: Proteger tu Servidor Web (Caddy/OpenClaw) con Cloudflare Zero Trust y UFW

Published
5 min read

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:

  1. 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.

  2. 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.

  1. Entra en tu cuenta de Cloudflare y accede al panel de Zero Trust (en el menú lateral izquierdo).

  2. Ve abajo del todo en el menú lateral y haz clic en Settings (Ajustes).

  3. En las pestañas superiores, elige Team name.

  4. 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".

  1. Ve a la Consola de Google Cloud e inicia sesión con tu cuenta.

  2. Crea un proyecto nuevo (ej. "Seguridad Servidor").

  3. Ve a API y servicios > Pantalla de consentimiento de OAuth. Elige "Externo" y rellena tu email y el nombre de la app.

  4. Ve a Credenciales > Crear credenciales > ID de cliente de OAuth y selecciona Aplicación web.

  5. En Orígenes de JavaScript autorizados, pega tu Team Domain de Cloudflare: https://tu-equipo.cloudflareaccess.com

  6. En URI de redireccionamiento autorizados, pega tu Team Domain seguido de la ruta de respuesta: https://tu-equipo.cloudflareaccess.com/cdn-cgi/access/callback

  7. Haz 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

  1. Vuelve al panel de Zero Trust en Cloudflare.

  2. En el menú lateral izquierdo, ve a Integrations > Identity providers.

  3. Haz clic en Add new identity provider y selecciona Google.

  4. 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)

  1. En el menú lateral de Zero Trust, ve a Access controls > Applications y pulsa Add an application. Selecciona Self-hosted.

  2. 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.

  3. 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.

  4. 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.

7 views