reasignar la partición LUKS de solo lectura a lectura-escritura

reasignar la partición LUKS de solo lectura a lectura-escritura

Se puede invocar cryptsetup con la opción --readonlyo -r, que configurará una asignación de solo lectura:

cryptsetup --readonly luksOpen /dev/sdb1 sdb1

Una vez que he abierto un dispositivo como de solo lectura, ¿puedo reasignarlo posteriormente para lectura y escritura? Obviamente, me refiero a mapearlo de lectura y escritura sin cerrarlo primero y luego abrirlo nuevamente. ¿Puedo reasignarlo sin tener que volver a escribir mi contraseña?

Si esto no es posible, ¿es simplemente que cryptsetup no lo admite o existe algún nivel más fundamental?

Respuesta1

No parece posible con el cryptsetupcomando. Desafortunadamente cryptsetuptiene algunas banderas inmutables... --allow-discardstambién es una de ellas. Si esto no estaba configurado en el momento de abrir el contenedor, no podrá agregarlo más tarde.

Al menos, no con el cryptsetupmando. Sin embargo, dado que cryptsetupcrea objetivos regulares de Device Mapper, puede recurrir a dmsetupellos para modificarlos. Por supuesto, esto no se recomienda por varias razones: es como cambiar la tabla de particiones que están en uso: estropearla y podrías perder todos tus datos.

El asignador de dispositivos permite la reasignación dinámica de todos los dispositivos en tiempo de ejecución y no le importa en absoluto la seguridad de sus datos; Es por eso que esta característica generalmente está incluida detrás de la capa LVM, que mantiene los metadatos necesarios para que sea segura.

Cree un dispositivo LUKS de solo lectura:

# truncate -s 100M foobar.img
# cryptsetup luksFormat foobar.img
# cryptsetup luksOpen --read-only foobar.img foobar

La forma dmsetuplo ve:

# dmsetup info foobar
Name:              foobar
State:             ACTIVE (READ-ONLY)
Read Ahead:        256
Tables present:    LIVE
[...]
# dmsetup table --showkeys foobar
0 200704 crypt aes-xts-plain64 ef434503c1874d65d33b1c23a088bdbbf52cb76c7f7771a23ce475f8823f47df 0 7:0 4096

Tenga en cuenta la clave maestra que normalmente no debería filtrarse, ya que rompe cualquier protección de fuerza bruta que ofrezca LUKS. Desafortunadamente no he encontrado una manera sin usarlo, ya que dmsetuptambién falta una --make-this-read-writeopción directa. Sin embargo, dmsetup reloadpermite reemplazar una asignación por completo, por lo que la reemplazaremos por sí misma en modo lectura-escritura.

# dmsetup table --showkeys foobar | dmsetup reload foobar
# dmsetup info foobar
Name:              foobar
State:             ACTIVE (READ-ONLY)
Read Ahead:        256
Tables present:    LIVE & INACTIVE

Sigue siendo de solo lectura después de la recarga, porque la recarga pasa a la tabla inactiva.

Para activar la tabla inactiva, utilice dmsetup resume:

# dmsetup resume foobar
# dmsetup info foobar
Name:              foobar
State:             ACTIVE
Read Ahead:        256
Tables present:    LIVE

Y así tenemos un dispositivo LUKS de lectura y escritura.

¿Funciona con un sistema de archivos en vivo?

# cryptsetup luksOpen --readonly foobar.img foobar
# mount /dev/mapper/foobar /mnt/foobar
mount: /mnt/foobar: WARNING: device write-protected, mounted read-only.
# mount -o remount,rw /mnt/foobar
mount: /mnt/foobar: cannot remount /dev/mapper/foobar read-write, is write-protected.

Entonces es de solo lectura. Hazlo de lectura-escritura y vuelve a montarlo:

# dmsetup table --showkeys foobar | dmsetup reload foobar
# dmsetup resume foobar
# mount -o remount,rw /mnt/foobar
# echo hey it works > /mnt/foobar/amazing.txt

¿Podemos volver al modo de solo lectura?

# mount -o remount,ro /mnt/foobar
# dmsetup table --showkeys foobar | dmsetup reload foobar --readonly
# dmsetup resume foobar
# mount -o remount,rw /mnt/foobar
mount: /mnt/foobar: cannot remount /dev/mapper/foobar read-write, is write-protected.

Entonces probablemente funcione. El proceso para agregar allow_discardsuna bandera a una asignación de cripta existente es similar: debe recargar con una tabla que contenga esta bandera. Sin embargo, es posible que un sistema de archivos que ya detectó la ausencia de soporte de descarte no esté convencido de volver a detectarlo sobre la marcha. Por tanto, no está claro qué tan práctico es.


Aún así, a menos que tenga muy buenas razones para no hacerlo, debe limitarse a volver a abrir usando cryptsetupcomandos regulares, incluso si eso significa desmontar y volver a proporcionar la frase de contraseña. Es más seguro en todos los aspectos y, lo que es más importante, no elude el concepto de seguridad de LUKS.

Respuesta2

No es posible cambiar de solo lectura a lectura y escritura después de abrir el volumen. No veo ninguna opción en el código fuente de cryptsetup para hacer eso.

información relacionada