¿Cómo crear una partición cifrada ext4 en Ubuntu 15.04 con el nuevo kernel 4.1?

¿Cómo crear una partición cifrada ext4 en Ubuntu 15.04 con el nuevo kernel 4.1?

¿Puedo crear una nueva ext4partición cifrada con kernel 4.1 en Ubuntu 15.04?

Respuesta1

En primer lugar, un descargo de responsabilidad: no he hecho esto con Ubuntu, sino en una máquina con Debian "Stretch" instalado usando un kernel Linux 4.2.3 personalizado en el que habilité EXT4_FS_ENCRYPTION.

Las instrucciones dadas porkmeawNo me funciona exactamente como se publicó. Se omitieron algunas cosas (parámetros y pasos de la línea de comando).

  • Actualizar e2fsprogscomo se muestra arriba
  • Genera tu sal aleatoria. Utilicé lo siguiente para guardarlo en un "lugar seguro":

    head -c 16 /dev/urandom | xxd -p >~/tmp-salt.txt
    echo 0x`cat ~/tmp-salt.txt` >~/.cryptoSalt
    
  • Para utilizar el cifrado ext4 en el sistema de archivos, se debe configurar el indicador "cifrar" en el superbloque. Este no es el valor predeterminado cuando se crea el sistema de archivos ext4. Usando la utilidad "tune2fs" de e2fsprogs 1.43 o posterior, configure la opción "cifrar":

    sudo tune2fs -O encrypt /dev/sda4
    
  • Monte o vuelva a montar el sistema de archivos para que el kernel sepa sobre el cambio (tal vez sea automático, pero solo he hecho esto en una partición separada, así que no estoy seguro).

  • Cree un directorio en el sistema de archivos que esté montado con el cifrado habilitado:

    sudo mkdir -p /secret/home/$USER
    sudo chown $USER:$USER /secret/home/$USER
    
  • Cree la clave en el conjunto de claves y úsela para establecer la política para que se cifre el directorio (el sudocomando no es necesario aquí):

    $ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt`
    Enter passphrase (echo disabled):
    Added key with descriptor [0132fed69f946c86]
    $ /usr/bin/e4crypt set_policy 0132fed69f946c86 /secret/home/$USER
    Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
    
  • Después de cada reinicio, add_keyse puede utilizar el comando para establecer la clave para descifrar el directorio y sus descendientes:

    $ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt`
    Enter passphrase (echo disabled):
    Added key with descriptor [0132fed69f946c86]
    

    Ingrese la misma contraseña utilizada en el paso anterior y no tendrá que recordar la cadena hexadecimal del descriptor.

  • También puedes usarlo add_keydirectamente. Esto utilizará un salt específico del sistema de archivos (por lo que todas las carpetas bajo esa partición tendrán el mismo salt)

    $ /usr/sbin/e4crypt add_key /secret/home/$USER
    Added key with descriptor [0132fed69f946c86]
    Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
    

Respuesta2

Linux 4.1 viene con una nueva característica Ext4 para cifrar directorios de un sistema de archivos. Las claves de cifrado se almacenan en el llavero. Para comenzar, asegúrese de tener habilitadas CONFIG_KEYSlas CONFIG_EXT4_FS_ENCRYPTIONopciones del kernel y de tener el kernel 4.1 o superior.

En primer lugar, debe actualizar e2fsprogs al menos a la versión 1.43, que todavía es WIP al momento de escribir este artículo, por lo que debemos obtenerlo delrepositorio git:

$ git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git

La fuente de e4crypt ha deshabilitado una sección relevante en su código fuente, habilítela editando misc/e4crypt.c y eliminando estas dos líneas cerca de la línea 714:

    printf("arg %s\n", argv[optind]);
    exit(0);

Ahora construya e instale nuevos e2fsprogs:

$ sudo apt-get install devscripts build-essential gettext texinfo pkg-config debhelper m4
$ debuild
$ sudo dpkg -i e2fsprogs_1.43-WIP_amd64.deb

Comprueba tu versión ahora, debería ser 1.43-WIP:

# e2fsck -V
e2fsck 1.43-WIP (18-May-2015)
        Using EXT2FS Library version 1.43-WIP, 18-May-2015

Para trabajar con claves, necesitamos instalar el keyutilspaquete:

$ sudo apt-get install keyutils

Hagamos un directorio que cifraremos. La política de cifrado solo se puede configurar en directorios vacíos:

$ sudo mkdir -p /encrypted/dir

Primero genere un valor de sal aleatorio y guárdelo en un lugar seguro:

$ head -c 16 /dev/random | xxd -p
877282f53bd0adbbef92142fc4cac459

Ahora genere y agregue una nueva clave a su llavero: este paso debe repetirse cada vez que vacíe su llavero (reinicie)

$ sudo e4crypt -S 0x877282f53bd0adbbef92142fc4cac459
Enter passphrase (echo disabled): 
Added key with descriptor [f88747555a6115f5]

Ahora conoce un descriptor de su clave. Asegúrate de haber agregado una llave a tu llavero:

$ keyctl show
Session Keyring
1021618178 --alswrv   1000  1000  keyring: _ses
 176349519 --alsw-v   1000  1000   \_ logon: ext4:f88747555a6115f5

Casi termino. Ahora establezca una política de cifrado para un directorio:

$ e4crypt set_policy f88747555a6115f5 /encrypted/dir

Eso es todo. Si intenta acceder al disco sin agregar una clave al llavero, los nombres de archivos y su contenido se verán como un galimatías cifrado. Tenga cuidado al ejecutar versiones antiguas de e2fsck en su sistema de archivos: tratará los nombres de archivos cifrados como no válidos.

información relacionada