¿Puedo crear una nueva ext4
partició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
e2fsprogs
como 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
sudo
comando 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_key
se 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_key
directamente. 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_KEYS
las CONFIG_EXT4_FS_ENCRYPTION
opciones 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 keyutils
paquete:
$ 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.