GNU/Linux >> Tutoriales Linux >  >> Linux

10 ejemplos de cryptsetup de Linux para la administración de claves LUKS (cómo agregar, eliminar, cambiar y restablecer la clave de cifrado LUKS)

LUKS es el cifrado de disco para Linux.

La primera vez que encripta una partición con LUKS (o cuando selecciona la opción de encriptar disco durante la instalación del sistema operativo), debe especificar una contraseña que se usará cuando abra la partición LUKS.

Pero, después de eso, puede montar y desmontar la partición tantas veces como quiera sin tener que introducir la contraseña hasta que reinicie el sistema.

Imagine los siguientes dos escenarios:

  1. Olvidaste la contraseña de LUKS. O heredó un sistema de alguien que tiene una partición montada con cifrado LUKS. No tienes la contraseña de LUKS para esto. Cuando reinicie el sistema, tendrá problemas, ya que no tiene la clave LUKS.
  2. Para fines de cumplimiento de la seguridad, debe cambiar la contraseña de cifrado de LUKS con frecuencia. En este caso, debe rotar la clave LUKS sin interrumpir la partición montada.

En este tutorial, analizaremos todo lo que necesita saber sobre la administración de claves de LUKS.

1. Ocho ranuras para llaves LUKS

En LUKS, para una única partición cifrada, puede tener ocho claves diferentes.

Cualquiera de las ocho claves diferentes se puede utilizar para abrir la partición cifrada.

Puede elegir tener solo una clave en una partición, o puede asignar las ocho claves diferentes.

Estas claves se almacenan en ranuras de claves LUKS para la partición. Por lo tanto, habrá 8 ranuras para llaves para una partición.

Para ver todas las ranuras de claves, use cryptsetup luksDump como se muestra a continuación. En este ejemplo, está usando solo dos ranuras.

# cryptsetup luksDump /dev/sdb1 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: ENABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

En lo anterior:

  • /dev/sdb1 es la partición cifrada de LUKS.
  • El número de ranura para llave comienza en 0. Dado que tenemos 8 ranuras, el número de ranura para llave comienza en 0 a 7.
  • HABILITADO indica que esta ranura en particular tiene una clave asignada.
  • Aquí tenemos dos ranuras con llave LUKS. Entonces, la partición cifrada /dev/sdb1 LUKS tiene dos claves asignadas.

2. Agregar nueva clave LUKS

Para agregar una nueva frase de contraseña LUKS (clave LUKS) a la partición cifrada /dev/sdb1 LUKS, use el comando cryptsetup luksAddKey como se muestra a continuación.

# cryptsetup luksAddKey /dev/sdb1
Enter any passphrase: 
Enter new passphrase for key slot: 
Verify passphrase: 

En lo anterior:

  • Cuando dice "Ingrese cualquier frase de contraseña:", debe ingresar cualquiera de las contraseñas existentes para /dev/sdb1. Como vimos anteriormente, esto ya tenía dos contraseñas de Slot 0 y Slot 1. Debe ingresar cualquiera de esas contraseñas primero.
  • Una vez que ingrese una contraseña existente, puede asignar una nueva clave LUKS.

Cada vez que agregue una nueva clave LUKS, se agregará a la siguiente ranura disponible. Como ya teníamos dos llaves existentes, la nueva llave se agregó a la ranura n.° 2, que era la siguiente ranura disponible.

Por lo tanto, las ranuras del 0 al 2 dirán "HABILITADO". Tenemos tres llaves LUKS en /dev/sdba1.

# cryptsetup luksDump /dev/sdb1 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: ENABLED
Key Slot 2: ENABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

3. Agregue una nueva clave LUKS a una ranura específica

En lugar de que LUKS agregue la nueva clave a la siguiente ranura disponible, también puede agregar una nueva clave a una ranura específica.

Para esto, use la opción -S en cryptsetup luksAddKey como se muestra a continuación.

En este ejemplo, estamos agregando una nueva clave LUKS a la ranura n.º 5. Asigné la nueva contraseña como:PasswordforSlot5

# cryptsetup luksAddKey /dev/sdb1 -S 5

