4.5 KiB
03 - Hebra: Seguridad y Red
Referencia canónica:
adn/00_indice.md
Esta hebra gobierna los protocolos de seguridad de red, gestión de secretos y autorización SSH.
1. Protocolo de Seguridad de Red (Hombre Muerto)
- Problemática: La administración remota del servidor implica el riesgo de desconexión total ante cambios erróneos en la configuración de red.
- Directiva: Toda modificación de red debe incluir un mecanismo de reversión automática.
- Implementación:
- Usar scripts con temporizador ("Dead Man's Switch").
- Flujo:
- Aplicar cambios temporalmente.
- Esperar confirmación explícita del usuario durante un tiempo prudencial (5 minutos).
- Si no hay confirmación: Revertir cambios inmediatamente y restaurar estado anterior.
- Si hay confirmación: Hacer cambios persistentes.
2. Gestión de Secretos — ns8-candados
Herramienta unificada de seguridad: tools/ns8-candados/ns8-candados.rb
2.1 Prohibición de Texto Plano
La Inteligencia Artificial operante tiene expresamente prohibido solicitar contraseñas administrativas, tokens o claves privadas al operador, así como también plasmarlas en logs, comandos literales temporales o en la bitácora.
2.2 Componentes
| Archivo | Ubicación | Git | Descripción |
|---|---|---|---|
ns8-candados.rb |
tools/ns8-candados/ |
✅ | Script Ruby unificado: cifrado, bóveda y autorización SSH. |
.boveda.json |
tools/ns8-candados/ |
❌ | Payloads AES-256-GCM cifrados. |
.master.key |
Raíz del proyecto | ❌ | Clave maestra de la bóveda (nunca en Git). |
2.3 Comandos Disponibles
ruby tools/ns8-candados/ns8-candados.rb <comando> [args]
| Comando | Descripción |
|---|---|
abrir |
Autorizar SSH (cargar llave con passphrase, sin timeout). |
encrypt <texto> |
Cifrar texto plano → token. |
decrypt <token> |
Descifrar token → texto plano. |
get <clave> |
Obtener secreto de la bóveda (salida limpia para pipelines). |
set <clave> |
Guardar secreto (input interactivo sin eco). |
rm <clave> |
Eliminar secreto de la bóveda. |
list |
Listar claves disponibles. |
2.4 Consumo Efímero (IA)
# Obtener password para uso en comando remoto
PASS=$(ruby tools/ns8-candados/ns8-candados.rb get admindasu)
sshpass -p "$PASS" ssh -J root@10.0.10.205 admindasu@10.0.100.12 "cmd"
2.5 Payloads en la Bóveda
| Clave | Propósito |
|---|---|
sudo |
Contraseña de sudo/root del entorno local. |
rsa |
Passphrase de la llave SSH (~/.ssh/id_rsa). |
domain_admin |
Credenciales del Administrador del dominio dasuten.utnlr. |
admindasu |
Credenciales del usuario admindasu (Domain Admin). |
win_domain |
Contraseña de monlaricardo en dominio UTNLARIOJA (SSH a VMs Windows). |
3. Autorización SSH
3.1 Problema
La llave SSH del operador está protegida con passphrase. El agente SSH no retiene las identidades entre sesiones.
3.2 Solución: ns8-candados.rb abrir
El operador ejecuta el comando interactivamente para cargar su identidad SSH:
ruby tools/ns8-candados/ns8-candados.rb abrir
Las identidades permanecen activas mientras dure la sesión del agente SSH (sin timeout artificial).
3.3 Matriz de Acceso SSH
| Tipo | Usuario | Auth | Ejemplo |
|---|---|---|---|
| Hipervisores (pmox1/2/3) | root |
Llave RSA (passphrase rsa) |
ssh root@10.0.10.201 |
| VMs/CTs Linux | rmonla |
Llave RSA (desplegada) + sudo (sudo) |
ssh rmonla@10.0.10.4 |
| VMs Windows | monlaricardo |
Password (win_domain) + OpenSSH |
ssh monlaricardo@10.0.10.200 |
| XenServer (xen1) | rmonla |
Password (sudo) |
ssh rmonla@10.0.10.23 |
Despliegue de llaves: La llave pública de srv-ns8 (~/.ssh/id_rsa.pub) fue desplegada a todos los nodos Linux via ssh-copy-id rmonla@<ip> el 28/02/2026.
Uso programático (ej: desde ns8-bkps):
# 1. Cargar llave SSH
ruby tools/ns8-candados/ns8-candados.rb abrir
# 2. Acceder a hipervisor
ssh root@10.0.10.201 "qm list"
# 3. Acceder a VM Linux (con sudo)
ssh rmonla@10.0.10.4 "sudo shutdown -h now"
4. Archivos Protegidos (.gitignore)
Los siguientes artefactos nunca deben ser rastreados por Git:
.master.key(clave maestra de la bóveda)tools/ns8-candados/.boveda.json(payloads cifrados).agent_token(token legacy, obsoleto)*.key(claves privadas)tmp/(artefactos transitorios de la IA)