Cómo recuperar datos cifrados del disco duro con System Rescue CD a través de LAN

Cómo recuperar datos cifrados del disco duro con System Rescue CD a través de LAN

Me gustaría saber cuál sería la mejor manera de proceder con la clonación de mi disco duro hasta el punto de que pueda simplemente insertar la unidad clonada en mi PC y arrancar sin problemas desde ella como lo hago actualmente con la unidad existente.

Tengo un disco duro que ejecuta Debian y parece que está fallando según sus datos SMART. Tengo copias de seguridad y también puedo reinstalar el sistema operativo en una unidad nueva; sin embargo, mi primera preferencia en este momento sería clonar la unidad y actualmente no tengo otra opción que usar System Rescue CD 5.0.3 desde un CD de arranque.

El disco no tiene mucho contenido, probablemente menos de 10 GB de espacio utilizado, con muy pocos datos, por lo que no me preocupa demasiado el tiempo porque no espero que esto tome una cantidad extraordinaria de tiempo.

Si mal no recuerdo, revisé las opciones al instalar Debian para configurarlo como una unidad cifrada, así que creo que /dev/sda aparece como una partición de arranque no cifrada y el resto está cifrado, y luego en ese "resto", Tiene una pequeña partición raíz de 10 GB dentro del área cifrada y el resto no se utiliza actualmente.

También estoy tratando con unidades PATA más antiguas (no hay unidades SATA disponibles) y la computadora tiene un conector PATA en la placa base, al que se conecta un cable plano PATA con la unidad de CD-ROM para el arranque y el disco duro casi defectuoso. unidad, por lo que no hay espacio para conectar ninguna segunda unidad PATA para realizar una transferencia local.

Para solucionar esto, tengo una segunda computadora con el mismo conector PATA en la placa base, en la que conecté otra unidad de CD-ROM para arrancar y el disco duro de destino.

He iniciado ambas computadoras a través de la unidad de CD-ROM para abrir System Rescue CD 5.0.3 y estoy considerando mis opciones para clonar la unidad defectuosa lo mejor posible.

Las computadoras están disponibles a través de la LAN y me estoy conectando a ambas de forma remota a través de SSH a través de una terminal sin interfaz gráfica.

No estoy muy seguro de los tamaños de la unidad de origen y de la unidad de destino. Es posible que la unidad de origen tenga una capacidad mayor que la unidad de destino, por lo que lo ideal sería transferir solo el espacio utilizado en lugar de recorrer toda la unidad vacía.

Estaba considerando usar ddrescue como se describeaquí; sin embargo, sólo describe la transferencia de datos localmente.

ACTUALIZAR:Estoy viendo cómo el instalador de Debian configuró la unidad de origen. Parece que tengo tres particiones y sólo la última está cifrada:

src # fdisk -l /dev/sda
Disk /dev/sda: 37.3 GiB, 40027029504 bytes, 78177792 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x332e4146

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sda1  *       2048   247807   245760  120M 83 Linux
/dev/sda2        247808  8060927  7813120  3.7G 82 Linux swap / Solaris
/dev/sda3       8060928 78176255 70115328 33.4G 83 Linux

src# cryptsetup --verbose isLuks /dev/sda1 
Device /dev/sda1 is not a valid LUKS device.
Command failed with code 22: Invalid argument
src# cryptsetup --verbose isLuks /dev/sda2
Device /dev/sda2 is not a valid LUKS device.
Command failed with code 22: Invalid argument
src# cryptsetup --verbose isLuks /dev/sda3
Command successful.

Creo que también estoy intentando realizar transferencias entre unidades de capacidad similar: una unidad PATA de 40 GB a otra unidad PATA de 40 GB.

Aquí está el destino:

dest# fdisk -l /dev/sda
Disk /dev/sda: 37.3 GiB, 40027029504 bytes, 78177792 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

ACTUALIZAR:Estoy considerando usar NBD para exponer las particiones de la unidad de origen a través de la LAN para poder usar ddrescue desde el destino.

Esto es lo que intenté hasta ahora para exponer la unidad de origen...

src# nbd-server -d 8000 /dev/sda

...y montar localmente en la computadora de destino:

dest# nbd-client src 8000 /mnt/nbd-sda

Desafortunadamente, recibo un error al intentar esto; Ni siquiera puedo montar el dispositivo remoto:

Warning: the oldstyle protocol is no longer supported.
This method now uses the newstyle protocol with a default export
Error: Cannot open NBD: No such file or directory
Please ensure the 'nbd' module is loaded.
Exiting.

