Tu asistente de IA me dio acceso a la terminal
Cómo asegurar tu configuración local o VPS de OpenClaw/Moltbot
OpenClaw (anteriormente Clawdbot/Moltbot) te ofrece un asistente de IA personal que funciona a través de WhatsApp, Slack, Discord, iMessage y otros canales. Pero si expones su gateway, controles de nodo o SSH en internet público sin autenticación sólida, estás dando a desconocidos un camino hacia el acceso a la terminal de tu máquina.
Esta guía muestra la configuración más segura por defecto: mantén el gateway de OpenClaw en loopback, expónlo solo a tu tailnet con Tailscale Serve, bloquea SSH y verifica desde fuera que el gateway no sea público.
La rápida adopción del proyecto reveló preocupaciones reales de seguridad: los escaneos de Shodan encontraron 2.847 instancias expuestas en las primeras semanas, y una auditoría de seguridad en GitHub reportó 512 hallazgos en el código. Parte de eso era resultado de escáneres automatizados y parte ha cambiado desde el cambio de nombre a OpenClaw en enero de 2026, así que trata el número como una señal de advertencia más que como un recuento preciso de vulnerabilidades actuales. No necesitas ser un experto en seguridad; solo necesitas evitar publicar superficies de operación antes de desplegar.
Qué estás exponiendo realmente
Dependiendo de cómo lo hayas instalado y expuesto, hay tres superficies que vale la pena revisar:
- Puerto 22: Acceso SSH en un VPS
- Puerto 18789: Interfaz de control del gateway y API WebSocket
- Control de navegador/nodo: ejecución remota de código y automatización del navegador a través del modelo de emparejamiento gateway/nodo
La documentación actual de acceso remoto de OpenClaw indica que el WebSocket del gateway se vincula a loopback por defecto y recomienda mantenerlo solo en loopback a menos que elijas intencionalmente una vinculación LAN/tailnet/personalizada. Eso es bueno. El riesgo aparece cuando anulas ese valor por defecto, publicas puertos de Docker, añades un proxy inverso, activas Funnel o dejas SSH abierto al mundo.
El gateway es el más importante. Es la superficie de operación de tu asistente, incluidas las rutas de invocación de herramientas. Si es accesible desde internet y falta la autenticación, es débil, se puede eludir o filtrar, y un atacante podría controlar el agente o invocar herramientas con los permisos de tu usuario.
El control del navegador es casi igual de sensible. La documentación actual de OpenClaw recomienda ejecutar el control del navegador a través de un host de nodo emparejado en la máquina del navegador y tratar el emparejamiento de nodos como acceso de operador. Si un gateway puede invocar system.run en un nodo emparejado, eso es ejecución remota de código en ese nodo, sujeta a la política de nodos del gateway y a las aprobaciones de ejecución del propio nodo.
SSH es SSH. Si ejecutas con autenticación por contraseña habilitada, los intentos de fuerza bruta son inevitables en un VPS público.
La solución con Tailscale
Para OpenClaw, Tailscale te da acceso remoto sin publicar servicios de operación:
- Tu instancia de OpenClaw se ejecuta en un VPS o máquina local
- El gateway permanece vinculado a loopback y se accede a través de Tailscale Serve, o se vincula directamente a la IP de la tailnet con autenticación explícita
- Instalas Tailscale tanto en el servidor como en tus dispositivos personales
- Accedes a OpenClaw a través de su IP de Tailscale o nombre MagicDNS
- Todos los demás en internet no ven nada, a menos que habilites intencionalmente Funnel u otro proxy público
¿Deberías dejar que OpenClaw gestione Tailscale?
OpenClaw tiene integración integrada con Tailscale que puede configurar tailscale serve o tailscale funnel para el gateway.
Modo Serve mantiene las cosas solo en tu tailnet. El gateway permanece vinculado a 127.0.0.1 mientras Tailscale se encarga del enrutamiento y HTTPS. Cuando gateway.auth.allowTailscale está habilitado, OpenClaw puede autenticar tráfico de Control UI/WebSocket usando encabezados de identidad de Tailscale y verificar la fuente con tailscale whois. Este es el modo correcto para la mayoría de las instalaciones personales.
Modo Funnel expone el gateway públicamente a través de la función de endpoint público de Tailscale. La propia documentación de Tailscale describe Funnel como el enrutamiento de tráfico desde internet en general hacia un servicio local. OpenClaw se niega a iniciar Funnel a menos que el modo de autenticación del gateway sea password, pero aun así estás eligiendo exposición pública para una superficie de operación.
La documentación de seguridad de OpenClaw deja claro que la inyección de prompts y el acceso a herramientas son riesgos centrales para un asistente personal. No le des al agente un camino para hacerse público silenciosamente. Usa Serve de forma deliberada, evita Funnel a menos que realmente necesites acceso público y requiere aprobación de ejecución para cualquier comando tailscale.
Configurar OpenClaw de forma segura
Paso 1: Instalar Tailscale
En tu VPS o servidor local:
# Instalar Tailscalecurl -fsSL https://tailscale.com/install.sh | sh
# Autenticar (abre un navegador para iniciar sesión)sudo tailscale up
# Obtener tu IP de Tailscaletailscale ip -4# Salida: 100.x.x.xEn tu máquina cliente, instala Tailscale desde la página de descarga oficial e inicia sesión en la misma tailnet.
Ahora ambas máquinas están en la misma red privada. Puedes hacer ping a tu VPS usando su IP de Tailscale, y se enrutará a través del túnel cifrado.
Paso 2: Configurar OpenClaw para usar Tailscale
El patrón más seguro actualmente es: mantén el gateway en loopback y expónlo a tu tailnet con Tailscale Serve.
En la configuración de OpenClaw:
{ gateway: { bind: "loopback", tailscale: { mode: "serve" }, },}Luego inicia el gateway con Serve:
openclaw gateway --tailscale serveLa documentación de OpenClaw indica que esto mantiene el gateway en 127.0.0.1 mientras Tailscale proporciona HTTPS y enrutamiento de tailnet. Lo abres en https://<magicdns-name>/, no en la IP pública de tu VPS.
Si prefieres una vinculación directa a la tailnet en lugar de Serve, usa autenticación explícita del gateway:
{ gateway: { bind: "tailnet", auth: { mode: "token", token: "replace-with-a-long-random-token", }, },}Luego conéctate desde otro dispositivo de la tailnet:
http://<tailscale-ip>:18789/ws://<tailscale-ip>:18789Si estás ejecutando en Docker u otro entorno de contenedores, ten especial cuidado con la publicación de puertos. Una publicación como -p 18789:18789 generalmente se vincula en todas las interfaces del host. Prefiere loopback más Tailscale Serve, o vincula el lado del host explícitamente a la IP de Tailscale después de confirmar que el contenedor sigue recibiendo tráfico:
TAILSCALE_IP=$(tailscale ip -4)docker run ... -p "$TAILSCALE_IP:18789:18789" ...Después de cualquier cambio en Docker, verifica desde fuera con nmap y localmente con ss. Docker puede omitir o reordenar suposiciones del firewall del host si no lo tienes en cuenta.
Paso 3: Bloquear SSH
Incluso con Tailscale, deberías asegurar SSH correctamente:
# Mantén tu sesión SSH actual abierta mientras haces esto.# Primero, desde tu máquina cliente, confirma que puedes SSH sobre Tailscale:ssh your-user@SERVER_TAILSCALE_IP
# Coloca el endurecimiento en un archivo drop-in en lugar de reescribir sshd_config.sudo tee /etc/ssh/sshd_config.d/99-openclaw-hardening.conf >/dev/null <<'EOF'PasswordAuthentication noPermitRootLogin noKbdInteractiveAuthentication noEOF
# Valida antes de recargar. No omitas esto.sudo sshd -tsudo systemctl reload ssh || sudo systemctl reload sshdEsto deshabilita el inicio de sesión basado en contraseña y el inicio de sesión como root. El siguiente paso usa UFW para prevenir SSH público por completo mientras aún permite SSH sobre tailscale0.
Paso 4: Reglas del firewall
Configura un firewall como segunda capa:
# Usando UFW (Ubuntu/Debian)sudo ufw allow in on tailscale0sudo ufw default deny incomingsudo ufw default allow outgoingsudo ufw enablesudo ufw delete allow 22/tcp || truesudo ufw reloadsudo ufw status verboseLa propia guía de endurecimiento de Ubuntu de Tailscale usa esta misma estructura: permitir tailscale0, denegar otro tráfico entrante, luego verificar que el SSH público agote el tiempo de espera mientras que SSH a la dirección 100.x.y.z sigue funcionando. Si ejecutas un sitio web público en el mismo VPS, mantén solo las reglas públicas que realmente necesites, como 80/tcp y 443/tcp.
Verificar tu exposición
Comprobar puertos abiertos desde fuera
Desde una máquina que NO esté en tu red Tailscale:
# Comprobar si los puertos públicos comunes están expuestosnmap -p 22,80,443,18789 TU_IP_PUBLICA
# Salida esperada para una instancia segura:# 22/tcp filtered ssh# 18789/tcp filtered unknownSi 22 o 18789 muestra open en lugar de filtered o closed, tienes un problema. Si 80 o 443 está abierto, asegúrate de que sea solo tu sitio web público intencional o endpoint de Tailscale Funnel, no el gateway de OpenClaw por accidente.
Comprobar qué está escuchando localmente
En tu servidor OpenClaw:
# Mostrar todos los puertos en escucha y a qué están vinculadossudo ss -tulpn | grep LISTEN
# Busca líneas como esta (bien para Serve):# tcp LISTEN 0 128 127.0.0.1:18789 *:*## O esta (aceptable para vinculación directa a tailnet con autenticación):# tcp LISTEN 0 128 100.x.y.z:18789 *:*## NO como esta (mal):# tcp LISTEN 0 128 0.0.0.0:18789 *:*Si ves 0.0.0.0 o ::: (equivalente IPv6), ese servicio está expuesto al mundo.
Auditoría de seguridad integrada
OpenClaw incluye un comando de auditoría de seguridad que verifica tu configuración contra las mejores prácticas de seguridad:
openclaw security audit --deepopenclaw security audit --deep --fixLa auditoría verifica la exposición del gateway, el modo Tailscale, la configuración de autenticación, el acceso a canales, la política de herramientas, el inventario de plugins y los permisos de archivos. Trata --fix como un ayudante útil, no como un sustituto de leer los hallazgos.
Lo que esto no resuelve
Tailscale elimina el error más grande: la exposición pública de operadores. No resuelve todo:
Almacenamiento de credenciales: OpenClaw almacena transcripciones de sesiones, tokens OAuth y claves API en disco. Asegúrate de que tengan permisos de archivo adecuados (chmod 600 para archivos, chmod 700 para directorios de configuración privados) y no estén en control de versiones. La auditoría integrada verifica esto.
Aislamiento de plugins: Los plugins se ejecutan con los permisos completos de tu usuario. Instala solo plugins de fuentes en las que confíes y revisa qué capacidades solicitan. La herramienta de auditoría inventaría los plugins instalados.
Seguridad del dispositivo: Si alguien compromete tu cuenta de Tailscale o roba un dispositivo en tu tailnet, puede acceder a tu instancia de OpenClaw. Habilita la autorización de dispositivos de Tailscale para requerir aprobación para nuevos dispositivos.
Lista de verificación de despliegue
Antes de considerar tu instancia de OpenClaw/Moltbot lista para producción:
- Tailscale instalado y autenticado tanto en servidor como en cliente
- Gateway mantenido en loopback con Tailscale Serve, o vinculado a
tailnetcon autenticación explícita - SSH configurado para deshabilitar autenticación por contraseña e inicio de sesión como root
- Firewall (UFW o iptables/nftables) configurado para permitir
tailscale0y denegar ingreso público innecesario - Escaneo externo con nmap muestra todos los puertos
filteredoclosed -
ss -tulpninterno muestra el gateway vinculado solo a127.0.0.1,::1o la IP de Tailscale - Archivos de credenciales con permisos 600 y directorios de configuración privada con permisos 700
- Ejecutar
openclaw security audit --deepy abordar todos los hallazgos - Si usas gestión de Tailscale con OpenClaw, las aprobaciones de ejecución están habilitadas
- Copias de seguridad regulares configuradas (datos de OpenClaw + configuraciones)
Recursos
- Guía de seguridad de OpenClaw
- Integración de Tailscale con OpenClaw
- Referencia CLI de Tailscale Serve
- Tailscale Funnel
- Usar UFW para bloquear un servidor Ubuntu
- Auditoría de seguridad: 512 hallazgos (GitHub Issue)
- Guía de escaneo de red Nmap