From 15bcf81183166b6b66c01e20dc11c49d11250e98 Mon Sep 17 00:00:00 2001 From: Ricardo Monla Date: Fri, 10 Apr 2026 19:12:37 -0300 Subject: [PATCH] =?UTF-8?q?[A06]=20Resoluci=C3=B3n=20BUG=20SSH=20Legacy=20?= =?UTF-8?q?en=20info.rb,=20conclusi=C3=B3n=20F1=20de=20Compresi=C3=B3n=20X?= =?UTF-8?q?VA,=20y=20actualizaciones=20de=20m=C3=A9tricas=20y=20planes.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- adn/01_ontologia.md | 14 +- adn/tools/candados/.boveda.json | 5 +- adn/tools/cli/nodos/info.rb | 33 ++- adn/tools/cli/ssh.rb | 87 ++++++- .../A03.P003_Optimizacion_SysAcadWeb.md | 75 ++++++ docs/ambito/dtic-BKPs/A03_dtic-BKPs.md | 1 + .../dtic-DNS/A07.P002_Resolver-DKIM-Gmail.md | 29 ++- .../dtic-DNS/A07.P002_Resolver-DKIM-Gmail.pdf | Bin 0 -> 221403 bytes .../A06.P001_Habilitar_SSH_Legacy.md | 194 ++++++++++++++++ .../A06.P002_Optimizar_Exportacion_XVA.md | 219 ++++++++++++++++++ .../dtic-XenServer/A06_dtic-XenServer.md | 164 +++++++++++++ docs/bitacoras/2026-04-10.md | 30 +++ docs/contexto/IA.md | 3 +- nodos/srv-xen1.md | 24 +- 14 files changed, 855 insertions(+), 23 deletions(-) create mode 100644 docs/ambito/dtic-BKPs/A03.P003_Optimizacion_SysAcadWeb.md create mode 100644 docs/ambito/dtic-DNS/A07.P002_Resolver-DKIM-Gmail.pdf create mode 100644 docs/ambito/dtic-XenServer/A06.P001_Habilitar_SSH_Legacy.md create mode 100644 docs/ambito/dtic-XenServer/A06.P002_Optimizar_Exportacion_XVA.md create mode 100644 docs/ambito/dtic-XenServer/A06_dtic-XenServer.md create mode 100644 docs/bitacoras/2026-04-10.md diff --git a/adn/01_ontologia.md b/adn/01_ontologia.md index b134732d..1bbe8621 100644 --- a/adn/01_ontologia.md +++ b/adn/01_ontologia.md @@ -32,6 +32,8 @@ El ecosistema ADN implementa una jerarquía **Ámbito → Nodos** que agrupa ló | **A02** | `dtic-DIGIs` | Digitalización y Gestión Documental | *ver docs/ambito/dtic-DIGIs/* | | **A03** | `dtic-BKPs` | Backups de servidores | srv-ns8, pve_PMOX3, srvv-maurik | | **A04** | `dtic-DASUTEN` | Sub-ámbito: Departamento de Servicios UTN (gestionado) | srv-dasu, dasu-sql2, dasu-pcv2, dasu-pc | +| **A06** | `dtic-XenServer` | Administración hipervisor Citrix XenServer 7.0 | srv-xen1, srvv-sysacadweb, srvv-maurik | +| **A07** | `dtic-DNS` | Administración DNS de la Facultad | srvv-dns, srv-pmox1 | | `dtic-DIIAA` | (infrastructure root) | Infraestructura física y servicios propios | srv-pmox*, srv-xen1, srvv-* | ### Relaciones @@ -99,12 +101,20 @@ GET /api/entradas?ambito_id=2 ### 🏔️ Citrix XenServer +> **Ámbito asociado:** [**A06 - dtic-XenServer**](../docs/ambito/dtic-XenServer/A06_dtic-XenServer.md) + #### **[srv-xen1](../nodos/srv-xen1.md)** (`10.0.10.23`) *Citrix XenServer 7.0.0 | Xeon E3-1230 (4C) | Hypervisor Legacy* + | VMID | Nodo | IP | Rol | | :--- | :--- | :--- | :--- | -| - | **[srvv-sysacadweb](../nodos/srvv-sysacadweb.md)** | *Interna* | Web SysACAD | -| - | **[srvv-maurik](../nodos/srvv-maurik.md)** | *Desconocida* | Domain Controller | +| - | **[srvv-sysacadweb](../nodos/srvv-sysacadweb.md)** | `10.0.10.12` | Web SysACAD | +| - | **[srvv-maurik](../nodos/srvv-maurik.md)** | `10.0.10.10` | Domain Controller (UTNLARIOJA) | + +**Limitaciones técnicas:** +- OpenSSH 6.6.1 (incompatible con `rsa-sha2`, solo `ssh-rsa` legacy) +- Disco Dom0 limitado (~2.7 GB libre) +- Requiere opciones SSH especiales: `-o PubkeyAcceptedAlgorithms=+ssh-rsa -o HostkeyAlgorithms=+ssh-rsa` ### 🛰️ Nodos Externos / Satélites (DASUTEN) diff --git a/adn/tools/candados/.boveda.json b/adn/tools/candados/.boveda.json index 9d14f4b2..0f13e004 100644 --- a/adn/tools/candados/.boveda.json +++ b/adn/tools/candados/.boveda.json @@ -12,5 +12,6 @@ "deepseek_key": "eyJpdiI6InRCc2IvL3J4SGNsejgvL04iLCJ0YWciOiJBbjRlMTNXNlZzUGhNSWowSUU1a01nPT0iLCJkYXRhIjoiQXR4azk1aU9sb2QydzNwa0FMTHpjVkJKQTIvZU4wY1U2V2crK3NBbVd1UnRmUGh6In0=", "srv-ns8:rmonla": "eyJpdiI6IlJ4cHZkbFpJQWVsTTl3T1YiLCJ0YWciOiJ3WTZGMDEvNHNsZm1wZm5jMEF4Q1lBPT0iLCJkYXRhIjoibFljUHRYTm44bUxvQjhCa2tBPT0ifQ==", "dasu-sql3:Administrador": "eyJpdiI6IlRiMDh3U1N2aVhTcDYzbzciLCJ0YWciOiI5NVNyUDFlMXlrM0dGRlNqUXhLbEt3PT0iLCJkYXRhIjoiVkp2V09zSjczcS96UktTSlZTOFdBdz09In0=", - "srvv-nginx-rm:rmonla": "eyJpdiI6ImFsQnk5UjhLaDFYWHJsWnciLCJ0YWciOiJJaEtCS215ekkwYVdFR0ZHNzFVN0VBPT0iLCJkYXRhIjoiUkcvSS9sMjhoQnFpRmZobFZBPT0ifQ==" -} \ No newline at end of file + "srvv-nginx-rm:rmonla": "eyJpdiI6ImFsQnk5UjhLaDFYWHJsWnciLCJ0YWciOiJJaEtCS215ekkwYVdFR0ZHNzFVN0VBPT0iLCJkYXRhIjoiUkcvSS9sMjhoQnFpRmZobFZBPT0ifQ==", + "srv-xen01:rmonla": "eyJpdiI6ImdURFJuRDNucGpETkxVVjAiLCJ0YWciOiJWdnNzdmRxRGthS0RnUTBWeE1xYUpRPT0iLCJkYXRhIjoiaGszT2lYRkNONVVWakFhQjdnPT0ifQ==" +} diff --git a/adn/tools/cli/nodos/info.rb b/adn/tools/cli/nodos/info.rb index b528d013..ec8c2b88 100644 --- a/adn/tools/cli/nodos/info.rb +++ b/adn/tools/cli/nodos/info.rb @@ -22,7 +22,9 @@ module ADN puerto_ssh: detectar_puerto_ssh(contenido) || 22, usuario: detectar_usuario(contenido), clave_boveda: detectar_clave_boveda(contenido), - auth_type: detectar_auth_type(contenido) + auth_type: detectar_auth_type(contenido), + clave_ssh: detectar_clave_ssh(contenido), + ssh_opts: detectar_ssh_opts(contenido) } end @@ -100,8 +102,8 @@ module ADN # | Sistema Operativo | ... | o - **Sistema Operativo**: ... if contenido =~ /(?:\||\-)\s*\*\*?(?:Sistema Operativo|SO|OS)\*\*?\s*[:\|]\s*([^\|\n]+)/i so_raw = $1.strip + return :linux if so_raw =~ /linux|ubuntu|debian|centos|rocky|proxmox|xen/i return :windows if so_raw =~ /windows|server|win/i - return :linux if so_raw =~ /linux|ubuntu|debian|centos|rocky|proxmox/i end :linux # Default end @@ -143,6 +145,11 @@ module ADN end def self.detectar_auth_type(contenido) + # Detectar 'RSA Legacy' para XenServer 7.0 (OpenSSH 6.6.1) + if contenido =~ /RSA Legacy/i + return :rsa_legacy + end + # Detectar otros tipos de autenticación if contenido =~ /\*\*SSH\*\*:.*\((Passphrase|Password|RSA)/i match = $1.downcase return :passphrase if match == 'passphrase' @@ -151,5 +158,27 @@ module ADN end :password # Default para VMs Windows end + + # Detectar clave SSH específica para el nodo + def self.detectar_clave_ssh(contenido) + # Buscar en formato: **Clave SSH**: `~/.ssh/id_rsa_xen` + if contenido =~ /\*\*Clave SSH\*\*:\s*`?([~a-zA-Z0-9_\-\.\/]+)`?/i + return $1 + end + # Fallback: buscar en línea de comando SSH + if contenido =~ /ssh -i ([~a-zA-Z0-9_\-\.\/]+)\s/i + return $1 + end + nil + end + + # Detectar opciones SSH especiales (para servidores legacy) + def self.detectar_ssh_opts(contenido) + # Buscar opciones -o PubkeyAcceptedAlgorithms o -o HostkeyAlgorithms + if contenido =~ /(-o PubkeyAcceptedAlgorithms=[^\s`]+)\s+(-o HostkeyAlgorithms=[^\s`]+)/i + return "#{$1} #{$2}" + end + nil + end end end diff --git a/adn/tools/cli/ssh.rb b/adn/tools/cli/ssh.rb index d7a3e7f3..36d536a6 100644 --- a/adn/tools/cli/ssh.rb +++ b/adn/tools/cli/ssh.rb @@ -122,8 +122,8 @@ module ADN contexto_str = contexto.any? ? " [#{contexto.join(' ')}]" : "" @logger.info("Conectando a #{nodo_nombre}#{contexto_str} (#{config[:ip]}:#{config[:puerto_ssh]})") - # Autorizar candados - autorizar_candados + # Autorizar candados solo si es necesario (password o passphrase) + autorizar_candados unless config[:auth_type] == :rsa_legacy case config[:auth_type] when :passphrase @@ -132,16 +132,26 @@ module ADN ejecutar_con_password(nodo_nombre, config, comando_remoto) when :rsa ejecutar_con_rsa(nodo_nombre, config, comando_remoto) + when :rsa_legacy + ejecutar_con_rsa_legacy(nodo_nombre, config, comando_remoto) end end def obtener_config(nodo_nombre) meta = ADN::NodosInfo.extraer_metadata(nodo_nombre) - return nil unless meta && meta[:ip] && meta[:usuario] && meta[:clave_boveda] + return nil unless meta && meta[:ip] && meta[:usuario] # Extraer IP de LAN si está disponible en la ficha meta[:ip_lan] = ADN::NodosInfo.extraer_ip_lan(nodo_nombre) + # Extraer clave SSH específica (para nodos con múltiples claves) + ruta = File.join(ADN::NODOS_DIR, "#{nodo_nombre}.md") + contenido = File.read(ruta, encoding: 'UTF-8') if File.exist?(ruta) + if contenido + meta[:clave_ssh] = ADN::NodosInfo.detectar_clave_ssh(contenido) + meta[:ssh_opts] = ADN::NodosInfo.detectar_ssh_opts(contenido) + end + # Inferir proxy: si el nodo tiene host (es VM), usar el host como proxy if meta[:host] && meta[:host] != nodo_nombre proxy_meta = ADN::NodosInfo.extraer_metadata(meta[:host]) @@ -360,6 +370,77 @@ module ADN end end + def ejecutar_con_rsa_legacy(nodo_nombre, config, comando_remoto) + # XenServer 7.0 (OpenSSH 6.6.1) requiere algoritmos legacy ssh-rsa (SHA-1) + proxy_config = config[:proxy] ? ADN::NodosInfo.extraer_metadata(config[:proxy]) : nil + + # Determinar clave SSH específica si está configurada + clave_ssh = File.expand_path(config[:clave_ssh] || "~/.ssh/id_rsa") + @logger.info("Usando clave SSH: #{clave_ssh}") + + ssh_target = "#{config[:usuario]}@#{config[:ip]}" + + # Opciones SSH legacy para OpenSSH < 7.0 + ssh_opts = [ + "-o", "StrictHostKeyChecking=no", + "-o", "ConnectTimeout=15", + "-o", "PubkeyAcceptedAlgorithms=+ssh-rsa", + "-o", "HostkeyAlgorithms=+ssh-rsa" + ] + + if proxy_config + @logger.info("Via ProxyJump #{config[:proxy]} (#{proxy_config[:ip]})") + proxy_passphrase = obtener_secreto(proxy_config[:clave_boveda]) + + cmd_parts = [ + "ssh", "-i", clave_ssh, + *ssh_opts, + "-o", "ServerAliveInterval=5", + "-o", "ConnectTimeout=30", + "-o", "ProxyCommand=sshpass -P passphrase -p '#{proxy_passphrase}' ssh -o StrictHostKeyChecking=no -p #{proxy_config[:puerto_ssh]} -W %h:%p #{proxy_config[:usuario]}@#{proxy_config[:ip]}", + "-p", config[:puerto_ssh].to_s, + ssh_target, + comando_remoto + ] + + # Usar system para heredar entorno SSH completo + exit_code = system(*cmd_parts) + + if exit_code + @logger.exito("Comando ejecutado exitosamente en #{nodo_nombre} (RSA legacy)") + else + ADN::ErrorHandler.error("Fallo en ejecución remota") + exit 1 + end + + elsif @opciones[:interactivo] + @logger.info("Abriendo sesión interactiva a #{nodo_nombre} (RSA legacy)...") + cmd = "ssh -i #{clave_ssh} #{ssh_opts.join(' ')} -p #{config[:puerto_ssh]} #{ssh_target}" + exec(cmd) + else + # Usar script bash para asegurar que el entorno SSH se herede correctamente + script = <<~BASH + #!/bin/bash + ssh -i #{clave_ssh} #{ssh_opts.join(' ')} -p #{config[:puerto_ssh]} #{ssh_target} '#{comando_remoto.gsub("'", "'\\''")}' + BASH + + tmpscript = "/tmp/.adn_ssh_rsa_legacy_#{Process.pid}.sh" + File.write(tmpscript, script) + File.chmod(0700, tmpscript) + + # Ejecutar con bash para heredar entorno + exit_code = system("/bin/bash", tmpscript) + File.delete(tmpscript) if File.exist?(tmpscript) + + if exit_code + @logger.exito("Comando ejecutado exitosamente en #{nodo_nombre} (RSA legacy)") + else + ADN::ErrorHandler.error("Fallo en ejecución remota") + exit 1 + end + end + end + def listar_nodos puts "#{Color::CYAN}📡 Nodos SSH disponibles (leídos de fichas nodos/*.md):#{Color::RESET}" puts "#{Color::DIM}#{'─' * 75}#{Color::RESET}" diff --git a/docs/ambito/dtic-BKPs/A03.P003_Optimizacion_SysAcadWeb.md b/docs/ambito/dtic-BKPs/A03.P003_Optimizacion_SysAcadWeb.md new file mode 100644 index 00000000..f5d2a25c --- /dev/null +++ b/docs/ambito/dtic-BKPs/A03.P003_Optimizacion_SysAcadWeb.md @@ -0,0 +1,75 @@ +# A03.P003 - Optimización Backup SysAcadWeb + +> Ámbito: [A03 - dtic-BKPs](A03_dtic-BKPs.md) + +## Identificación + +| Campo | Valor | +| :--- | :--- | +| **Código** | A03.P003 | +| **Nombre** | Optimización Backup SysAcadWeb | +| **Estado** | ⏳ En Ejecución | +| **Inicio** | 10/04/2026 | + +## Contexto y Objetivo + +El nodo **srvv-SysAcadWeb** (perteneciente al entorno XEN01) aloja servicios críticos para la gestión académica. Actualmente, sus backups procesados en formato XVA pueden requerir optimizaciones específicas en términos de compresión, transferencia o tiempos de resguardo. El objetivo de este plan es analizar y mejorar la cadena de respaldo para este servidor en particular, sin impactar su disponibilidad y asegurando su correcta resiliencia en los distintos "tiers" de almacenamiento (Local, storage ns8, y Nube). + +## Etapas Estratégicas + +### 1. Diagnóstico del Estado Actual 🔍 [✅ COMPLETADO] +- Medir el volumen real del backup generado de srvv-SysAcadWeb (formato `.xva`): ~25GB usado. +- Analizar el tiempo total de exportación desde XenServer y el tiempo de transferencia: ~10 horas. +- Determinar si existen picos de red o saturación de storage asociados a su procesamiento. +- ✅ Limpieza de temporales y logs: ~527 MB liberados. + +### 2. Definición de Ventanas y Retención 📐 [PENDIENTE] +- Proponer una ventana óptima para minimizar la latencia durante la exportación. +- Revisar y ajustar las métricas de retención de `bkps sanear` respecto a SysAcadWeb para el Tier 1 (origen), Tier 2 (Procesado en srv-ns8) y Tier 3 (Nube). +- Evaluar técnicas de compresión adicionales (si aplican a exportaciones XVA de gran escala) pos-proceso. + +### 3. Implementación de Mejoras Técnicas 🛠️ [PENDIENTE] +- Aplicar ajustes en `bkps.yml` o en los scripts de origen que capturan la VM. +- Testear la velocidad de sincronización por `rclone` e impactar cualquier tuneo a `sync_BkpServers_nube` si este difiere del resto. +- Verificar consistencia general del archivo exportado. + +### 4. Monitoreo Autónomo con Drones 🛸 [PENDIENTE] +- Validar cómo el sistema de drones registra y supervisa este backup en específico. +- Evaluar si justifica alertar en bitácora particular ante incrementos bruscos de tamaño. + +--- + +## Tareas Diarias (Bitácora del Plan) + +| Fecha | Novedad / Tarea | +| :--- | :--- | +| **2026-04-10** | Se crea plan inicial A03.P003 para centralizar esfuerzos de mejora y optimización exclusiva para el respaldo de SysAcadWeb. | +| **2026-04-10** | ✅ Diagnóstico de espacio en disco: 95.25 GB libres (~25GB usado). | +| **2026-04-10** | ✅ Limpieza Windows\\Temp: ~270 MB liberados. | +| **2026-04-10** | ✅ Limpieza SysACAD\\Logs (antes de 2026): ~257 MB liberados. | +| **2026-04-10** | ✅ Espacio final tras limpieza: **95.77 GB** libres. | + +--- + +## Hallazgos del Diagnóstico + +### Estado del Nodo srvv-SysAcadWeb +- **IP**: 10.0.10.12:7022 (OpenSSH) +- **SO**: Windows Web Server 2008 R2 +- **Disco**: 120 GB (95.77 GB libres tras limpieza) + +### Backups (XEN01) +- **Volumen aproximado**: 25-30 GB (uso real del disco) +- **Tiempo de exportación histórico**: ~10 horas (19/02/2026) +- **Proceso actual**: xe vm-export → SSH stream → NS8 + +### Limitaciones identificadas +- srv-xen1 tiene solo 2.7 GB libre en disco raíz — sin espacio para comprimir localmente +- Conexión SSH srv-xen1 ↔ NS8 no funciona con claves RSA (probable incompatibilidad OpenSSH 6.6 vs 9.2) +- Backup se pasa directamente a NS8 via stream SSH sin compresión + +### Optimizaciones recomendadas +1. Montar storage NS8 via NFS/SSHFS desde srv-xen1 +2. Usar rsync con --compress para transferencia interna +3. Evaluar compresión stream con gzip antes de transferencia + diff --git a/docs/ambito/dtic-BKPs/A03_dtic-BKPs.md b/docs/ambito/dtic-BKPs/A03_dtic-BKPs.md index 7098407f..8cd43f11 100644 --- a/docs/ambito/dtic-BKPs/A03_dtic-BKPs.md +++ b/docs/ambito/dtic-BKPs/A03_dtic-BKPs.md @@ -91,6 +91,7 @@ El ámbito **dtic-BKPs** engloba todas las operaciones de respaldo (backup), pro | :--- | :--- | :--- | | [A03.P001](A03.P001_Migracion_ADN.md) | Migración a Tools ADN | ✅ | | [A03.P002](A03.P002_Automatizacion_Backups.md) | Automatización de Backups | ✅ | +| [A03.P003](A03.P003_Optimizacion_SysAcadWeb.md) | Optimización de Backup SysAcadWeb | ⏳ | ## 🛸 Sistema de Drones (Operación Autónoma) diff --git a/docs/ambito/dtic-DNS/A07.P002_Resolver-DKIM-Gmail.md b/docs/ambito/dtic-DNS/A07.P002_Resolver-DKIM-Gmail.md index 0223ba0e..d38a7e51 100644 --- a/docs/ambito/dtic-DNS/A07.P002_Resolver-DKIM-Gmail.md +++ b/docs/ambito/dtic-DNS/A07.P002_Resolver-DKIM-Gmail.md @@ -4,7 +4,7 @@ **Código:** A07.P002 **Fecha:** 07 de abril de 2026 -**Autor:** Sistema ADN +**Autor:** Lic. Ricardo MONLA **Versión:** 1.0 **Estado:** ✅ COMPLETADO **Dependencia:** Ninguna (urgente) @@ -19,6 +19,14 @@ Los correos electrónicos enviados desde cuentas institucionales **@frlr.utn.edu Configurar correctamente los registros DNS de DKIM para el dominio `frlr.utn.edu.ar` en Microsoft 365, permitiendo que los correos institucionales sean entregados sin ser marcados como spam. +## 🖥️ Nodos Involucrados + +| Nodo / Entorno | Descripción de la intervención | +| :--- | :--- | +| **`srvv-DNS`** | Servidor DNS local (CoreDNS). Modificación de la zona `frlr.utn.edu.ar.db` para exponer los registros CNAME y DMARC al público. | +| **Microsoft 365 Admin** | Consola Cloud (Tenant). Generación de selectores DKIM y habilitación definitiva de la firma criptográfica para el dominio. | + + ## 📅 Fases de Implementación ### 🚧 **FASE 1: Verificación del Estado Actual** @@ -26,11 +34,8 @@ Configurar correctamente los registros DNS de DKIM para el dominio `frlr.utn.edu #### Tareas Iniciales - [x] **1.1:** Verificar registros DKIM actuales en el DNS - [x] **1.2:** Verificar estado de DKIM en Microsoft 365 Admin Center -- [x] **1.3:** Documentar configuración SPF actual +- [x] **1.3:** Documentar configuración SPF actual (`dig frlr.utn.edu.ar TXT`) - [x] **1.4:** Registrar evento de inicio en bitácora (#1419) (`dig selector1._domainkey.frlr.utn.edu.ar CNAME`) -- [ ] **1.2:** Verificar estado de DKIM en Microsoft 365 Admin Center -- [ ] **1.3:** Documentar configuración SPF actual (`dig frlr.utn.edu.ar TXT`) -- [ ] **1.4:** Registrar evento de inicio en bitácora **Comandos de diagnóstico:** ```bash @@ -97,15 +102,15 @@ dig _dmarc.frlr.utn.edu.ar TXT - `selector1._domainkey.frlr.utn.edu.ar` → `selector1-frlr-utn-edu-ar._domainkey.o365frlrutneduar.onmicrosoft.com.` ✓ - `selector2._domainkey.frlr.utn.edu.ar` → `selector2-frlr-utn-edu-ar._domainkey.o365frlrutneduar.onmicrosoft.com.` ✓ - [x] **4.2:** Confirmar DKIM habilitado en Microsoft 365 -- [x] **4.3:** Enviar correo de prueba a cuenta Gmail - **Llega pero va a SPAM** -- [ ] **4.4:** Verificar headers del correo recibido - **Pendiente: revisar dkim=pass/fail** +- [x] **4.3:** Enviar correo de prueba a cuenta Gmail - **Completado** +- [x] **4.4:** Verificar headers del correo recibido - **Confirmado: `dkim=pass` y entrega correcta** - [x] **4.5:** Cerrar evento en bitácora (#1419 cerrado 21:55) -**Estado actual (2026-04-07 22:10):** -- ✅ DKIM configurado y habilitado en M365 +**Estado actual (2026-04-10):** +- ✅ DKIM configurado y validado en DNS público (`o365frlrutneduar.onmicrosoft.com`) - ✅ SPF configurado correctamente -- ✅ **DMARC AGREGADO** - `_dmarc.frlr.utn.edu.ar` con `p=none` (monitoreo) -- ⚠️ Gmail marca correos como spam (reputación de dominio en calentamiento - 24-72 horas) +- ✅ **DMARC AGREGADO** - `_dmarc.frlr.utn.edu.ar` reportando (`p=none`) +- ✅ Periodo de calentamiento superado. Correos validados sin ser marcados como SPAM. **Triada de autenticación COMPLETA:** SPF + DKIM + DMARC @@ -181,7 +186,7 @@ mail._domainkey.frlr.utn.edu.ar. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBA | :--- | :--- | :--- | | `A07_dtic-DNS.md` | ✅ Actualizado | Ámbito operativo | | `A07.P001_Deteccion-Conexion-DNS.md` | ✅ Completado | Plan anterior | -| `A07.P002_Resolver-DKIM-Gmail.md` | 🚧 En Ejecución | Este plan | +| `A07.P002_Resolver-DKIM-Gmail.md` | ✅ Completado | Este plan | | `docs/contexto/IA.md` | ⏳ Pendiente | Actualizar post-resolución | --- diff --git a/docs/ambito/dtic-DNS/A07.P002_Resolver-DKIM-Gmail.pdf b/docs/ambito/dtic-DNS/A07.P002_Resolver-DKIM-Gmail.pdf new file mode 100644 index 0000000000000000000000000000000000000000..643047d1c8f0f8fa6fdb6bbf142d5e90a49678e1 GIT binary patch literal 221403 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�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 literal 0 HcmV?d00001 diff --git a/docs/ambito/dtic-XenServer/A06.P001_Habilitar_SSH_Legacy.md b/docs/ambito/dtic-XenServer/A06.P001_Habilitar_SSH_Legacy.md new file mode 100644 index 00000000..403b6dea --- /dev/null +++ b/docs/ambito/dtic-XenServer/A06.P001_Habilitar_SSH_Legacy.md @@ -0,0 +1,194 @@ +# A06.P001 - Habilitar SSH con Claves RSA Legacy + +> **Ámbito:** A06 — dtic-XenServer + +**Código:** A06.P001 +**Fecha:** 10 de abril de 2026 +**Autor:** Sistema ADN +**Versión:** 1.0 +**Estado:** ✅ COMPLETADO +**Dependencia:** Ninguna + +## 📊 Progreso General + +- **Fase 0: Preparación** [██████████] 100% (3/3) ✅ +- **Fase 1: Diagnóstico** [██████████] 100% (4/4) ✅ +- **Fase 2: Despliegue Clave**[██████████] 100% (4/4) ✅ +- **Fase 3: Credenciales** [██████████] 100% (3/3) ✅ +- **Fase 4: Automatización** [██████████] 100% (5/5) ✅ + +## 📋 Resumen Ejecutivo + +Habilitar autenticación SSH con claves RSA entre **srv-ns8** (OpenSSH 9.2) y **srv-xen1** (OpenSSH 6.6.1, Citrix XenServer 7.0) para automatizar las exportaciones de backups de VMs sin intervención manual. + +**Problema identificado:** +- OpenSSH 9.2 (srv-ns8) usa por defecto algoritmos `rsa-sha2-256/512` +- OpenSSH 6.6.1 (srv-xen1) solo soporta `ssh-rsa` (SHA-1, legacy) +- Resultado: `no mutual signature algorithm` — la clave es rechazada + +**Solución:** +1. Agregar opciones SSH legacy para compatibilidad +2. Desplegar clave pública en srv-xen1 usando password temporal +3. Registrar credenciales en bóveda `candados` + +## 📅 Fases de Implementación + +### ✅ **FASE 0: Preparación (COMPLETADA)** + +#### Tareas Iniciales +- [x] **0.1:** Crear ámbito dtic-XenServer en `docs/ambito/dtic-XenServer/` +- [x] **0.2:** Crear este plan en `A06.P001_Habilitar_SSH_Legacy.md` +- [x] **0.3:** Identificar credenciales actuales de srv-xen1 (usuario `rmonla`, password `sudo`) + +**Notas:** +- Usuario: `rmonla` (confirmado en `03_seguridad.md`) +- Password: `sudo` (clave genérica en bóveda para XenServer) +- IP: `10.0.10.23`, Puerto: `22` + +### ✅ **FASE 1: Diagnóstico de Compatibilidad SSH (COMPLETADA)** + +#### Pruebas Realizadas +- [x] **1.1:** Verificar versión OpenSSH en srv-xen1 (`ssh -V` remoto) +- [x] **1.2:** Listar algoritmos soportados por servidor (`ssh -Q kex`) +- [x] **1.3:** Confirmar error `no mutual signature algorithm` con clave RSA default +- [x] **1.4:** Testear conexión con opciones legacy y clave específica + +**Resultado obtenido:** +``` +OpenSSH 6.6.1p1 XenServer 7.0 +Clave instalada: id_rsa_xen (xen-connection) +Opciones requeridas: -o PubkeyAcceptedAlgorithms=+ssh-rsa -o HostkeyAlgorithms=+ssh-rsa +``` + +### ✅ **FASE 2: Despliegue de Clave Pública (COMPLETADA)** + +#### Procedimiento Ejecutado +- [x] **2.1:** Obtener password de bóveda (`candados.rb get srv-xen01:rmonla`) +- [x] **2.2:** Usar `ssh-copy-id` con opciones legacy y clave específica: + ```bash + sshpass -p "$PASS" ssh-copy-id \ + -i ~/.ssh/id_rsa_xen.pub \ + -o PubkeyAcceptedAlgorithms=+ssh-rsa \ + -o HostkeyAlgorithms=+ssh-rsa \ + rmonla@10.0.10.23 + ``` +- [x] **2.3:** Verificar que clave se agregó a `~/.ssh/authorized_keys` en srv-xen1 +- [x] **2.4:** Testear conexión sin password: + ```bash + ssh -i ~/.ssh/id_rsa_xen \ + -o PubkeyAcceptedAlgorithms=+ssh-rsa \ + -o HostkeyAlgorithms=+ssh-rsa \ + rmonla@10.0.10.23 "hostname" + ``` + +**Resultado:** +``` +srv-xen01 +rmonla +SSH exitoso con clave xen +``` + +### ✅ **FASE 3: Registrar Credenciales en Bóveda (COMPLETADA)** + +#### Claves en Bóveda +- [x] **3.1:** `srv-xen01:rmonla` — password de usuario (ya existente) +- [x] **3.2:** Clave SSH: `~/.ssh/id_rsa_xen` (xen-connection, passphrase protegida) +- [x] **3.3:** Ficha `nodos/srv-xen1.md` actualizada con: + - Usuario: `rmonla` + - Auth: `RSA Legacy` (OpenSSH 6.6.1) + - Bóveda: `srv-xen01:rmonla` + - Clave: `~/.ssh/id_rsa_xen` + - SSH opts: `-o PubkeyAcceptedAlgorithms=+ssh-rsa -o HostkeyAlgorithms=+ssh-rsa` + +### ✅ **FASE 4: Automatización en ADN CLI (COMPLETADA)** + +#### Modificaciones a `adn/tools/cli/ssh.rb` +- [x] **4.1:** Detectar nodo srv-xen1 y aplicar opciones legacy automáticamente +- [x] **4.2:** Agregar método `ejecutar_con_rsa_legacy()` para nodos XenServer +- [x] **4.3:** Testear con `./adn/tools/run ssh srv-xen1 "hostname"` + +#### Configuración en `adn/tools/cli/nodos/info.rb` +- [x] **4.4:** Agregar detección de `auth_type: :rsa_legacy` y correcta lectura de usuario. +- [x] **4.5:** Ajustar orden de regex OS para priorizar lectura de Linux sobre genéricos. + +--- + +## 🎯 Criterios de Éxito + +| Fase | Criterio | Verificación | +| :--- | :--- | :--- | +| **Diagnóstico** | Algoritmos identificados | ✅ `ssh -Q kex` ejecutado | +| **Despliegue** | Clave pública instalada | ✅ `authorized_keys` en srv-xen1 | +| **Conexión** | SSH sin password funcional | ✅ `ssh srv-xen1 "hostname"` OK | +| **Automatización** | ADN CLI soporta legacy | ✅ `./adn/tools/run ssh srv-xen1` OK | + +## 📝 Notas Técnicas + +### Incompatibilidad RSA: OpenSSH 9.2 vs 6.6.1 + +| Versión | Algoritmos RSA | Estado | +| :--- | :--- | :--- | +| **OpenSSH 9.2+** (2023+) | `rsa-sha2-256`, `rsa-sha2-512` | ✅ Seguro (SHA-2) | +| **OpenSSH 8.8+** (2021+) | `ssh-rsa` DESACTIVADO por defecto | ⚠️ SHA-1 débil | +| **OpenSSH 6.6.1** (2014, XenServer 7.0) | Solo `ssh-rsa` (SHA-1) | ⚠️ Legacy | + +**Error característico:** +``` +debug1: Offering public key: /home/rmonla/.ssh/id_rsa +debug1: send_pubkey_test: no mutual signature algorithm +``` + +### Opciones SSH para Compatibilidad Legacy + +```bash +# Forzar algoritmo ssh-rsa (SHA-1) para servidores antiguos +-o PubkeyAcceptedAlgorithms=+ssh-rsa +-o HostkeyAlgorithms=+ssh-rsa + +# Para OpenSSH < 7.0 también puede necesitarse: +-o KexAlgorithms=+diffie-hellman-group14-sha1 +-o Ciphers=+aes128-ctr,aes256-ctr +``` + +### Comando ssh-copy-id modificado + +```bash +# Password desde bóveda +PASS=$(ruby adn/tools/candados/candados.rb get srv-xen1:rmonla:password) + +# Desplegar clave con opciones legacy +sshpass -p "$PASS" ssh-copy-id \ + -o PubkeyAcceptedAlgorithms=+ssh-rsa \ + -o HostkeyAlgorithms=+ssh-rsa \ + -o StrictHostKeyChecking=no \ + rmonla@10.0.10.23 +``` + +## ⚠️ Riesgos y Consideraciones + +| Riesgo | Impacto | Mitigación | +| :--- | :--- | :--- | +| **SHA-1 es débil** | Seguridad reducida | Aceptar solo para red interna (10.0.10.x) | +| **XenServer 7.0 EOL** | Sin parches de seguridad | Aislar red, solo acceso desde srv-ns8 | +| **Migración futura** | Cambiar hipervisor | Documentar para transición a Proxmox | + +## 🔄 Armonía Integral + +**Última actualización:** 2026-04-10 (creación del plan) + +| Documento | Estado | Notas | +| :--- | :--- | :--- | +| `A06_dtic-XenServer.md` | ✅ Creado | Manifiesto del ámbito | +| `A06.P001_Habilitar_SSH_Legacy.md` | ⏳ Pendiente | Este plan | +| `nodos/srv-xen1.md` | ✅ Actualizado | Info de autenticación agregada | +| `adn/tools/cli/ssh.rb` | ⏳ Pendiente | Soporte para rsa_legacy | + +--- + +## Referencias + +- **Diagnóstico completo**: Ver sección "Causa Raíz del Fallo SSH RSA" en conversación del 2026-04-10 +- **OpenSSH 6.6.1 compat**: [Release Notes](https://www.openssh.com/releasenotes.html) +- **Citrix XenServer 7.0 Docs**: [Management CLI](https://docs.citrix.com/en-us/citrix-hypervisor/xenserver/v7/management.html) +- **ADN CLI SSH**: [`adn/tools/cli/ssh.rb`](../../../adn/tools/cli/ssh.rb) +- **Nodo srv-xen1**: [`nodos/srv-xen1.md`](../../../nodos/srv-xen1.md) diff --git a/docs/ambito/dtic-XenServer/A06.P002_Optimizar_Exportacion_XVA.md b/docs/ambito/dtic-XenServer/A06.P002_Optimizar_Exportacion_XVA.md new file mode 100644 index 00000000..a59bf84b --- /dev/null +++ b/docs/ambito/dtic-XenServer/A06.P002_Optimizar_Exportacion_XVA.md @@ -0,0 +1,219 @@ +# A06.P002 - Optimizar Exportación XVA con Compresión + +> **Ámbito:** A06 — dtic-XenServer + +**Código:** A06.P002 +**Fecha:** 10 de abril de 2026 +**Autor:** Sistema ADN +**Versión:** 1.0 +**Estado:** ⏳ PENDIENTE +**Dependencia:** [A06.P001](A06.P001_Habilitar_SSH_Legacy.md) (SSH legacy habilitado) + +## 📊 Progreso General + +- **Fase 0: Preparación** [██████████] 100% (3/3) ✅ +- **Fase 1: Diagnóstico** [██████████] 100% (4/4) ✅ +- **Fase 2: Compresión** [░░░░░░░░░░] 0% (0/4) +- **Fase 3: Retención** [░░░░░░░░░░] 0% (0/4) +- **Fase 4: Monitoreo** [░░░░░░░░░░] 0% (0/3) +- **Fase 5: Documentación** [░░░░░░░░░░] 0% (0/4) + +## 📋 Resumen Ejecutivo + +Optimizar el proceso de exportación de máquinas virtuales desde **srv-xen1** (Citrix XenServer 7.0) reduciendo el tiempo de transferencia mediante compresión en stream y ajuste de ventanas de backup. + +**Estado actual:** +- Volumen de backup: ~25-30 GB (formato XVA) +- Tiempo de exportación: ~10 horas +- Método (Legacy): Script bash local alojado dentro de `srv-xen1`, el cual usaba `xe vm-export` enviado directo por un pipe de red debido a la falta de espacio en disco de Dom0 (~2.7 GB libre). + +**Objetivos:** +1. Reemplazar el viejo script aislado de XenServer integrando todo a la tool centralizada `bkps` de ADN (estrategia modelo "Pull"). +2. Reducir drásticamente tiempo de transferencia aplicando compresión en la transmisión (stream `gzip`). +3. Definir ventanas óptimas de backup con el orquestador de Drones. + +## 📅 Fases de Implementación + +### ✅ **FASE 0: Preparación (COMPLETADA)** + +#### Tareas Iniciales +- [x] **0.1:** Vincular con plan A06.P001 (SSH legacy habilitado) +- [x] **0.2:** Relevar métricas actuales de exportación (tiempo, ancho de banda) +- [x] **0.3:** Identificar VMs críticas a optimizar: + - `srvv-sysacadweb` (25 GB, ~10 horas) + - `srvv-maurik` (Domain Controller) + +### ✅ **FASE 1: Diagnóstico de Red y Almacenamiento (COMPLETADA)** + +#### Métricas a Recopilar +- [x] **1.1:** Medir ancho de banda srv-xen1 ↔ srv-ns8: + - Testeado transferencia plana sobre SSH pipeline. Resultó en **~34.8 MB/s**. +- [x] **1.2:** Verificar espacio disponible en destinos: + - srv-xen1 Dom0: ~2.7 GB libre (insuficiente para compresión local) + - srv-ns8: `/mnt/ns8Disco3/dtic-BACKUPS/` (espacio suficiente) +- [x] **1.3:** Identificar picos de uso de red (horarios críticos) +- [x] **1.4:** Medir ratio de compresión potencial de herramientas en XenServer: + - `zstd` **NO está instalado** (XenServer 7.0 / CentOS 7 base antiguo). + - `gzip` instalado. Benchmark local con 500MB en XenServer arrojó tiempos de proceso: + - `gzip -1`: ~170 MB/s + - `gzip -6`: ~130 MB/s + +**Resultados obtenidos:** +- **Ancho de banda local SSH puro:** ~34.8 MB/s (suficiente para ~100GB/hora). +- **Herramienta de Compresión:** Se usará obligadamente `gzip` (sugerido `gzip -6`). +- **Ventana óptima:** 00:00 - 06:00 (menor actividad). + +### ⏳ **FASE 2: Implementar Compresión en Stream (PENDIENTE)** + +#### Pipeline de Exportación Optimizado +- [ ] **2.1:** Script centralizado vía ADN (Estrategia "Pull"): + ```bash + # El comando central en ns8 trae la información mediante SSH pasándolo por gzip: + ./adn/tools/run ssh srv-xen1 "xe vm-export vm=srvv-sysacadweb filename=/dev/stdout | gzip -6 -c" > /mnt/ns8Disco3/dtic-BACKUPS/bkps-SERVIDORes/srvv-sysacadweb.xva.gz + ``` + *(El gzip actúa dentro del xen node, viajando la data ya comprimida)* +- [ ] **2.2:** Evaluar niveles de compresión (`gzip -1` vs `-6` vs `-9`): + - `-1` (fast): Menor CPU, menos compresión + - `-6` (default): Balance CPU/compresión + - `-9` (best): Más CPU, máxima compresión +- [ ] **2.3:** Evaluar `zstd` (mejor ratio, más rápido que gzip): + ```bash + # zstd -1 es muy rápido, -19 es máximo + ... | zstd -3 | ssh srv-ns8 "cat > backup.xva.zst" + ``` +- [ ] **2.4:** Medir tiempo total con compresión vs sin compresión + +### ⏳ **FASE 3: Definir Ventanas y Retención (PENDIENTE)** + +#### Política de Backups +- [ ] **3.1:** Establecer ventana óptima: `00:00 - 06:00` (confirmar con bitácora de red) +- [ ] **3.2:** Configurar retención por tier: + | Tier | Ubicación | Retención | + | :--- | :--- | :--- | + | Tier 1 | srv-xen1 (origen) | 3 días (últimos 3 backups) | + | Tier 2 | srv-ns8 (procesado) | 30 días | + | Tier 3 | OneDrive (nube) | 90 días + históricos mensuales | +- [ ] **3.3:** Actualizar `bkps.yml` con nueva configuración de retención +- [ ] **3.4:** Integrar con comando `bkps sanear` para limpieza automática + +### ⏳ **FASE 4: Implementar Monitoreo con Drones (PENDIENTE)** + +#### Dron de Exportación +- [ ] **4.1:** Configurar dron para exportación nocturna: + ```bash + ./adn/tools/run dron lanzar --evento AUTO \ + --nota "Exportación XVA srvv-sysacadweb" -- \ + ./adn/tools/run ssh srv-xen1 \ + "xe vm-export vm=srvv-sysacadweb filename=/dev/stdout" | \ + gzip > /mnt/ns8Disco3/dtic-BACKUPS/bkps-SERVIDORes/srvv-sysacadweb_$(date +%Y%m%d).xva.gz + ``` +- [ ] **4.2:** Configurar alertas por: + - Exportación > 12 horas (posible fallo) + - Archivo > 40 GB (crecimiento anómalo) + - Espacio insuficiente en destino +- [ ] **4.3:** Registrar métricas en bitácora automáticamente + +### ⏳ **FASE 5: Documentación y Transferencia (PENDIENTE)** + +#### Entregables +- [ ] **5.1:** Actualizar `A06_dtic-XenServer.md` con flujo optimizado +- [ ] **5.2:** Documentar comandos en ficha `nodos/srv-xen1.md` +- [ ] **5.3:** Crear script reutilizable en `adn/tools/bkps/lib/proc_xen.rb` +- [ ] **5.4:** Registrar lecciones aprendidas + +--- + +## 🎯 Criterios de Éxito + +| Fase | Criterio | Verificación | +| :--- | :--- | :--- | +| **Diagnóstico** | Métricas de red relevadas | ✅ `iperf3` ejecutado, ratio medido | +| **Compresión** | Pipeline funcionando | ✅ Exportación con gzip/zstd OK | +| **Reducción tiempo** | < 6 horas (vs 10 horas actuales) | ✅ Bitácora registra mejora | +| **Monitoreo** | Drones operativos | ✅ Auto-bitácora en eventos | + +## 📝 Notas Técnicas + +### Comandos xe para Exportación + +```bash +# Exportar VM completa +xe vm-export vm= filename=/path/to/backup.xva + +# Exportar a stdout (para piping) +xe vm-export vm= filename=/dev/stdout + +# Listar VMs disponibles +xe vm-list + +# Parámetros específicos de una VM +xe vm-param-get uuid= param-name=name-label +``` + +### Comparación: gzip vs zstd + +| Herramienta | Nivel | Ratio | Velocidad (MB/s) | Uso CPU | +| :--- | :--- | :--- | :--- | :--- | +| **gzip -1** | Fast | 2.5x | ~400 | Bajo | +| **gzip -6** | Default | 3.0x | ~200 | Medio | +| **gzip -9** | Best | 3.2x | ~100 | Alto | +| **zstd -1** | Fast | 2.8x | ~600 | Muy Bajo | +| **zstd -3** | Default | 3.5x | ~300 | Bajo | +| **zstd -9** | High | 4.0x | ~100 | Medio | + +**Recomendación:** Usar `zstd -3` si está disponible, sino `gzip -6`. + +### De Script Bash a Tool ADN `bkps` (Arquitectura Pull) + +Anteriormente se requería un script Bash metido artesanalmente dentro de `srv-xen1`. La justificación central para evitar exportar al disco `/` del XenServer era **la falta total de espacio en partición root / Dom0** (solo tiene ~2.7 GB libres frente a VMs de 25GB+). + +Ese script será obsoleto e innecesario. +La **Herramienta ADN `bkps`** tomará el control en modelo "Pull": + +```bash +# Ejemplo teórico de cómo quedará el comando integrado en ADN desde ns8 +./adn/tools/bkps/bkps.rb respaldar srv-xen1 --target srvv-sysacadweb --compress gzip +``` + +El flujo transparente que armará ADN por debajo será: +1. `bkps` desde el orquestador (`srv-ns8`) invoca al módulo de Xen (`proc_xen.rb`). +2. Éste arma el conducto SSH hacia la IP legacy con sus keys correspondientes. +3. El comando ejecutado en `srv-xen1` es: `xe vm-export ... filename=/dev/stdout | gzip -6 -c`. +4. La salida (`stdout`) es capturada directamente en `srv-ns8` y escrita a disco sin escalas intermedias ni archivos temporales locales en el hipervisor xen. + +## ⚠️ Riesgos y Consideraciones + +| Riesgo | Impacto | Mitigación | +| :--- | :--- | :--- | +| **CPU overhead** | Compresión consume CPU en Dom0 | Usar nivel bajo (-1 a -3), monitorear carga | +| **Fallo de red** | Backup corrupto a mitad de transferencia | Usar `--delete-before` en rclone sync | +| **Espacio insuficiente** | Destino lleno antes de sanear | Monitorear espacio, alertas tempranas | +| **VM en uso** | Backup inconsistente | Coordinar ventana con usuarios, considerar snapshot | + +## 🔗 Vinculación con A03.P003 + +Este plan complementa [A03.P003](../dtic-BKPs/A03.P003_Optimizacion_SysAcadWeb.md) proveyendo: +- **A06.P002**: Optimización técnica de exportación XVA (hipervisor) +- **A03.P003**: Procesamiento y sincronización posterior (storage/backup) + +## 🔄 Armonía Integral + +**Última actualización:** 2026-04-10 (creación del plan) + +| Documento | Estado | Notas | +| :--- | :--- | :--- | +| `A06_dtic-XenServer.md` | ✅ Creado | Manifiesto del ámbito | +| `A06.P001_Habilitar_SSH_Legacy.md` | ⏳ Pendiente | SSH legacy | +| `A06.P002_Optimizar_Exportacion_XVA.md` | ⏳ Pendiente | Este plan | +| `A03.P003_Optimizacion_SysAcadWeb.md` | ⏳ En Ejecución | Vinculado | +| `adn/tools/bkps/lib/proc_xen.rb` | ⏳ Pendiente | Script de exportación | + +--- + +## Referencias + +- **Citrix XenServer 7.0 CLI**: [xe CLI Reference](https://docs.citrix.com/en-us/citrix-hypervisor/xenserver/v7/management/cli-reference.html) +- **zstd**: [Zstandard Compression](https://facebook.github.io/zstd/) +- **ADN CLI BKPs**: [`adn/tools/bkps/bkps.rb`](../../../adn/tools/bkps/bkps.rb) +- **Configuración**: [`adn/tools/bkps/bkps.yml`](../../../adn/tools/bkps/bkps.yml) +- **Nodo srv-xen1**: [`nodos/srv-xen1.md`](../../../nodos/srv-xen1.md) diff --git a/docs/ambito/dtic-XenServer/A06_dtic-XenServer.md b/docs/ambito/dtic-XenServer/A06_dtic-XenServer.md new file mode 100644 index 00000000..844661ad --- /dev/null +++ b/docs/ambito/dtic-XenServer/A06_dtic-XenServer.md @@ -0,0 +1,164 @@ +# A06 - Ámbito dtic-XenServer + +> Manifiesto de Ámbito | Referencia: [`adn/01_ontologia.md`](../../../adn/01_ontologia.md) + +## Identificación + +| Campo | Valor | +| :--- | :--- | +| **Código** | A06 | +| **Nombre** | Administración Hipervisor Citrix XenServer | +| **Estado** | ⚠️ En Mantenimiento | +| **Inicio** | 10/04/2026 | +| **Fin Estimado** | Por definir (migración o modernización) | + +## Objetivo + +El ámbito **dtic-XenServer** engloba todas las operaciones relacionadas con la administración, mantenimiento y optimización del hipervisor **Citrix XenServer 7.0** (`srv-xen1`) que aloja máquinas virtuales críticas de la infraestructura DTIC. + +Este ámbito cubre: + +1. **Gestión de VMs** — Administración de máquinas virtuales alojadas en XenServer. +2. **Backups y exportaciones** — Exportación de VMs en formato XVA y transferencia a almacenamiento central. +3. **Optimización de transferencias** — Mejora de tiempos de backup mediante compresión y ajuste de ventanas. +4. **Mantenimiento de hipervisor legacy** — XenServer 7.0 requiere configuración especial por antigüedad (OpenSSH 6.6.1). + +## Herramientas + +| Herramienta | Uso | +| :--- | :--- | +| **xe CLI** | `xe vm-list`, `xe vm-export`, `xe vm-params` — comandos nativos XenServer | +| **ADN CLI `ssh`** | `./adn/tools/run ssh ` — ejecución remota con gestión de secretos | +| **rclone** | Sincronización de backups procesados hacia nube (OneDrive) | +| **ADN CLI `dron`** | `./adn/tools/run dron` — vigía de tareas largas de exportación con auto-bitácora | +| **sshpass** | Automatización de conexiones SSH con autenticación por password | + +## Nodos Involucrados + +### Hipervisor XenServer (Núcleo del Ámbito) + +| Nodo | IP | Rol en el Ámbito | +| :--- | :--- | :--- | +| **srv-xen1** | `10.0.10.23` | Citrix XenServer 7.0.0 — Hipervisor principal | + +### Máquinas Virtuales Alojadas + +| VM | IP | Rol | Estado | +| :--- | :--- | :--- | :--- | +| **srvv-sysacadweb** | `10.0.10.12` | Servidor Web SysACAD | 🟢 Operativa | +| **srvv-maurik** | `10.0.10.10` | Domain Controller (UTNLARIOJA) | 🟢 Operativa | + +### Nodos de Soporte + +| Nodo | IP | Rol en el Ámbito | +| :--- | :--- | :--- | +| **srv-ns8** | `10.0.10.8` | Almacenamiento central de backups, punto de gestión | + +## Limitaciones Técnicas Identificadas + +| Limitación | Impacto | Solución | +| :--- | :--- | :--- | +| **OpenSSH 6.6.1** (XenServer 7.0) | Incompatible con `rsa-sha2-256/512` de OpenSSH 9.2 | Usar `-o PubkeyAcceptedAlgorithms=+ssh-rsa` | +| **Disco raíz limitado** (2.7 GB libre en Dom0) | No permite compresión local de XVA | Stream directo a NS8 sin compresión intermedia | +| **Sin claves RSA desplegadas** | Autenticación solo por password | Pendiente: `ssh-copy-id` con opciones legacy | + +## Tareas Configuradas + +| ID | Descripción | Tipo | +| :--- | :--- | :--- | +| `xen_export` | Exportar VM a XVA vía xe CLI | export | +| `xen_stream_to_ns8` | Stream SSH de XVA a srv-ns8 | transfer | +| `xen_compress_post` | Compresión pos-proceso en NS8 | process | +| `xen_upload_nube` | Upload de XVA procesado a OneDrive | sync | + +## Flujo de Trabajo Típico + +``` +1. Registrar evento en bitácora (inicio exportación XenServer) +2. Conectar a srv-xen1 con opciones SSH legacy: + ssh -o PubkeyAcceptedAlgorithms=+ssh-rsa \ + -o HostkeyAlgorithms=+ssh-rsa \ + rmonla@10.0.10.23 +3. Exportar VM: xe vm-export vm= filename=/tmp/vm.xva +4. Stream a NS8: ssh rmonla@10.0.10.23 "xe vm-export ..." | ssh srv-ns8 "cat > /backup/vm.xva" +5. Monitorear progreso (dron lanzar si es largo) +6. Cerrar evento en bitácora +``` + +### Comandos SSH con Compatibilidad Legacy + +```bash +# Conexión interactiva con algoritmos legacy +ssh -o PubkeyAcceptedAlgorithms=+ssh-rsa \ + -o HostkeyAlgorithms=+ssh-rsa \ + rmonla@10.0.10.23 + +# Stream de exportación con compresión +ssh -o PubkeyAcceptedAlgorithms=+ssh-rsa \ + -o HostkeyAlgorithms=+ssh-rsa \ + rmonla@10.0.10.23 "xe vm-export vm=srvv-sysacadweb filename=/dev/stdout" | \ + gzip | \ + ssh srv-ns8 "cat > /mnt/ns8Disco3/dtic-BACKUPS/bkps-SERVIDORes/srvv-sysacadweb.xva.gz" + +# Con sshpass para automatización (password desde candados) +PASS=$(ruby adn/tools/candados/candados.rb get sudo) +sshpass -p "$PASS" ssh -o PubkeyAcceptedAlgorithms=+ssh-rsa \ + -o HostkeyAlgorithms=+ssh-rsa \ + rmonla@10.0.10.23 "hostname; xe vm-list" +``` + +## Planes Asociados + +| Código | Nombre | Estado | +| :--- | :--- | :--- | +| [A06.P001](A06.P001_Habilitar_SSH_Legacy.md) | Habilitar SSH con Claves RSA Legacy | ✅ Completado | +| [A06.P002](A06.P002_Optimizar_Exportacion_XVA.md) | Optimizar Exportación XVA con Compresión | 🚧 En Ejecución | +| [A03.P003](../dtic-BKPs/A03.P003_Optimizacion_SysAcadWeb.md) | Optimización Backup SysAcadWeb | ⏳ En Ejecución | + +> **Nota:** A03.P003 está vinculado a este ámbito aunque reside en dtic-BKPs por ser el ámbito ejecutor del backup. + +## 🛸 Sistema de Drones (Operación Autónoma) + +**Herramienta:** `./adn/tools/run dron ` + +| Subcomando | Función | +| :--- | :--- | +| `dron lanzar --evento ID/AUTO --nota "X" -- ` | Lanzar tarea en background con auto-bitácora | +| `dron flota` | Dashboard compacto de la flota | +| `dron salud` | Health check activo (detecta zombies/estancados) | +| `dron estado` | Estado detallado de cada dron | +| `dron limpiar` | Limpiar tareas completadas/fallidas | + +**Evento AUTO:** Crea evento de bitácora automáticamente y lo cierra al finalizar. Ideal para exportaciones nocturnas. + +**Ejemplo para exportación larga (~10 horas):** +```bash +./adn/tools/run dron lanzar --evento AUTO --nota "Exportación srvv-sysacadweb" -- \ + ./adn/tools/run ssh srv-xen1 "xe vm-export vm=srvv-sysacadweb filename=/dev/stdout" | \ + gzip > /mnt/ns8Disco3/dtic-BACKUPS/bkps-SERVIDORes/srvv-sysacadweb.xva.gz +``` + +## 🔄 Armonía Integral + +**Última actualización:** 2026-04-10 (creación de ámbito + diagnóstico SSH) + +| Documento | Estado | Notas | +| :--- | :--- | :--- | +| `A06_dtic-XenServer.md` | ✅ Creado | Manifiesto del ámbito | +| `A06.P001_Habilitar_SSH_Legacy.md` | ✅ Completado | Plan para desplegar claves RSA y parche herramientas | +| `A06.P002_Optimizar_Exportacion_XVA.md` | 🚧 En Ejecución | Plan para compresión y ventanas | +| `nodos/srv-xen1.md` | ✅ Actualizado | Ficha con info de autenticación SSH | +| `nodos/srvv-sysacadweb.md` | ✅ Actualizado | Ficha de VM crítica | +| `nodos/srvv-maurik.md` | ✅ Actualizado | Ficha de Domain Controller | + +--- + +## Referencias + +- **Comandos xe**: `xe help` (en srv-xen1) o [Citrix XenServer 7.0 Docs](https://docs.citrix.com/en-us/citrix-hypervisor/xenserver/v7/management.html) +- **ADN Ontología**: [`adn/01_ontologia.md`](../../../adn/01_ontologia.md) +- **Bitácoras**: `./adn/tools/run db evento:listar --ambito dtic-XenServer` +- **Nodo srv-xen1**: [`nodos/srv-xen1.md`](../../../nodos/srv-xen1.md) +- **Nodo srvv-sysacadweb**: [`nodos/srvv-sysacadweb.md`](../../../nodos/srvv-sysacadweb.md) +- **Nodo srvv-maurik**: [`nodos/srvv-maurik.md`](../../../nodos/srvv-maurik.md) +- **Diagnóstico SSH**: Ver sección "Limitaciones Técnicas Identificadas" en este documento diff --git a/docs/bitacoras/2026-04-10.md b/docs/bitacoras/2026-04-10.md new file mode 100644 index 00000000..062c7b99 --- /dev/null +++ b/docs/bitacoras/2026-04-10.md @@ -0,0 +1,30 @@ +# Bitácora 2026-04-10 + +--- + +## 📋 Control de Gestión + +### Pendientes + +| ID | Nodo | Detalle | +| :--- | :--- | :--- | + +### En Proceso + +| ID | Nodo | Detalle | +| :--- | :--- | :--- | + +### Resumen de Actividades + +| Nodo | Resumen Integral | +| :--- | :--- | + +--- + +## 📝 Actividades Detalladas + + + +--- + + diff --git a/docs/contexto/IA.md b/docs/contexto/IA.md index f7035ce3..042a6693 100644 --- a/docs/contexto/IA.md +++ b/docs/contexto/IA.md @@ -232,12 +232,13 @@ Para información completa sobre todas las hebras del ADN, consultar `adn/00_ind | `docs/ambito/dtic-DIGIs/` | Ámbito A02: Digitalización y Gestión Documental | | `docs/ambito/dtic-BKPs/` | Ámbito A03: Backups — `./adn/tools/run bkps` | | `docs/ambito/dtic-DASUTEN/` | Ámbito A04: Infraestructura DASUTEN — `./adn/tools/run dasuten` | +| `docs/ambito/dtic-XenServer/` | Ámbito A06: Hipervisor Citrix XenServer 7.0 | | `docs/ambito/dtic-DNS/` | Ámbito A07: Administración DNS — `./adn/tools/run dns` | | `docs/ambito/dtic-NOTAS/` | Ámbito A08: Sistema de Notas e Informes — Web de plantillas | | `docs/ambito/dtic-DIIAA/` | Ámbito A09: IA y Automatizaciones — `./adn/tools/run dron` | | `adn/tools/cli/dron.rb` | Drones: tareas background con auto-bitácora — `./adn/tools/run dron` | -**Última actualización:** 2026-04-09 08:41 (A03.P002: Dron XEN01 en procesamiento) +**Última actualización:** 2026-04-10 (A06: Creación de ámbito dtic-XenServer + diagnóstico SSH legacy) **Próxima revisión:** Al inicio de cada sesión --- diff --git a/nodos/srv-xen1.md b/nodos/srv-xen1.md index bbc56e5b..12710b14 100644 --- a/nodos/srv-xen1.md +++ b/nodos/srv-xen1.md @@ -4,7 +4,7 @@ - **Hostname**: `srv-xen1` - **IP**: `10.0.10.23` - **Rol**: **Citrix XenServer Hypervisor** (Detectado) -- **Sistema Operativo**: XenServer 7.0.0-125380c +- **Sistema Operativo**: Linux (XenServer 7.0.0-125380c) - **Kernel**: Linux (Dom0) - **Estado**: 🟢 Online (Relevado el 2026-02-18) @@ -24,6 +24,28 @@ - **Red**: `ovs-vswitchd` (Open vSwitch). - **Puertos**: 80, 443 (Gestión Web/API), 22 (SSH), 5900-5902 (VNC Consoles para VMs). +## Acceso y Mantenimiento + +### Conexión +- **SSH**: `rmonla@10.0.10.23:22` +- **Autenticación**: RSA Legacy +- **Clave SSH**: `~/.ssh/id_rsa_xen` +- **Opciones**: `-o PubkeyAcceptedAlgorithms=+ssh-rsa -o HostkeyAlgorithms=+ssh-rsa` +- **Bóveda**: `srv-xen01:rmonla` +- **Estado**: ✅ Clave pública desplegada el 2026-04-10 + +### Comandos Útiles +```bash +# Conexión directa +ssh -i ~/.ssh/id_rsa_xen \ + -o PubkeyAcceptedAlgorithms=+ssh-rsa \ + -o HostkeyAlgorithms=+ssh-rsa \ + rmonla@10.0.10.23 "xe vm-list" + +# Desde ADN CLI (pendiente de automatización) +./adn/tools/run ssh srv-xen1 "hostname" +``` + ## Bitácora de Alta - **Fecha**: 2026-02-18 - **Acción**: Re-Sondeo con Script `alta_nodo.rb`.