ACTUALIZAR:Lo siguiente que intento es simplemente recrear manualmente las particiones en la unidad de destino.

Empecé copiando el MBR sobre:

src# dd if=/dev/sda of=/tmp/sda-mbr.dat bs=512 count=1
dest# scp root@src:/tmp/sda-mbr.dat /tmp
dest# dd if=/tmp/sda-mbr.dat of=/dev/sda
dest# sync

Antes de continuar, pensé que esta vez sería útil al menos crear una partición de recuperación.

dest# fdisk /dev/sda

Estoy eliminando la última partición y dándome unos 15 GB de espacio para una partición final.

Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x332e4146

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1  *        2048   247807   245760  120M 83 Linux
/dev/sda2         247808  8060927  7813120  3.7G 82 Linux swap / Solaris
/dev/sda3        8060928 45809663 37748736   18G 83 Linux
/dev/sda4       45809664 78177791 32368128 15.4G 83 Linux

Necesito crear la misma partición cifrada en el destino que /dev/sda3 en el origen; También podría hacer lo mismo con esta partición de recuperación:

dest# cryptsetup luksFormat /dev/sda3 --verify-passphrase
dest# cryptsetup luksFormat /dev/sda4 --verify-passphrase

A continuación, abra la partición de recuperación cifrada:

dest# cryptsetup open /dev/sda4 sda4-opened
dest# mkdir /mnt/sda4-open
dest# mke2fs -j /dev/mapper/sda4-opened
dest# mount /dev/mapper/sda4-opened /mnt/sda4-open

Al menos ahora puedo montar esta partición de recuperación de forma remota y transferir los datos a la mejor unidad.

Primero, abrí la partición cifrada en la unidad de origen:

src# cryptsetup open /dev/sda3 sda3-opened
src# mkdir /mnt/sda3-open
src# mount /dev/mapper/sda3-opened /mnt/sda3-open

Ahora con df, puedo ver que aquí solo estoy usando 12 GB de espacio en disco.

Desmontemos pero mantengámoslo mapeado:

src# umount /mnt/sda3-open
src# rmdir /mnt/sda3-open

Ahora quería montar la partición de recuperación en la unidad de origen:

src# mkdir /mnt/dest-sda4
src# sshfs root@dest:/mnt/sda4-open /mnt/dest-sda4

Con esto montado, ahora puedo ejecutar ddrescue:

src# ddrescue -f -n /dev/sda1 /mnt/dest-sda4/sda1.ddrescue.img /mnt/dest-sda4/sda1.ddrescue.log

Esto produjo una imagen del mismo tamaño que la partición original, por lo que parece que esto no excluye el espacio no utilizado.

Lo estoy intentandofsarchiveren cambio ahora:

src# fsarchiver savefs /mnt/dest-sda4/sda1.fsarchiver.img.fsa /dev/sda1
Statistics for filesystem 0
* files successfully processed:....regfiles=314, directories=6, symlinks=0, hardlinks=0, specials=0
* files with errors:...............regfiles=0, directories=0, symlinks=0, hardlinks=0, specials=0

Montar /dev/sda1 y ejecutar df muestra que solo está usando 33 MB, y el archivo .fsa solo tiene 24 MB, por lo que tal vez esté comprimido. Es mejor que los 120 MB originales.

Ahora probemos con la partición raíz sda3 para ver cómo funciona:

src# fsarchiver savefs /mnt/dest-sda4/sda3.fsarchiver.img.fsa /dev/mapper/sda3-opened

Probablemente esto llevará un tiempo, así que guardaré esta actualización por ahora.

ACTUALIZAR:Esto fue más rápido de lo que esperaba. Esto es lo que terminé obteniendo:

dest# ls -lh
total 7.7G
drwx------ 2 root root  16K Apr  8 01:49 lost+found
-rw-r--r-- 1 root root  24M Apr  8 02:04 sda1.fsarchiver.img.fsa
-rw-r--r-- 1 root root 7.7G Apr  8 02:43 sda3.fsarchiver.img.fsa

Aquí está la parte aún más interesante al observar el resultado del comando anterior:

src# fsarchiver savefs /mnt/dest-sda4/sda3.fsarchiver.img.fsa /dev/mapper/sda3-opened
Statistics for filesystem 0
* files successfully processed:....regfiles=149025, directories=84796, symlinks=20559, hardlinks=127551, specials=1269
* files with errors:...............regfiles=0, directories=0, symlinks=0, hardlinks=0, specials=0

