Seguridad de agentes remotos¶
Buenas prácticas y configuraciones de seguridad para proteger tus agentes remotos.
Modelo de seguridad¶
graph LR
A[Nexus Cloud] -->|TLS 1.3| B[Agente Remoto]
B -->|Autenticación| C[Token]
B -->|Autorización| D[Capacidades]
B -->|Aislamiento| E[Sandboxing]
Comunicación segura¶
TLS/SSL¶
Toda comunicación entre Nexus y el agente usa TLS 1.3:
- Certificados validados
- Perfect Forward Secrecy
- Sin protocolos obsoletos
Verificar configuración¶
# Ver estado de conexión
docker logs nexus-agent | grep "TLS"
# Output esperado:
# [INFO] TLS connection established (TLS 1.3)
# [INFO] Certificate verified: *.nexus.app
Gestión de tokens¶
Rotación de tokens¶
Rota tokens periódicamente:
- En Nexus, ve a Agentes remotos
- Selecciona el agente
- Haz clic en Rotar token
- Actualiza el token en tu configuración
- Reinicia el agente
Tokens con alcance limitado¶
Crea tokens con permisos específicos:
┌─────────────────────────────────────────────────────────────────┐
│ Permisos del token │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ☑️ Ejecutar tareas │
│ ☑️ Reportar estado │
│ ☐ Acceso a secrets │
│ ☐ Modificar configuración │
│ │
│ Proyectos permitidos: │
│ ☑️ Proyecto A │
│ ☑️ Proyecto B │
│ ☐ Proyecto C │
│ │
└─────────────────────────────────────────────────────────────────┘
Aislamiento de ejecución¶
Sandboxing con contenedores¶
Cada trabajo se ejecuta en un contenedor aislado:
# config.yaml
execution:
isolation: container
container:
image: nexusai/sandbox:latest
network: none # Sin acceso a red por defecto
readonly_rootfs: true
cap_drop:
- ALL
cap_add:
- NET_BIND_SERVICE # Solo si necesario
Límites de recursos¶
Restricciones de red¶
Firewall¶
Configura reglas de firewall:
# Solo permite conexión saliente a Nexus
iptables -A OUTPUT -d api.nexus.app -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -j DROP
# O con UFW
ufw allow out to api.nexus.app port 443
ufw default deny outgoing
Redes internas permitidas¶
security:
allowed_networks:
- "10.0.0.0/8" # Red interna
- "172.16.0.0/12" # Docker
blocked_ips:
- "0.0.0.0/8" # Invalid
- "169.254.0.0/16" # Link-local
Comandos restringidos¶
Lista negra de comandos¶
security:
blocked_commands:
# Comandos peligrosos
- "rm -rf /"
- "rm -rf /*"
- "dd if=/dev/zero"
- ":(){ :|:& };:" # Fork bomb
# Comandos de sistema
- "shutdown"
- "reboot"
- "init"
# Modificación de red
- "iptables"
- "route"
Lista blanca (más seguro)¶
security:
allowed_commands:
- "psql" # PostgreSQL
- "mysql" # MySQL
- "curl" # HTTP requests
- "jq" # JSON processing
- "python" # Scripts
Secrets¶
Nunca en variables de entorno¶
# ❌ MAL
environment:
DB_PASSWORD: "secreto123"
# ✅ BIEN - usar secrets manager
secrets:
- name: DB_PASSWORD
source: vault
path: database/prod/password
Integración con Vault¶
secrets:
provider: hashicorp-vault
config:
address: https://vault.internal:8200
auth_method: kubernetes
role: nexus-agent
Auditoría¶
Logs de seguridad¶
logging:
security_events:
level: info
destination:
- syslog
- /var/log/nexus-agent/security.log
events:
- authentication
- authorization
- command_execution
- network_access
Eventos registrados¶
| Evento | Descripción |
|---|---|
auth.success |
Conexión autenticada |
auth.failure |
Fallo de autenticación |
exec.start |
Inicio de ejecución |
exec.command |
Comando ejecutado |
exec.blocked |
Comando bloqueado |
network.request |
Petición de red |
Alertas de seguridad¶
Configura alertas para eventos sospechosos:
┌─────────────────────────────────────────────────────────────────┐
│ Alertas de seguridad │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ☑️ Múltiples fallos de autenticación │
│ ☑️ Comandos bloqueados ejecutados │
│ ☑️ Acceso a redes no permitidas │
│ ☑️ Uso excesivo de recursos │
│ ☑️ Desconexión prolongada │
│ │
│ Notificar a: │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ security@empresa.com, #seguridad (Slack) │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Checklist de seguridad¶
Antes de poner en producción:
- [ ] TLS habilitado y verificado
- [ ] Token con permisos mínimos necesarios
- [ ] Sandboxing configurado
- [ ] Límites de recursos establecidos
- [ ] Comandos peligrosos bloqueados
- [ ] Redes restringidas
- [ ] Logs de auditoría activos
- [ ] Alertas configuradas
- [ ] Plan de rotación de tokens
Siguiente: Estadísticas - Monitoreo y métricas.