Como vemos a continuación, ahora la ranura n.º 5 dice "HABILITADO", mientras que las ranuras n.º 3 y n.º 4 todavía están en estado DESHABILITADO.

# cryptsetup luksDump /dev/sdb1 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: ENABLED
Key Slot 2: ENABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: ENABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

En esta etapa, tenemos 4 claves LUKS asignadas a la partición cifrada /dev/sdb1.

4. Eliminar una clave LUKS existente

Para eliminar una clave existente de la partición LUKS, use cryptsetup luksRemoveKey como se muestra a continuación.

En este ejemplo, solo debe ingresar la contraseña (clave) que desea borrar.

Quitar/Borrar/Eliminar una llave LUKS de una ranura. No es necesario especificar el número de ranura. ¡En su lugar, especifique la clave que se eliminará!.

En este ejemplo, cuando me pide "Ingrese la frase de contraseña de LUKS para eliminar:", ingresé la clave que se creó en el ejemplo anterior:PasswordforSlot5

# cryptsetup luksRemoveKey /dev/sdb1
Enter LUKS passphrase to be deleted: 

Como puede ver en la siguiente salida de luksDump, la clave en la ranura n.º 5 ahora está borrada.

# cryptsetup luksDump /dev/sdb1 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: ENABLED
Key Slot 2: ENABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

5. Eliminar una clave LUKS usando luksKillSlot

Si no tiene la clave para una ranura en particular, pero solo quiere eliminarla, puede hacerlo usando el comando cryptsetup luksKillSlot como se muestra a continuación.

En este ejemplo, estamos eliminando la clave de la ranura n.º 2 de LUKS.

Para esto, debe ingresar la clave LUKS para cualquiera de las ranuras. Esto es solo como una validación antes de eliminar la clave de la ranura n.º 2.

# cryptsetup luksKillSlot /dev/sdb1 2
Enter any remaining LUKS passphrase: 

Como puede ver en la siguiente salida de luksDump, la clave en la ranura n.º 2 ahora está borrada.

# cryptsetup luksDump /dev/sdb1 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: ENABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

6. Agregar nueva clave LUKS desde un archivo

También puede agregar una nueva clave LUKS basada en un archivo de claves que ya tiene, como se muestra a continuación.

# cryptsetup luksAddKey  /dev/sdb1 masterkeyfile
Enter any passphrase: 

En lo anterior:

  • masterkeyfile contiene la nueva clave LUKS que desea agregar. Este debería ser un archivo binario.
  • Cuando se le solicite "Ingrese cualquier frase de contraseña:", ingrese cualquiera de las claves LUKS existentes para la partición /dev/sdb1.
  • Como puede ver arriba, no solicitó una nueva clave LUKS, ya que la tomó del archivo de claves maestras.

Como puede ver en la siguiente salida de luksDump, esta nueva clave del archivo de claves maestras se agrega a la ranura n.º 2

# cryptsetup luksDump /dev/sdb1 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: ENABLED
Key Slot 2: ENABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

7. Restablecer clave LUKS olvidada:obtener clave existente

Si reiniciaste el servidor y no puedes montar tu partición cifrada de LUKS porque olvidaste tu contraseña de LUKS, entonces no tienes suerte, puedes restablecerla.

Pero, si una partición LUKS encriptada ya está abierta, y si no ha reiniciado el sistema, y ​​ha olvidado la contraseña de LUKS para la partición que ya está montada (al menos LUKS se abrió una vez desde el último reinicio), entonces puede asignar una nueva clave LUKS.

En este escenario de "olvidé mi contraseña de LUKS", puede realizar los siguientes dos pasos:

  1. Extraiga la clave cifrada actual de la partición LUKS
  2. Cree una nueva clave LUKS utilizando la clave cifrada extraída anteriormente

En este ejemplo, tengo montada la partición /home1, que es una partición cifrada con LUKS, pero no tengo la contraseña para esto.

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             127G   44G   76G  37% /
/dev/mapper/home1      93G  188M   88G   1% /home1

El nombre del volumen es lo que esté después de "/dev/mapper/" en la primera columna de la salida del comando df anterior. Entonces, en nuestro ejemplo, el nombre del volumen es "home1"