Si estoy leyendo esto correctamente, es alentador porque no tuvo ninguna dificultad para leer datos desde la unidad de origen.

Limpiemos algunos:

src# umount /mnt/dest-sda4
src# rmdir /mnt/dest-sda4

A continuación, restauraré los archivos archivados en /dev/sda1 y /dev/sda3 del destino, pero primero echemos un vistazo y veamos qué tenemos en la unidad de destino porque olvidé dónde lo dejé al configurarlo.

Primero, ¿hay algún sistema de archivos en /dev/sda1?

dest# mkdir /mnt/sda1
dest# mount /dev/sda1 /mnt/sda1
NTFS signature is missing.
Failed to mount '/dev/sda1': Invalid argument
The device '/dev/sda1' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?

De acuerdo. No esperaba ningún sistema de archivos pero no esperaba un mensaje NTFS. Entonces no hay nada allí.

Restauremos la primera imagen de partición:

dest# fsarchiver restfs /mnt/sda4-open/sda1.fsarchiver.img.fsa id=0,dest=/dev/sda1
Statistics for filesystem 0
* files successfully processed:....regfiles=314, directories=6, symlinks=0, hardlinks=0, specials=0
* files with errors:...............regfiles=0, directories=0, symlinks=0, hardlinks=0, specials=0

Montemos ahora:

dest# mount /dev/sda1 /mnt/sda1
dest# ls -l /mnt/sda1
...
dest$ df -h | grep sda1
...

Las cosas pintan bien hasta ahora.

Hagamos la partición raíz ahora.

dest# cryptsetup open /dev/sda3 sda3-opened
dest# mkdir /mnt/sda3-open
dest# mount /dev/mapper/sda3-opened /mnt/sda3-open
NTFS signature is missing.
Failed to mount '/dev/mapper/sda3-opened': Invalid argument
The device '/dev/mapper/sda3-opened' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?

Lo mismo que antes: no hay nada ahí.

Restauremos la imagen de la partición:

dest# fsarchiver restfs /mnt/sda4-open/sda3.fsarchiver.img.fsa id=0,dest=/dev/mapper/sda3-opened
Statistics for filesystem 0
* files successfully processed:....regfiles=149025, directories=84796, symlinks=20559, hardlinks=127551, specials=1269
* files with errors:...............regfiles=0, directories=0, symlinks=0, hardlinks=0, specials=0

Montemos ahora:

dest# mount /dev/mapper/sda3-opened /mnt/sda3-open
dest# ls -l /mnt/sda3
...
dest$ df -h | grep sda3
...

Las cosas pintan bien hasta ahora.

También ejecuté lo siguiente en ambos:

# fsarchiver probe simple

Las cosas se ven como se esperaba.

Una cosa que creo que todavía me falta es que creo que esto arruinará a Grub. Me parece recordar algo acerca de que la Etapa 1 arrancó bien desde el MBR, pero luego no pudo encontrar la Etapa 2 en la partición /boot cuando intenté hacer algo como esto la última vez.

Esta páginallevado aeste, que describe cómo reparar Grub:

dest# mount -o bind /proc /mnt/sda3-open/proc
dest# mount -o bind /dev /mnt/sda3-open/dev
dest# mount -o bind /sys /mnt/sda3-open/sys
dest# chroot /mnt/sda3-open /bin/bash
(dest) chroot# mount /dev/sda1 /boot/
(dest) chroot# grub-install /dev/sda

Installing for i386-pc platform.
Installation finished. No error reported.

(dest) chroot# umount /boot
(dest) chroot# exit
dest# umount /mnt/sda3-open/{sys,dev,proc}

Cuando reinicio, esto debería funcionar y la unidad debería arrancar correctamente; sin embargo, ya es tarde y no quiero entrar en detalles todavía.

Además, todavía no estoy convencido de que esto vaya a tener un final feliz. El comando grub-install anterior indicó que se está instalando para i386, pero creo que quiero 64 bits.

Es posible que tenga que rehacer esta parte reiniciando System Rescue CD a través de Rescue64. No estoy seguro de si el arranque predeterminado mostraba 32 bits.

De nuevo, mañana me ocuparé del resto.

ACTUALIZAR:Así que la buena noticia es que el arranque predeterminado para System Rescue CD era Rescue64, por lo que no habría habido ningún problema.

Resulta que me olvidé por completo de LVM y los UUID de la unidad obviamente no coinciden.

