
🦞 Parche de endurecimiento de seguridad para Clawdbot/Moltbot. Detecta y corrige automáticamente las puertas de enlace expuestas.
Actualmente hay más de 900 instancias de Clawdbot/Moltbot expuestas en Internet (visibles en Shodan, puerto 18789) sin autenticación. Esto permite que cualquiera pueda:
| Riesgo | Impacto |
|---|---|
| Acceder a claves API | Robar credenciales de OpenAI, Anthropic y otras |
| Ejecutar comandos | Ejecutar comandos arbitrarios de shell en tu máquina |
| Controlar el navegador | Tomar el control de tu sesión de navegación |
| Leer correos | Acceder a Gmail, calendario, contactos |
| Leer chats | Ver todo tu historial de conversaciones |
| Secuestrar el bot | Enviar mensajes en tu nombre |
El problema no es un error de software, es una configuración incorrecta. Los usuarios que cambian gateway.bind a "0.0.0.0" o usan Docker con -p 18789:18789 sin la autenticación adecuada quedan completamente expuestos.
ClawdGuard lo corrige.
cargo install clawdguard
# Ejecutar
clawdguard
# Clonar el repositorio
git clone https://github.com/fadidevv/clawdguard.git
cd clawdguard
# Compilar (la primera vez tarda ~2 min)
cargo build --release
# Ejecutar
./target/release/clawdguard
# Clonar el repositorio
git clone https://github.com/fadidevv/clawdguard.git
cd clawdguard
# Construir la imagen (~3-5 min la primera vez)
docker build --no-cache -t clawdguard .
# Ejecutar (monta tu directorio de configuración)
docker run -v ~/.moltbot:/root/.moltbot clawdguard
# O para Clawdbot antiguo:
docker run -v ~/.clawdbot:/root/.clawdbot clawdguard
clawdguard
¡Eso es todo! ClawdGuard:
ClawdGuard genera un token seguro. ¡Guárdalo!
╭────────────────────────────────────────────────────────────────────╮
│ ⚠️ IMPORTANTE: ¡Guarda tu nuevo token de pasarela! │
│ │
│ clwd_a8f2k9x3m1p7v4q2b6n8... │
│ │
│ Lo necesitarás para conectarte desde la UI de Control o la CLI. │
╰────────────────────────────────────────────────────────────────────╯
Documentación completa de Docker para quienes no tengan Rust instalado.
# 1. Clonar el repositorio
git clone https://github.com/fadidevv/clawdguard.git
cd clawdguard
# 2. Construir la imagen (~3-5 min la primera vez)
docker build --no-cache -t clawdguard .
# 3. Ejecutar el escaneo (monta tu directorio de configuración)
# Para Moltbot (más reciente):
docker run -v ~/.moltbot:/root/.moltbot clawdguard
# Para Clawdbot (antiguo):
docker run -v ~/.clawdbot:/root/.clawdbot clawdguard
# Con modo detallado
docker run -v ~/.moltbot:/root/.moltbot clawdguard --verbose
# Solo escanear (sin correcciones)
docker run -v ~/.moltbot:/root/.moltbot clawdguard --scan-only
# Modo automático (sin avisos)
docker run -v ~/.moltbot:/root/.moltbot clawdguard --auto
# Mostrar ayuda
docker run clawdguard --help
Sintaxis más simple usando docker-compose:
# Ejecutar con docker-compose
docker-compose run clawdguard
# Con modo detallado
docker-compose run clawdguard --verbose
# Solo escanear
docker-compose run clawdguard --scan-only
# Modo automático
docker-compose run clawdguard --auto
| Comando | Descripción |
|---|---|
docker build --no-cache -t clawdguard . | Construir la imagen |
docker run clawdguard --help | Mostrar ayuda |
docker run -v ... clawdguard | Ejecutar escaneo |
docker run -v ... clawdguard --scan-only | Solo escanear |
docker run -v ... clawdguard --auto | Corrección automática |
docker run -v ... clawdguard --verbose | Modo detallado |
docker-compose run clawdguard | Ejecutar con compose |
| Montaje | Propósito |
|---|---|
~/.moltbot:/root/.moltbot | Tu directorio de configuración de Moltbot (más reciente) |
~/.clawdbot:/root/.clawdbot | Tu directorio de configuración de Clawdbot (antiguo) |
./results:/app/results | Guardar resultados localmente |
# Crear alias para un uso más sencillo (usa tu directorio de configuración)
alias clawdguard='docker run -v ~/.moltbot:/root/.moltbot clawdguard'
# O para Clawdbot antiguo:
alias clawdguard='docker run -v ~/.clawdbot:/root/.clawdbot clawdguard'
# Luego simplemente ejecuta:
clawdguard
clawdguard --scan-only
clawdguard --verbose
clawdguard [OPCIONES]
OPCIONES:
--scan-only Solo escanear en busca de problemas, no aplicar correcciones
--auto Aplicar todas las correcciones sin avisos de confirmación
--backup-dir <DIR> Directorio personalizado para archivos de respaldo
--skip-firewall Omitir la adición de reglas de firewall
--skip-restart Omitir el reinicio del servicio de pasarela
--token <TOKEN> Usar un token específico en lugar de generar uno
-v, --verbose Mostrar salida detallada
--json Mostrar resultados en JSON (para scripting)
-h, --help Mostrar ayuda
-V, --version Mostrar versión
# Uso básico: escanear, corregir, verificar
clawdguard
# Solo escanear (no corregir nada)
clawdguard --scan-only
# Corregir todo automáticamente (sin avisos)
clawdguard --auto
# Usar tu propio token
clawdguard --token "my-secure-token-here"
# Salida detallada para solución de problemas
clawdguard --verbose
# Salida JSON para scripting
clawdguard --json
# Combinar opciones
clawdguard --auto --skip-firewall --verbose
# Directorio de respaldo personalizado
clawdguard --backup-dir /tmp/backups
| Configuración | Antes (Inseguro) | Después (Seguro) |
|---|---|---|
gateway.bind | "0.0.0.0" / "lan" / "all" | "loopback" |
gateway.auth.mode | "none" / faltante | "token" |
gateway.auth.token | faltante | Token seguro generado |
discovery.mdns.mode | "full" | "minimal" |
| Permisos de archivo | 644 / 755 | 600 |
ClawdGuard calcula una puntuación de riesgo del 0 al 10:
| Puntuación | Nivel | Significado |
|---|---|---|
| 0-3 | 🟢 BAJO | Problemas menores o ya seguro |
| 4-6 | 🟡 MEDIO | Algunas preocupaciones de seguridad |
| 7-10 | 🔴 CRÍTICO | Expuesto a Internet, corregir de inmediato |
Cálculo de la puntuación de riesgo:
🦞 ClawdGuard
Endurecimiento de seguridad para Clawdbot/Moltbot
v1.0.0
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ℹ Presiona Ctrl+C para cancelar en cualquier momento
[1/4] 🔍 Detectando instalación...
✓ Config: ~/.clawdbot/clawdbot.json
✓ Servicio: bot.molt.gateway (ejecutándose, PID 1234)
✓ Puerto 18789 activo
[2/4] ⚠️ Analizando riesgos de seguridad...
╭──────────────────┬─────────────────────────┬──────────╮
│ Problema │ Valor actual │ Severidad│
├──────────────────┼─────────────────────────┼──────────┤
│ Enlace de pasarela│ 0.0.0.0 │ CRÍTICO │
│ Autenticación │ none │ CRÍTICO │
│ Difusión mDNS │ full │ MEDIO │
╰──────────────────┴─────────────────────────┴──────────╯
Puntuación de riesgo: 9/10 🔴 CRÍTICO
⚠ Esto modificará tu configuración para corregir problemas de seguridad.
ℹ Se creará una copia de seguridad antes de cualquier cambio.
¿Proceder con las correcciones? [s/N]: s
[3/4] 🔧 Aplicando correcciones...
✓ Copia de seguridad: ~/.clawdbot/clawdbot.json.backup.20260128_143022
✓ Establecido gateway.bind = "loopback" (era: "0.0.0.0")
✓ Establecido gateway.auth.mode = "token" (era: "none")
✓ Establecido gateway.auth.token = <generado>
✓ Permisos de archivo corregidos (600)
Token generado: clwd_a8f2k9x3m1p7v4q2b6n8...
[4/4] ✅ Verificando correcciones...
✓ Servicio de pasarela reiniciado
✓ Puerto 18789 ya no es accesible externamente
✓ Pasarela responde en localhost
✓ Ahora se requiere autenticación
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
╭────────────────────────────────────────────────────────────────────╮
│ │
│ 🎉 ¡ÉXITO! Tu Clawdbot/Moltbot ahora está seguro. │
│ │
╰────────────────────────────────────────────────────────────────────╯
clawdguard --json
{"status": "fixed", "token": "clwd_a8f2k9x3m1p7v4q2b6n8...", "backup": "~/.clawdbot/clawdbot.json.backup.20260128_143022"}
Presiona Ctrl+C en cualquier momento durante el escaneo para detenerlo de forma segura.
[2/4] ⚠️ Analizando riesgos de seguridad...
^C
⚠ ¡Interrumpido! Saliendo...
No se realiza ningún cambio hasta que confirmes, por lo que interrumpir siempre es seguro.
# Añade a tu perfil de shell (~/.bashrc, ~/.zshrc, etc.)
export CLAWDBOT_GATEWAY_TOKEN="clwd_tu_token_aqui"
Si necesitas acceso remoto, usa uno de estos métodos seguros:
| Método | Comando |
|---|---|
| Tailscale (Recomendado) | tailscale serve --bg 18789 |
| Túnel SSH | ssh -L 18789:localhost:18789 tu-servidor |
| Túnel Cloudflare | cloudflared tunnel --url http://localhost:18789 |
Nunca vuelvas a cambiar gateway.bind a "0.0.0.0" ni expongas el puerto directamente.
Asegúrate de:
~/.moltbot/ o ~/.clawdbot/)~/.moltbot/moltbot.json o ~/.clawdbot/clawdbot.jsonIntenta manualmente:
clawdbot gateway restart
# o
moltbot gateway restart
clwd_)Asegúrate de que tu directorio de configuración sea legible:
# Para Moltbot (más reciente)
chmod 755 ~/.moltbot
chmod 644 ~/.moltbot/moltbot.json
# Para Clawdbot (antiguo)
chmod 755 ~/.clawdbot
chmod 644 ~/.clawdbot/clawdbot.json
| Plataforma | Estado | Administrador de servicios |
|---|---|---|
| macOS | ✅ Completo | launchd |
| Linux | ✅ Completo | systemd (usuario) |
| Windows | ⚠️ WSL2 | Ejecutar dentro de WSL2 |
┌─────────────────────────────────────────────────────────────────┐
│ ClawdGuard v1.0 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ DETECTAR │ → │ ANALIZAR │ → │ PARCHEAR │ → │ VERIFICAR │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ Encuentra config Verifica riesg Corrige config Confirma │
│ Encuentra servicio Puntúa peligro Genera token seguro │
│ Encuentra proceso Lista problemas Corrige permis Prueba │
│ │
└─────────────────────────────────────────────────────────────────┘
clawdguard/
├── Cargo.toml # Dependencias
├── Dockerfile # Construcción Docker
├── docker-compose.yml # Docker compose
├── .dockerignore
├── README.md
├── LICENSE
├── .gitignore
├── assets/
│ └── screenshot.png # Captura de pantalla para el README
├── src/
│ ├── main.rs # Punto de entrada de la CLI
│ ├── lib.rs # Raíz de la biblioteca
│ ├── detect/ # Detección de instalación
│ │ ├── mod.rs
│ │ ├── config.rs # Detección de archivo de configuración
│ │ ├── process.rs # Detección de procesos
│ │ └── service.rs # Detección de servicios (launchd/systemd)
│ ├── analyze/ # Análisis de seguridad
│ │ ├── mod.rs
│ │ ├── config_risk.rs
│ │ ├── network.rs # Comprobación de exposición de puertos
│ │ └── permissions.rs
│ ├── patch/ # Parcheo de configuración
│ │ ├── mod.rs
│ │ ├── config.rs
│ │ ├── firewall.rs
│ │ └── token.rs # Generación de tokens seguros
│ ├── verify/ # Verificación de correcciones
│ │ ├── mod.rs
│ │ ├── port_check.rs
│ │ └── service.rs
│ └── output/
│ ├── mod.rs
│ └── printer.rs # Salida CLI colorida
└── tests/
└── integration.rs
Opción A: Nativo (Rust)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh)Opción B: Docker
Nativo:
# Clonar el repositorio
git clone https://github.com/fadidevv/clawdguard.git
cd clawdguard
# Compilar debug (compilación más rápida)
cargo build
# Compilar release (optimizado)
cargo build --release
Docker:
# Clonar el repositorio
git clone https://github.com/fadidevv/clawdguard.git
cd clawdguard
# Construir la imagen
docker build --no-cache -t clawdguard .
# Ejecutar todas las pruebas
cargo test
# Ejecutar con salida
cargo test -- --nocapture
# Formatear código
cargo fmt
# Ejecutar linter
cargo clippy
# Verificar sin compilar
cargo check
¡Las contribuciones son bienvenidas! Por favor:
git checkout -b feature/mejora)cargo test)cargo clippy)cargo fmt)git commit -m 'Añadir mejora')git push origin feature/mejora)Ideas para contribuciones:
Esta herramienta es únicamente para fines de seguridad.
Los autores no se responsabilizan por el mal uso de esta herramienta.
Licencia MIT - consulta el archivo LICENSE para más detalles.
¡Mantente seguro! 🦞🔐