Aplica a OpenClaw v2026.2 | Este artículo es adecuado para todos los usuarios de OpenClaw, especialmente aquellos que preparan despliegues en producción o uso en equipo.
TL;DR: El emparejamiento DM previene el acceso no autorizado: "dmPolicy": "pairing". El sandbox aísla operaciones peligrosas: "sandbox": {"mode": "non-main"}. Filtrado de datos sensibles: "security": {"sensitiveData": {"patterns": ["sk-*"]}}. Para acceso remoto usa Tailscale en lugar de exponer puertos públicos. Ejecuta openclaw doctor --security para verificar el estado de seguridad.
Descripción general de riesgos de seguridad
Principales tipos de riesgos
| Tipo de riesgo | Descripción | Consecuencias potenciales |
|---|---|---|
| Acceso no autorizado | Desconocidos pueden usar tu Agent | Abuso de recursos, fuga de privacidad |
| Abuso de permisos | El Agent ejecuta operaciones más allá de lo esperado | Daño a datos, destrucción del sistema |
| Fuga de datos | Información sensible manejada inadecuadamente | Fuga de privacidad, problemas de cumplimiento |
| Ataques de red | Atacantes externos explotan vulnerabilidades | Intrusión al sistema, robo de datos |
| Inyección de Prompt | Instrucciones maliciosas eluden restricciones de seguridad | Operaciones no autorizadas |
Modelo de seguridad
flowchart TB
subgraph Exterior["Capa de red"]
FW[Firewall]
TLS[HTTPS/TLS]
end
subgraph Medio["Control de acceso"]
DM[Emparejamiento DM]
WL[Lista blanca]
AUTH[Autenticación]
end
subgraph Interior["Control de ejecución"]
SBX[Sandbox]
PERM[Permisos]
AUDIT[Auditoría]
end
subgraph Nucleo["Agent"]
AG[Núcleo del Agent]
end
Exterior --> Medio --> Interior --> Nucleo
Mecanismo de emparejamiento DM
¿Qué es el emparejamiento DM?
El emparejamiento DM (Direct Message) es un mecanismo de protección que requiere que los nuevos usuarios completen el emparejamiento antes de poder conversar con el Agent.
Flujo de emparejamiento
sequenceDiagram
participant S as Desconocido
participant B as Bot
participant G as Gateway
participant O as Propietario
S->>B: Envía mensaje "Hola"
B->>G: Mensaje recibido
G->>G: Verificar estado de emparejamiento
G-->>B: No emparejado, generar código
B-->>S: "Por favor empareja: código ABC123"
S->>O: Comunica el código al propietario
O->>G: openclaw pairing approve telegram ABC123
G->>G: Añadir a lista blanca
G-->>S: Emparejamiento exitoso
S->>B: Envía mensaje "Hola"
B-->>S: Respuesta normal
Configurar emparejamiento DM
{
"channels": {
"telegram": {
"botToken": "your_token",
"dmPolicy": "pairing"
},
"whatsapp": {
"dmPolicy": "pairing"
},
"discord": {
"dmPolicy": "pairing"
}
}
}
Modos de emparejamiento
| Modo | Descripción | Nivel de seguridad | Caso de uso |
|---|---|---|---|
pairing |
Requiere código de emparejamiento | ⭐⭐⭐⭐ | Uso personal (predeterminado) |
open |
Cualquiera puede usar | ⭐ | Servicio público |
whitelist |
Solo usuarios en lista blanca | ⭐⭐⭐⭐⭐ | Alta seguridad requerida |
Gestión de emparejamiento
# Ver solicitudes de emparejamiento pendientes
openclaw pairing list
# Ejemplo de salida:
# Channel Code User Created
# telegram ABC123 @stranger 2026-02-26 10:30:00
# discord XYZ789 user#1234 2026-02-26 10:35:00
# Aprobar emparejamiento
openclaw pairing approve telegram ABC123
# Rechazar emparejamiento
openclaw pairing reject telegram ABC123
# Ver usuarios emparejados
openclaw pairing show telegram
Configuración de lista blanca
{
"channels": {
"telegram": {
"dmPolicy": "open",
"allowFrom": [
123456789,
987654321
]
},
"whatsapp": {
"dmPolicy": "open",
"allowFrom": [
"+8613800138000",
"+8613800138001"
]
}
}
}
Obtener ID de usuario
# Telegram: envía un mensaje a @userinfobot
# Discord: usa el comando /id en un canal o consulta el perfil del usuario
# WhatsApp: obtén el número desde la información de contacto
Modo sandbox
¿Qué es el sandbox?
El sandbox es un mecanismo de aislamiento que limita el alcance de las operaciones del Agent, previniendo modificaciones accidentales o maliciosas al sistema.
Modos de sandbox
| Modo | Descripción | Caso de uso |
|---|---|---|
off |
Sin sandbox, confianza total | Sesión principal, entorno confiable |
non-main |
Sandbox activado para sesiones no principales | Multiusuario, uso compartido en equipo |
always |
Sandbox siempre activado | Entorno no confiable, servicio público |
Configurar sandbox
{
"agents": {
"defaults": {
"sandbox": {
"mode": "non-main",
"allowlist": ["read", "write", "edit", "bash"],
"denylist": ["browser", "canvas", "nodes"],
"container": {
"image": "openclaw/sandbox:latest",
"timeout": 30000,
"memory": "512m",
"cpu": "0.5"
}
}
}
}
}
Control de permisos de herramientas
{
"agents": {
"defaults": {
"sandbox": {
"mode": "non-main",
"allowlist": [
"read",
"write",
"edit",
"bash",
"web_search",
"sessions_list",
"sessions_history",
"sessions_send"
],
"denylist": [
"browser",
"canvas",
"nodes",
"cron",
"discord",
"gateway"
]
}
}
}
}
Permisos del sistema de archivos
{
"agents": {
"defaults": {
"permissions": {
"filesystem": {
"read": ["~/workspace", "~/documents"],
"write": ["~/workspace/output"],
"deny": ["~/.ssh", "~/.gnupg", "~/.openclaw/credentials"]
}
}
}
}
}
Permisos de red
{
"agents": {
"defaults": {
"permissions": {
"network": {
"outbound": {
"allow": [
"api.anthropic.com",
"api.openai.com",
"github.com"
],
"deny": ["*"]
}
}
}
}
}
}
Permisos Elevated
¿Qué son los permisos Elevated?
Los permisos Elevated son un mecanismo de elevación temporal de permisos, utilizado para operaciones que requieren privilegios más altos.
Configurar permisos Elevated
{
"agents": {
"defaults": {
"elevatedAccess": {
"enabled": true,
"allowlist": [123456789, 987654321],
"requireConfirmation": true,
"timeout": 300000
}
}
}
}
Usar permisos Elevated
# Solicitar elevación de permisos en el chat
/elevated on
# Ejecutar operaciones que requieren permisos elevados
# ...
# Desactivar permisos elevados
/elevated off
Manejo de datos sensibles
Tipos de información sensible
| Tipo | Ejemplo | Tratamiento |
|---|---|---|
| API Keys | sk-ant-xxx, sk-xxx |
No registrar, no mostrar |
| Contraseñas | Contraseñas de inicio de sesión, de base de datos | No almacenar, no transmitir |
| Tokens | OAuth token, Session token | Almacenamiento cifrado |
| Información personal | DNI, tarjeta bancaria | No registrar, anonimizar |
Configurar filtrado de información sensible
{
"security": {
"sensitiveData": {
"patterns": [
"sk-[a-zA-Z0-9]{20,}",
"xox[baprs]-[a-zA-Z0-9-]+",
"[0-9]{15,19}",
"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}"
],
"redact": true,
"log": false
}
}
}
Almacenamiento de credenciales
# Ubicación de almacenamiento de credenciales
~/.openclaw/credentials/
# Almacenamiento cifrado
# OpenClaw utiliza el llavero del sistema para cifrar credenciales sensibles
Gestión de credenciales
# Ver credenciales almacenadas
openclaw credentials list
# Ejemplo de salida:
# Name Type Created
# telegram-bot api_key 2026-02-20
# gmail-oauth oauth 2026-02-21
# Eliminar credencial
openclaw credentials delete telegram-bot
# Exportar credenciales (cifradas)
openclaw credentials export --output credentials.enc
# Importar credenciales
openclaw credentials import --input credentials.enc
Seguridad de red
Configuración de enlace
{
"gateway": {
"bind": "loopback", // Solo acceso local
"port": 18789,
"tls": {
"enabled": false
}
}
}
| Opción de enlace | Descripción | Nivel de seguridad |
|---|---|---|
loopback |
Solo acceso local | ⭐⭐⭐⭐⭐ |
private |
Acceso desde red privada | ⭐⭐⭐⭐ |
all |
Acceso desde todas las interfaces | ⭐ |
Configuración de Tailscale
{
"gateway": {
"tailscale": {
"mode": "serve", // serve o funnel
"resetOnExit": true
},
"auth": {
"mode": "password",
"allowTailscale": true
}
}
}
Configuración de autenticación
{
"gateway": {
"auth": {
"mode": "password",
"password": "your-secure-password",
"sessionTimeout": 3600000
}
}
}
Auditoría y registros
Registro de operaciones
{
"logging": {
"level": "info",
"audit": {
"enabled": true,
"events": [
"tool.invoke",
"session.create",
"session.reset",
"pairing.approve",
"pairing.reject",
"elevated.enable",
"elevated.disable"
],
"retention": 30
}
}
}
Ver registros de auditoría
# Ver registros de auditoría
openclaw logs --type audit
# Ejemplo de salida:
# [2026-02-26 10:30:00] INFO tool.invoke session=main tool=bash command="ls -la"
# [2026-02-26 10:30:05] INFO pairing.approve channel=telegram code=ABC123 user=123456789
# [2026-02-26 10:31:00] INFO elevated.enable session=telegram:user:123456789
# Filtrar eventos específicos
openclaw logs --type audit --filter "tool.invoke"
# Por rango de fechas
openclaw logs --type audit --from 2026-02-01 --to 2026-02-28
Monitoreo de uso
# Ver uso
openclaw usage --today
# Ejemplo de salida:
# Date: 2026-02-26
# Requests: 128
# Tokens In: 125,000
# Tokens Out: 45,000
# Cost: $2.10
# Top Tools: bash(45), read(32), write(18)
# Detección de anomalías
openclaw usage --alerts
# Ejemplo de salida:
# ⚠️ Alta actividad detectada: más de 1000 solicitudes en 1 hora
# ⚠️ Patrón de herramientas inusual: comandos bash a directorios sensibles
Lista de verificación de seguridad
Seguridad básica
- Habilitar emparejamiento DM o lista blanca
- Configurar modo sandbox
- Establecer permisos de herramientas razonables
- Habilitar registro de auditoría de operaciones
- Rotar API Keys periódicamente
Seguridad avanzada
- Configurar restricciones de permisos del sistema de archivos
- Establecer lista blanca de red saliente
- Habilitar filtrado de información sensible
- Configurar confirmación de permisos Elevated
- Revisar periódicamente los usuarios emparejados
Seguridad empresarial
- Usar aislamiento con sandbox Docker
- Configurar red privada Tailscale
- Habilitar HTTPS/TLS
- Configurar alertas de uso
- Auditoría de seguridad periódica
Diagnóstico de seguridad
# Ejecutar diagnóstico de seguridad
openclaw doctor --security
# Ejemplo de salida:
# ✅ DM Pairing: Enabled
# ✅ Sandbox Mode: non-main
# ⚠️ File Permissions: Some directories not restricted
# ✅ Network Outbound: Restricted to allowlist
# ⚠️ Elevated Access: No confirmation required
# ✅ Audit Logging: Enabled
# ✅ Credentials: Encrypted
# Recomendaciones:
# - Restringir acceso a archivos solo a ~/workspace
# - Habilitar confirmación de acceso elevado
Resumen
La configuración de seguridad es una etapa importante del despliegue de OpenClaw:
- Emparejamiento DM: Previene el acceso no autorizado
- Modo sandbox: Limita el alcance de las operaciones
- Control de permisos: Permisos granulares de herramientas y archivos
- Datos sensibles: Filtrado y protección de información sensible
- Seguridad de red: Configuración de enlace y autenticación
- Registro de auditoría: Seguimiento y monitoreo de operaciones
Resumen de este artículo:
- Comprendimos los principales riesgos de seguridad y mecanismos de protección
- Dominamos la configuración de emparejamiento DM y lista blanca
- Aprendimos el modo sandbox y control de permisos
- Entendimos el manejo de datos sensibles y configuración de red
- Dominamos el registro de auditoría y la lista de verificación de seguridad
Registro de actualizaciones:
- 2026-02-26: Publicación inicial, basada en OpenClaw v2026.2
Navegación de la serie:
- ← Anterior: Enrutamiento multi-Agent y aislamiento de sesiones
- → Siguiente: Soluciones de despliegue remoto