...
cryptsetup: lvm is not available
cryptsetup: lvm is not available
cryptsetup: lvm is not available
cryptsetup: lvm is not available
  ALERT! /dev/disk/by-uuid/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx does not exist.
        Check cryptopts=source= bootarg: cat /proc/cmdline
        or missing modules, devices: cat /proc/modules; ls /dev
-r Dropping to a shell. Will skip /dev/disk/by-uuid/xxxxxxxx-xxxx-xxxx-xxxx-xxxx
xxxxxxxx if you can't fix.
modprobe: module ehci-orion not found in modules.dep


BusyBox vx.xx.x (Debian x:x.xx.x-x+xxxxxx) built-in shell (ash)
Enter 'help for a list of built-in commands.

/bin/sh: can't access tty: job control turned off
(initramfs)

Supongo que podría luchar con estos, pero no me molestaré. En lugar de eso, voy a intentar lo que sugirió Dirkt y clonar el /dev/sda completo (UUID y todo), ya que 40 GB son solo cuatro veces 10 GB, que transfirí anoche y no me tomó mucho tiempo. LAN.

No pude hacer esto anoche porque no pude hacer que NBD funcionara, así que recurrí a guardarlo en archivos de imagen. No puedo hacer eso si estoy haciendo una clonación completa del disco, así que veamos si las canalizaciones o canalizaciones con nombre funcionan mejor.

Entonces, volviendo al principio, ambas computadoras ahora se iniciaron desde el CD de inicio del System Rescue CD, ambas están disponibles a través de la red a través de sus respectivas direcciones IP asignadas por DHCP y ambas tienen su contraseña de root configurada mediante el passwdcomando.

Antes de hacer esto con las unidades reales, quiero practicar con una pequeña falsa, así que comenzaré por configurarla.

src# dd if=/dev/zero of=/root/tempsrc.dat bs=1M count=128
...
src# fdisk -l /root/tempsrc.dat
Disk /root/tempsrc.dat: 128 MiB, 134217728 bytes, 262144 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x8b8647e7

Device             Boot  Start    End Sectors Size Id Type
/root/tempsrc.dat1 *      2048  34815   32768  16M 83 Linux
/root/tempsrc.dat2       34816 100351   65536  32M 82 Linux swap / Solaris
/root/tempsrc.dat3      100352 262143  161792  79M 83 Linux

src# mkdir /mnt/tempsrc
src# mkdir /mnt/tempsrc-mounted
src# losetup /dev/loop1 /root/tempsrc.dat -o $(expr 2048 \* 512)
src# mke2fs /dev/loop1
src# mount /dev/loop1 /mnt/tempsrc-mounted
src# echo 'This is partition 1' > /mnt/tempsrc-mounted/note1.txt
src# umount /mnt/tempsrc-mounted
src# losetup -d /dev/loop1
src# losetup /dev/loop1 /root/tempsrc.dat -o $(expr 100352 \* 512)
src# cryptsetup luksFormat /dev/loop1 --verify-passphrase
src# cryptsetup open /dev/loop1 loop1-opened
src# mke2fs -j /dev/mapper/loop1-opened
src# mount /dev/mapper/loop1-opened /mnt/tempsrc-mounted
src# echo 'This is partition 3' > /mnt/tempsrc-mounted/note3.txt
src# umount /mnt/tempsrc-mounted
src# cryptsetup close loop1-opened
src# losetup -d /dev/loop1
src# rmdir /mnt/tempsrc-mounted
src# rmdir /mnt/tempsrc

Lo sé. No volví a tratar con LVM. Oh bien.

Ahora tengo un /root/tempsrc.dat que contiene una imagen de un disco como una imagen de tarjeta SD que quiero transferir al destino remoto. En la primera partición hay un archivo llamado note1.txt, y la tercera partición está cifrada y tiene un note3.txtcontenido diferente. Me gustaría asegurarme de poder acceder a todo esto después de ejecutarlo fsarchivery transferirlo.

Preparemos algo en el destino:

dest# dd if=/dev/zero of=/root/tempdest.dat bs=1M count=128
dest# fdisk -l /root/tempdest.dat
Disk /root/tempdest.dat: 128 MiB, 134217728 bytes, 262144 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Creemos también dispositivos de loopback para estos:

src# losetup /dev/loop1 /root/tempsrc.dat
dest# losetup /dev/loop2 /root/tempdest.dat

Ahora, mientras me estaba preparando para realizar la transferencia, descubrí que fsarchiver no puede manejarlo como se indica.aquíyaquí.

Esperaba hacer algo como lo siguiente:

