diff --git a/.gitignore b/.gitignore index e9c7bb7d..d94a4e34 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,8 @@ tools/w-zombi/payloads/runSysDasuten.zip .yarn/build-state.yml .yarn/install-state.gz .yarn/berry.cjs + +# Bóveda ADN +adn/tools/candados/.boveda.json +adn/tools/candados/.session + diff --git a/adn/tools/candados/.boveda.json b/adn/tools/candados/.boveda.json index 18e349c1..4e7786c1 100644 --- a/adn/tools/candados/.boveda.json +++ b/adn/tools/candados/.boveda.json @@ -15,5 +15,7 @@ "srvv-nginx-rm:rmonla": "eyJpdiI6ImFsQnk5UjhLaDFYWHJsWnciLCJ0YWciOiJJaEtCS215ekkwYVdFR0ZHNzFVN0VBPT0iLCJkYXRhIjoiUkcvSS9sMjhoQnFpRmZobFZBPT0ifQ==", "srv-xen01:rmonla": "eyJpdiI6ImdURFJuRDNucGpETkxVVjAiLCJ0YWciOiJWdnNzdmRxRGthS0RnUTBWeE1xYUpRPT0iLCJkYXRhIjoiaGszT2lYRkNONVVWakFhQjdnPT0ifQ==", "dasu-sql4:Administrador": "eyJpdiI6ImQzc09sRmo2NEZBbHZmN2IiLCJ0YWciOiJxK3Z3RU9uZG1QMXNUV1hJbEFmV3d3PT0iLCJkYXRhIjoicXd5dDI4bHBkeFNhRk1yTzluczlxdz09In0=", - "dasu-sql4:sa": "eyJpdiI6Ik43aWR5d2RacFVFR3pyNysiLCJ0YWciOiJxeVAyTmxtYXloNTdFTVlvMFphQ2hRPT0iLCJkYXRhIjoiT0lrR1FGMXRVZ0czYU5PK1ZFcG8wUT09In0=" + "dasu-sql4:sa": "eyJpdiI6Ik43aWR5d2RacFVFR3pyNysiLCJ0YWciOiJxeVAyTmxtYXloNTdFTVlvMFphQ2hRPT0iLCJkYXRhIjoiT0lrR1FGMXRVZ0czYU5PK1ZFcG8wUT09In0=", + "dasu-pcv:rustdesk": "eyJpdiI6ImRwRFRCYjNmc1htZUJMZ1ciLCJ0YWciOiJRYTdpcy9wRTdlTnpLemQ0Y1VqMTF3PT0iLCJkYXRhIjoiL3hEczU5OVRrRzAralFNPSJ9", + "dasu-pcv:adminpcv": "eyJpdiI6IlVUK3JOamxCeFhGUUlCMlUiLCJ0YWciOiI0MC81bE10Y0FJM1BqMTQ1NUIxWjhBPT0iLCJkYXRhIjoiUzZuOUIxaTVISmJpclNrREZYSTkwM1k9In0=" } diff --git a/adn/tools/cli/dasuten_backup_origen.rb b/adn/tools/cli/dasuten_backup_origen.rb new file mode 100644 index 00000000..b8315216 --- /dev/null +++ b/adn/tools/cli/dasuten_backup_origen.rb @@ -0,0 +1,31 @@ +require 'tiny_tds' +require 'time' + +pass = ENV['PASS'] || begin + puts "Falta ENV['PASS'] (usar candados run utnlarioja.intranet:monlaricardo 'ruby adn/tools/cli/dasuten_backup_origen.rb')" + exit 1 +end + +host = ENV['SQL_HOST'] || '10.0.10.200' +user = ENV['SQL_USER'] || 'UTNlarioja\\monlaricardo' + +begin + client = TinyTds::Client.new( + username: user, + password: pass, + host: host, + timeout: 600 # 10 minutos + ) + puts "[+] Conectado exitosamente a SQL Server en #{host}" + backup_file = "E:\\BK_SQL\\sysdasuten_compressed_ADN.bak" + puts "[*] Iniciando BACKUP DATABASE de 'sysdasuten' hacia #{backup_file}..." + puts " (Esto puede tomar unos 10-30 segundos usando compresión, por favor espera...)" + start_time = Time.now + res = client.execute("BACKUP DATABASE sysdasuten TO DISK = '#{backup_file}' WITH INIT, COMPRESSION, STATS=10") + res.each { |r| puts r } # Consumir resultados para esperar a que termine + + duration = Time.now - start_time + puts "[+] Backup completado exitosamente en #{duration.round(2)} segundos." +rescue => e + puts "[!] Error fatal: #{e.message}" +end diff --git a/adn/tools/cli/monitor_backup_107.sh b/adn/tools/cli/monitor_backup_107.sh new file mode 100755 index 00000000..181a8b2a --- /dev/null +++ b/adn/tools/cli/monitor_backup_107.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# Dron monitor de backup vzdump para VM 107 +echo "🛸 Monitoreando backup de VM 107 en srv-dasu (vía tasks de PVE)..." +while true; do + ACTIVE_TASKS=$(ssh srv-dasu "cat /var/log/pve/tasks/active 2>/dev/null" || true) + if echo "$ACTIVE_TASKS" | grep -q "vzdump:107"; then + echo "$(date +%H:%M:%S) | 🚧 Backup VZDUMP 107 en curso..." + else + echo "$(date +%H:%M:%S) | ✅ Backup de VM 107 completado" + exit 0 + fi + sleep 30 +done diff --git a/adn/tools/w-zombi/data/cmd.json b/adn/tools/w-zombi/data/cmd.json index b1f80df8..9801412b 100644 --- a/adn/tools/w-zombi/data/cmd.json +++ b/adn/tools/w-zombi/data/cmd.json @@ -1 +1 @@ -{"id":253,"cmd":"Get-Service | Where-Object { $_.Name -like '*qemu*' -or $_.Name -like '*ga*' -or $_.DisplayName -like '*QEMU*' -or $_.DisplayName -like '*Guest Agent*' } | Format-Table Name,DisplayName,Status,StartType -AutoSize"} \ No newline at end of file +{"id":260,"cmd":"hostname"} \ No newline at end of file diff --git a/docs/ambito/dtic-DASUTEN/A04.P005_DASUTEN-sin-DC.md b/docs/ambito/dtic-DASUTEN/A04.P005_DASUTEN-sin-DC.md index 45f1d7b2..0dfa74bb 100644 --- a/docs/ambito/dtic-DASUTEN/A04.P005_DASUTEN-sin-DC.md +++ b/docs/ambito/dtic-DASUTEN/A04.P005_DASUTEN-sin-DC.md @@ -199,11 +199,11 @@ Crear dos VMs nuevas (SQL Server + PC cliente) en `srv-dasu`, instalar el sistem #### 8.1 Orquestación de Drones (Extracción y Tránsito) - [x] **Generar Backup (Origen):** Dron orquestador ejecutado llamando al backend de postgres de Bitácoras. Backup generado hacia `E:\BK_SQL\sysdasuten_compressed_ADN.bak` en tiempo real (44.8 segundos). ✅ - [x] **Transferencia SMB (fenix -> ns8):** Script empaquetado (dron bypass) usando autenticación In-Memory desde `candados` con `smbget`, resolviendo las limitaciones del dominio. Descarga completada en NS8 (`/var/tmp/`). ✅ -- [ ] **Transferencia segura SCP (ns8 -> dasu-sql4):** Dron en tránsito (1.4 GB) cruzando el túnel por `srv-dasu` en modo ProxyCommand hacia el volumen `F:\BACKUP\` en Windows Core. +- [x] **Transferencia segura SCP (ns8 -> dasu-sql4):** Dron en tránsito cruzando el túnel por `srv-dasu` en modo ProxyCommand hacia el volumen `F:\BACKUP\` en Windows Core (tiempo de transferencia ~7m19s). ✅ #### 8.2 Restauración y Saneamiento (Destino) -- [ ] **Restauración Transaccional:** Ejecutar el `RESTORE DATABASE ... WITH REPLACE` asegurando el forzado a Single User previo para abortar sesiones huerfanas (usando WMI/SSH). -- [ ] **Verificación Post-Restore:** Dron sanitario que ejecute comprobación `DBCC CHECKDB` certificando la consistencia final de la DB. +- [x] **Restauración Transaccional:** Ejecución de `RESTORE DATABASE ... WITH REPLACE` asegurando el forzado a Single User (ejecutado directo, el Dron arrojó error de parsing UTF8 por los mensajes en ISO-8859-1 de `sqlcmd`). ✅ +- [x] **Verificación Post-Restore:** Comprobación `DBCC CHECKDB` certificando la consistencia final de la DB. ✅ --- | **Red** | Privada 10.0.100.x (gw interno) | DHCP del ISP (gw del ISP) | diff --git a/nodos/dasu-pcv.md b/nodos/dasu-pcv.md index f071161f..ed0d97c6 100644 --- a/nodos/dasu-pcv.md +++ b/nodos/dasu-pcv.md @@ -28,8 +28,9 @@ - **Dominio anterior**: UTNLARIOJA (Desvinculado) ## Gestión -- **Admin Local**: `adminpcv` -- **Acceso**: Consola noVNC de Proxmox (no requiere SSH ni W-Zombi para configuración base) +- **Admin Local**: `adminpcv` ($lldgUTNlarioja00) +- **Acceso Remoto**: RustDesk ID 296893471 (Password permanente: `$DASU123utn`) +- **Gestor Backup**: Proxmox Console noVNC ## Software - **Launcher DASUTEN**: Instalado (configuración legacy apuntando al antiguo SQL con dominio)