Cómo puedo crear una imagen de disco cifrado en debian o ubuntu?

Iniciado por WHK, 25 Mayo 2017, 18:50 PM

0 Miembros y 1 Visitante están viendo este tema.

WHK

Hola, tengo algunos equipos con debian y otros en ubuntu, me gustaría crear un archivo de imagen de disco pero cifrado, cosa que cuando necesite acceder a el montando la imagen necesite poner una contraseña para cifrar su contenido, de esta manera puedo tener un storage local seguro sin mayores complicaciones utilizando el mismo sistema de archivos que el sistema operativo, también podré llevar este storage cifrado a acualquier lugar desde una memoria sd, disco, cd, etc. No quiero usar fat o ntfs, quiero hacerlo en ext4 o algun sistema de archivos que me puedan recomendar para hacer esto, la idea es mantener las propiedades de los archivos, permisos, enlaces simbolicos, ejecución, etc.

Alguien me podría dar luces sobre como hacer esto desde cero?, luego de crear el disco puedo redimencionarlo para aumentar su capacidad?, hay alguna alternativa mejor que me permita mantener segura la información de os equipos sin tener que usar el engorroso sistema de cifrados nativo de arranque?

Cuando vea bien como hacer esto voy a hacer un script automatizado que le pida la contraseña al usuario y monte su disco descifrado automaticamente y que quede asi hasta que lo explulse o apague el pc o laptop.

Saludos.

engel lex

creo que para esto linux tiene LUKS, busca sobre el tema (en general es simple) y revisa si te sirve
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Slava_TZD

#2
El proceso es simple: creas un fichero del tamaño necesario, creas una partición con LUKS y luego lo formateas con el sistema de ficheros que quieras.


cd
### /dev/random o /dev/zero
dd if=/dev/urandom of=ficherocifrado bs=1M count=1024

cryptsetup -y luksFormat ficherocifrado

### Abres el fichero con luks y le das un nombre
cryptsetup luksOpen ficherocifrado volumen1

mkfs.ext4 -j /dev/mapper/volumen1


Para trabajar simplemente tienes que mapearlo y luego lo montas o desmontas como cualquier otra partición.


cryptsetup luksOpen ficherocifrado volumen1
cryptsetup luksClose volumen1


Si quieres cambiarle el tamaño añades mas basura al fichero y redimencionas el sistema de ficheros que hay dentro.


dd if=/dev/urandom bs=1M count=1024 >> ficherocifrado
cryptsetup luksOpen ficherocifrado volumen1
e2fsck -f /dev/mapper/volumen1
resize2fs /dev/mapper/volumen1


En la Wiki de Archlinux hay buena info, asegúrate de hacer backups regulares y mas importante aun, un backup del header. Si por alguna razón el header se daña y no tienes backup dile adiós a todo lo que había dentro.

https://wiki.archlinux.org/index.php/Dm-crypt


The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.

WHK


WHK

Hola, he vuelto con un par de preguntas.

Actualmente he sacado en limpio lo siguiente:

# Crear el disco

   # Crea un archivo con contenido basura
   dd if=/dev/urandom of=cryptdisk-1.luks bs=1M count=1024 status=progress

   # Establece la partición de cifrado al archivo con contenido basura
   cryptsetup -y -q luksFormat cryptdisk-1.luks

   # Crea el mapeo entre el archivo físico y la unidad de disco físico
   cryptsetup luksOpen cryptdisk-1.luks cryptdisk-1

   # Formatea en EXT4
   mkfs.ext4 -j /dev/mapper/cryptdisk-1

   # Cierra el disco
   cryptsetup luksClose cryptdisk-1


# Montar

   # Crea el mapeo entre el archivo físico y la unidad de disco físico
   cryptsetup luksOpen cryptdisk-1.luks cryptdisk-1

   # Crea el directorio temporal para montar el disco
   mkdir -p /media/cryptdisk-1

   # Obtiene el id y gid del usuario a dar los permisos
   id -u whk
   > 1000
   id -g whk
   > 1000

   # Monta el disco
   # mount -w -o umask=0022,gid=1000,uid=1000 /dev/mapper/cryptdisk-1 /media/cryptdisk-1
   mount -w /dev/mapper/cryptdisk-1 /media/cryptdisk-1

   # Establece los permisos para escribir de manera natural
   #chown whk:whk /media/cryptdisk-1/
   #chmod 0775 /media/cryptdisk-1/

# Demsontar

   # Desmonta el disco
   umount /media/cryptdisk-1

   # Elimina el directorio temporal
   rm -rf /media/cryptdisk-1

   # Elimina el mapeo entre la unidad física y el archivo
   cryptsetup luksClose cryptdisk-1

# Forzar demsontar
   dmsetup remove -f cryptdisk-1
   cryptsetup luksClose cryptdisk-1


# Verificar si está montado o no
   dmsetup ls | grep cryptdisk-1
   lsblk -o name,uuid,mountpoint | grep cryptdisk-1

# Verificar que procesos están ocupando el disco
   dmsetup ls | grep cryptdisk-1
   > cryptdisk-1   (252:0)
   lsof | grep 252,0
   > 500
   kill -9 500


# Aumentar el espacio
   
   # Añade la cantidad de espacio necesario al final de este
   dd if=/dev/urandom bs=1M count=1024 >> cryptdisk-1.luks

   # Monta el disco
   cryptsetup luksOpen cryptdisk-1.luks cryptdisk-1

   # Redimensiona el espacio bajo el mismo formato
   e2fsck -f /dev/mapper/cryptdisk-1
   resize2fs /dev/mapper/cryptdisk-1

   # Cierra el disco
   cryptsetup luksClose cryptdisk-1


Hasta acá todo bien, puedo crear correctamente el disco cifrado, creo el mapeo, lo monto y ahi es donde tengo el problema, se monta bien pero unicamente accesible para root.

He intentado modificar los permisos con chmod y chown pero al momento de copiar algo dentro con nautilus me dice que el disco está en modo lectura y que no es posible escribir, pero si voy desde el temrinal como root no tengo problemas para escribir dentro.

Tampoco he podido darle las opciones de uid, gid y umask porque me arroja un error, que mount no entiende estas opciones:

[22101.354947] EXT4-fs (dm-0): Unrecognized mount option "umask=0022" or missing value
[22267.305611] EXT4-fs (dm-0): Unrecognized mount option "gid=1000" or missing value


Las particiones las he hecho con Ext4, por lo cual no se que pueda estar haciendo mal.

Tampoco quiero darle permisos a lo bestia porque quiero mantener la integridad de las cosas que guardo, por ejemplo si guardo un archivo como root quiero que se mantenga como root, si guardo un archivo como whk quiero que se mantenga como whk, o sea, en otras palabras quiero integridad de permisos. Supuse que modificando los permisos únicamente del directorio principal del disco podría luego escribir normalmente como yo o root, pero no pude.

¿Que puedo hacer?, ya he buscado por muchos lados, muchos dan como solución cambiar permisos con chmod pero no me reuslta.

Saludos.

WHK

Me acabo de dar cuenta que desde el terminal como usuario whk si puedo escribir pero desde nautilus no puedo. Será un bug?

Randomize

¿Y el clonezilla no te vale?


Se supone "que clona lo que haya"...


:huh: :huh: :huh:

Slava_TZD

Tanto en una vm (3.14.3) como en mi pc (3.22.3) funciona bien, solo hay que hacer chown al directorio donde lo tengas montado.


The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.