La siguiente tabla dmsetup –showkeys mostrará las claves cifradas de todas las particiones que están montadas en su sistema.

# dmsetup table --showkeys 
home1: 0 197259264 crypt aes-cbc-essiv:sha256 607f482870c795a9b1e307ffbfc6643eaa219e9ef8c6773de02cd298c8fcda3c 0 8:17 4096

El campo después de "aes-cbc-essiv:sha256" es la contraseña cifrada. Obtén la clave LUKS encriptada y guárdala en un archivo.

# vi existinglukskey.txt
607f482870c795a9b1e307ffbfc6643eaa219e9ef8c6773de02cd298c8fcda3c

8. Restablecer clave LUKS olvidada:crear un archivo de clave binaria

Ahora, tenemos que convertir esta clave existente de un archivo de texto a un archivo binario. Use el comando xxd como se muestra a continuación.

# xxd -r -p existinglukskey.txt existinglukskey.bin

En lo anterior:

    La opción
  • -r es para invertir. Esto convertirá el volcado hexadecimal en binario.
  • La opción
  • -p es para postscript. Esto indica un estilo de volcado hexadecimal continuo postscript.
  • archivo de entrada lukskey.txt existente
  • archivo de salida lukskey.bin existente. Ahora contendrá la contraseña de LUKS encriptada existente en un archivo binario.

9. Restablecer clave LUKS olvidada:agregar una nueva clave

Finalmente, agregue una nueva clave LUKS utilizando la clave LUKS existente que extrajimos en el archivo binario.

# cryptsetup luksAddKey /dev/sdb1 --master-key-file <(cat existinglukskey.bin)
Enter new passphrase for key slot: 
Verify passphrase: 

En lo anterior:

  • –master-key-file Especifique aquí el archivo binario. No utilice el lukskey.txt existente. En su lugar, utilice el lukskey.bin existente que creamos anteriormente.
  • Como puede ver arriba, luksAddKey no solicitó la contraseña de LUKS existente, ya que la tomó del archivo binario.
  • Cuando se le solicite "Ingrese una nueva frase de contraseña para la ranura de la llave:", ingrese la nueva contraseña de LUKS. Pero, esta vez, no olvides esto.

Nuevamente, recuerde esto:si olvida la contraseña de LUKS después de reiniciar el sistema, no tendrá Luks (no tendrá suerte), ya que no podrá restablecerla.

10. Volcar la llave maestra de LUKS

También puede volcar la MasterKey y guardarla en algún lugar seguro. Use la opción –dump-master-key junto con luksDump como se muestra a continuación.

# cryptsetup luksDump --dump-master-key /dev/sdb1
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase: 
LUKS header information for /dev/sdb1
Cipher name:    aes
Cipher mode:    cbc-essiv:sha256
Payload offset: 4096
UUID:           146d639a-757c-4bcb-aee6-8fe815345104
MK bits:        256
MK dump:        60 7f 48 28 70 c7 95 a9 b1 e3 07 ff bf c6 64 3e 
                aa 21 9e 9e f8 c6 77 3d e0 2c d2 98 c8 fc da 3c 

Tenga en cuenta que debe almacenar el volcado de encabezado de LUKS en un lugar seguro. Usando el volcado de la clave maestra, alguien puede acceder a la partición cifrada de LUKS.


Linux
  1. Cómo agregar o eliminar un usuario de un grupo en Linux

  2. Cómo cambiar, eliminar o deshabilitar la contraseña de usuario en Linux

  3. Cómo cambiar Shell en Linux

  4. 7 ejemplos de comandos chkconfig de Linux:Agregar, quitar, ver, cambiar servicios

  5. 5 ejemplos de comandos táctiles de Linux (cómo cambiar la marca de tiempo del archivo)

Cómo agregar un host remoto de Linux a Cacti para monitoreo

Cómo agregar un host Linux en el servidor Zabbix para monitoreo

Cómo agregar una contraseña para proteger un archivo Vim en Linux

Cómo cambiar de usuario en Linux

Cómo cambiar la dirección IP en Linux

7 ejemplos de comandos de ruta de Linux (cómo agregar una ruta en Linux)