¿Puedo crear una nueva ext4
partición cifrada con el kernel 4.1 en Ubuntu 15.04?
¿Puedo crear una nueva ext4
partición cifrada con el kernel 4.1 en Ubuntu 15.04?
Respuestas:
En primer lugar, un descargo de responsabilidad: no he hecho esto con Ubuntu, pero en una máquina con Debian "Stretch" instalado usando un núcleo Linux 4.2.3 personalizado que habilité EXT4_FS_ENCRYPTION
.
Las instrucciones dadas por kmeaw no me funcionan exactamente como se publicaron. Se omitieron algunas cosas (parámetros y pasos de la línea de comandos).
e2fsprogs
como se muestra arribaGenera tu sal al azar. Usé lo siguiente para almacenarlo 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, el indicador "cifrar" debe establecerse 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 núcleo conozca el cambio (tal vez sea automático, pero solo lo he hecho en una partición separada, por lo 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 el directorio se cifre (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, el add_key
comando se puede usar 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 tiene que recordar la cadena hexadecimal del descriptor.
También puedes usarlo add_key
directamente. Esto usará una sal específica del sistema de archivos (por lo que todas las carpetas bajo esa partición tendrán la misma sal)
$ /usr/sbin/e4crypt add_key /secret/home/$USER
Added key with descriptor [0132fed69f946c86]
Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
cp .. /secret/home/$USER/.
me sale: «cp: no se puede crear el archivo normal '/secret/home/alexis/test-top-secret-image.svg': la clave requerida no disponible » . Solo seguí tus instrucciones, así que supongo que algo cambió.
/usr/bin/e4crypt
" le falta la "s" en "/ [s] bin".
Linux 4.1 viene con una nueva característica Ext4 para encriptar directorios de un sistema de archivos. Las claves de cifrado se almacenan en el llavero. Para empezar, asegúrese de que ha habilitado CONFIG_KEYS
y CONFIG_EXT4_FS_ENCRYPTION
opciones del núcleo y que tiene 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 en el momento de la escritura, por lo que debemos buscarlo en el repositorio de git :
$ git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
La fuente 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 compila e instala 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
Verifique su versión ahora, debe 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 encriptemos. La política de cifrado solo se puede establecer 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 enjuague su llavero (reinicio)
$ sudo e4crypt -S 0x877282f53bd0adbbef92142fc4cac459
Enter passphrase (echo disabled):
Added key with descriptor [f88747555a6115f5]
Ahora ya conoce un descriptor para su clave. Asegúrese de haber agregado una clave a su 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 en el llavero, los nombres de archivo y sus contenidos 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.