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

4.3 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: 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).

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 Pendiente OpenSSH (por instalar)

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)