src# fsarchiver savefs /tmp/fifo1 /dev/loop1
dest# fsarchiver restfs /tmp/fifo2 id=0,dest=/dev/loop2

ACTUALIZAR:Reemplacé mi unidad de destino de 40 GB con una tercera unidad temporal y encendí la PC de destino.

Comencemos configurando esta nueva unidad:

dest# mkdir /mnt/sda-open
dest# mount /dev/sda1 /mnt/sda-open

Intentando transferir nuevamente, excepto que esta vez operando en todo el /dev/sda a la vez:

src# mkdir /mnt/dest-sda
src# sshfs root@dest:/mnt/sda-open /mnt/dest-sda
src# fsarchiver savefs /mnt/dest-sda/src-sda.fsarchiver.img.fsa /dev/sda
filesys.c#317,generic_mount(): partition [/dev/sda] cannot be mounted on [/tmp/fsa/20180408-222928-xxxxxxxx-00] as [vfat] with options []
oper_save.c#1032,filesystem_mount_partition(): cannot mount partition [/dev/sda]: filesystem may not be supported by either fsarchiver or the kernel.
removed /mnt/dest-sda/src-sda.fsarchiver.img.fsa

Bueno, hasta aquí esa idea. Supongo que lo llaman archivador "FS" por una razón. Probemos con partimage.

src# partimage --compress=1 save /dev/sda /mnt/dest-sda/src-sda.partimg.bz2

Esto tampoco funcionó; aparentemente esto se refiere a sistemas de archivos y no a discos en su conjunto.

Dado que estamos operando en el disco como un todo, veamos si ddrescue funciona ahora.

src# ddrescue --no-scrape /dev/sda /mnt/dest-sda/src-sda.ddrescue.img /mnt/dest-sda/src-sda.ddrescue.img.log
GNU ddrescue 1.21
Press Ctrl-C to interrupt
     ipos:  785580 kB, non-trimmed:        0 B,  current rate:  12320 kB/s
     opos:  785580 kB, non-scraped:        0 B,  average rate:  10615 kB/s
non-tried:   39241 MB,     errsize:        0 B,      run time:      1m 14s
  rescued:  785580 kB,      errors:        0,  remaining time:          1h
percent rescued:   1.96%      time since last successful read:          0s
Copying non-tried blocks... Pass 1 (forwards)

Comencé esto a las 5:41 pm para una unidad de 40 GB a través de una LAN de 100 Mbps. Por el momento, la salida afirma que estará listo en aproximadamente una hora.

Respuesta1

Bueno, parece que estaba en el camino correcto con el disco intermedio. Esto no es lo que pretendía hacer originalmente, pero me ayudó a superar mi problema.

La nueva unidad ahora es un clon de la unidad original y funciona muy bien.

Para clonar mi unidad original con las limitaciones presentadas, en particular requiriendo pasar por la LAN con un CD de rescate del sistema sin Clonezilla, pude superar esto de la siguiente manera.

Primero, conecté el disco duro temporal de 160 GB a una PC de repuesto como se describe anteriormente, e inicié ambas computadoras con mi disco CD de arranque System Rescue.

Desde mi srcPC, monté el disco duro de 160 GB en la destPC localmente usando sshfsy luego ejecuté ddrescuecomo se describe arriba para crear una imagen del disco duro defectuoso en el disco duro de 160 GB como un archivo de imagen. Esta unidad de 40 GB se transformó en un archivo de imagen de 40 GB y tardó aproximadamente una hora en completarse en mi LAN de 100 Mbps.

Voy a mantener esta imagen para no tener que volver a hacer esto; A partir de este momento, las copias de seguridad incrementales de los datos deberían ser suficientes para restaurarlos después de que se haya capturado esta imagen inicial.

Una vez que se completó esta fase, reemplacé la unidad defectuosa de 40 GB con la unidad de reemplazo que tiene la misma capacidad de 40 GB en el srchost sin tocarla ni siquiera apagarla dest.

Luego, encendí srcnuevamente con el CD System Rescue iniciado, monté el destdirectorio sshfsnuevamente y esta vez restauré desde mi imagen con:

dest# ddrescue --force --no-scrape /mnt/dest-sda/src-sda.ddrescue.img /dev/sda /mnt/dest-sda/src-restore-sda.ddresue.img_2018-04-08.log

Esto tardó aproximadamente otra hora en completarse.

Como se trataba de una imagen de una unidad completa, no de particiones, pude simplemente expulsar el CD y reiniciar src, y todo quedó como estaba.

información relacionada