Files
dtic-DIIAA/adn/03_seguridad.md
T

4.6 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:
      1. Aplicar cambios temporalmente.
      2. Esperar confirmación explícita del usuario durante un tiempo prudencial (5 minutos).
      3. Si no hay confirmación: Revertir cambios inmediatamente y restaurar estado anterior.
      4. Si hay confirmación: Hacer cambios persistentes.

2. Gestión de Secretos — ns8-candados

Herramienta unificada de seguridad: adn/tools/seguridad/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 adn/tools/seguridad/ Script Ruby unificado: cifrado, bóveda y autorización SSH.
.boveda.json adn/tools/seguridad/ 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 adn/tools/seguridad/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 adn/tools/seguridad/ns8-candados.rb get admindasu)
sshpass -p "$PASS" ssh -J root@100.116.210.36 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).
srv-dasu:rmonla Credenciales exclusivas del usuario rmonla en el nodo srv-dasu (Linux/PVE).

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 adn/tools/seguridad/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 port 7022 ssh -p 7022 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 adn/tools/seguridad/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)
  • adn/tools/seguridad/.boveda.json (payloads cifrados)
  • .agent_token (token legacy, obsoleto)
  • *.key (claves privadas)
  • tmp/ (artefactos transitorios de la IA)