Tengo un servidor Debian Wheezy que se ha estado ejecutando durante un tiempo con una unidad cifrada. La contraseña de la unidad cifrada ( /dev/sda5
) se perdió cuando mi archivo de contraseña cifrada estaba dañado.
Me gustaría poder reiniciar este servidor, pero eso, por supuesto, requerirá esa contraseña. Dado que la unidad está claramente en un estado descifrado, ¿hay alguna forma de cambiar la contraseña sin conocer la anterior?
cryptsetup luksChangeKey /dev/sda5
requiere la contraseña del volumen.
Por supuesto, podría rsync
eliminar todo y reconstruirlo, pero me gustaría evitarlo. Miré a través de la memoria ( #cat /dev/mem | less
), pero no pude encontrarlo (¡lo cual es muy bueno!).
Respuestas:
Sí, puede hacerlo accediendo a la clave maestra mientras se descifra el volumen.
El rápido y sucio para agregar una nueva frase de contraseña:
device
yvolume_name
debe establecerse adecuadamente.volume_name
es el nombre del volumen descifrado, el que ves en/dev/mapper
.Explicación:
Los volúmenes LUKS cifran sus datos con una clave maestra. Cada frase de contraseña que agregue simplemente almacena una copia de esta clave maestra cifrada con esa frase de contraseña. Entonces, si tiene la clave maestra, simplemente necesita usarla en una nueva ranura de clave.
Vamos a romper el comando de arriba.
Esto arroja un montón de información sobre el volumen descifrado activamente. La salida se ve así:
El campo # 5 es la clave maestra.
No voy a mostrar el resultado de esto, ya que son datos binarios, pero lo que hace es tomar la clave maestra para el volumen y luego convertirlo en datos binarios sin procesar que se necesitarán más adelante.
Esto le dice a cryptsetup que agregue una nueva clave al volumen. Normalmente, esta acción requiere una clave existente, sin embargo, usamos
--master-key-file
para decirle que queremos utilizar la clave maestra en su lugar.La
<(...)
sustitución y redirección de comandos de shell es. Básicamente ejecuta todo lo que está dentro, envía la salida a una tubería y luego la sustituye<(...)
por una ruta a esa tubería.Entonces, todo el comando es solo una línea para condensar varias operaciones.
fuente
linear
, entonces ese no es un volumen LUKS abierto (valor incorrecto paravolume_name
el comando proporcionado). Un volumen LUKS abierto tendrácrypt
en el tercer campo. Encryptsetup luksOpen /dev/foo bar
, elvolume_name
valor seríabar
./dev/mapper
nombradoluks-.....
. Ese es el volumen que necesita usar, no el volumen lógico mapeado LVM.dmsetup table
ha cambiado. Al menos para mí, la clave maestra se muestra en la columna$6
.