Unidad cifrada de montaje automático de forma segura al iniciar sesión

18

Un directorio encriptado / home se monta automáticamente para mí cuando inicio sesión. Tengo un segundo disco duro interno que he formateado y cifrado con Disk Utility. Quiero que se monte automáticamente cuando inicio sesión, al igual que mi directorio encriptado / home. ¿Cómo hago esto?

Aquí hay varias preguntas muy similares, pero las respuestas no se aplican a mi situación. Puede ser mejor cerrar / fusionar mi pregunta aquí y editar la segunda a continuación, pero creo que puede haber sido abandonada (y, por lo tanto, nunca ser marcada como aceptada).

Esta solución no es un método seguro, evita el cifrado.
Este requiere edición fstab, lo que requiere ingresar una contraseña adicional en el arranque. No es automático como el montaje / hogar.
Esta pregunta es muy similar, pero no se aplica a una unidad cifrada. La solución no funcionará para mis necesidades.
Aquí hay uno, pero es para unidades NTFS, el mío es ext4.

Puedo volver a formatear y volver a cifrar la segunda unidad si una solución lo requiere. Tengo todos los datos respaldados en otro lugar.

Tom Brossman
fuente
¿Qué FS utilizas para el cifrado? LUKS o ecrytpfs?
Margarita
@AaronLewis Solo uso la Utilidad de disco de Ubuntu para formatear la unidad, luego marque la casilla 'cifrar esta unidad'. Si tuviera que adivinar, usaría ecryptfs, ya que así es como / home está encriptado de manera predeterminada. Como es tan fácil de hacer, nunca lo he investigado.
Tom Brossman

Respuestas:

5

Ya no necesita las soluciones anteriores.

Prerrequisitos:

Nota: este método es menos seguro que montar una unidad cifrada manualmente. Si alguien tiene acceso físico a su computadora, usted es descuidado con su contraseña de root, o su computadora tiene múltiples cuentas de usuarios / invitados, este método no es seguro ; la unidad secundaria permanece montada cuando cierra la sesión pero no apaga el sistema, por lo que su contenido es visible para otros usuarios.

Parte 1: cifrar la unidad secundaria.

  1. En el guión de Unity, escriba "discos" y presione enter.
  2. Debajo de "Dispositivos", haga clic en el disco duro que desea cifrar.
  3. Debajo de "Volúmenes", haga clic en el botón de engranaje / más acciones.
  4. Haga clic en "Formatear volumen". Para el tipo, elija "Cifrado, compatible con sistemas Linux". Asigne un nombre a su unidad y dele una frase de paso fuerte.
  5. Haga clic en "Formato"

Parte 2: monte automáticamente el HDD al iniciar el sistema.

  1. Mantenga abierta la aplicación "Discos" y haga clic en el engranaje.
  2. Haga clic en "Editar opciones de cifrado".
  3. Las "Opciones de cifrado automático" se activarán y el menú a continuación aparecerá atenuado. Desactiva las opciones de cifrado automático.
  4. Ingrese la frase de paso de cuando formateó el disco. Haga clic en Aceptar".

Ahora tiene un disco duro cifrado que se montará automáticamente cuando su computadora se inicie.

Tryion
fuente
1
Si bien estoy seguro de que alguien tendrá un uso para esto, no es una respuesta a la pregunta planteada, que especifica que el montaje secundario debe ocurrir al iniciar sesión del usuario, a diferencia del inicio del sistema. Esto hace que la afirmación inicial de que "Ya no necesita las soluciones anteriores" sea inapropiada, e invito al autor a redactar la respuesta en consecuencia.
mc0e
2
Creo que te equivocas aquí. Es decir, el montaje secundario ocurre en el inicio de sesión del usuario (solo en la cuenta en la que se realizó la operación que mencioné) y no un segundo antes. Cuando mi esposa inicia sesión en su cuenta de Ubuntu en la misma computadora, la unidad no está montada. Si intenta montarlo, le pide la clave de cifrado. Mantengo que no necesita las respuestas anteriores.
tryion
1
De acuerdo, esta es, con mucho, la forma más simple ahora, ya que soy el único usuario en la máquina. No funcionará para todos, pero si tienes una instalación de Ubuntu y eres el usuario principal / administrador, este es el camino a seguir. Realmente debería haber una gran casilla de verificación "Hacer que esto funcione exactamente como encriptado / inicio" en algún lugar en este momento, es un caso de uso simple.
Tom Brossman
@tryion La partición LUKS se desbloquea al inicio del sistema, pero no está montada. Tan pronto como se enciende la computadora, es tan accesible como una partición sin cifrar. La contraseña se almacena en texto sin cifrar en /etc/crypttab. No se necesita contraseña de usuario para acceder a la partición. Entonces, esta configuración es equivalente a no tener ningún cifrado, y no es una respuesta a la pregunta.
Victor
¿Hay opciones para almacenarlo en otro lugar usando libsecret para desencriptar para un usuario específico, y hay una guía cli para esto para usuarios sin GUI / sin cabeza?
MrMesees
10

Cuando escribí esta respuesta hace unos años, esta era la mejor manera de implementar la solución. Ahora sugiero que mire la siguiente respuesta usando mount.ecryptfs_private en su lugar.

También estaba buscando una manera de montar automáticamente un segundo volumen eCryptfs. La siguiente colección de scripts y modificaciones de configuración montará su volumen de forma segura y automática al iniciar sesión, ya sea en la GUI o la CLI.

Hay una mejor solución que está en proceso de creación (aunque creo que no está lista para el montaje automático en el inicio de sesión del usuario, por lo que este script tendrá una vida útil limitada):

ecryptfs en un disco duro demasiado pequeño: ¿cómo agregar enlaces al cifrado?

La seguridad de los scripts depende de que su directorio de inicio esté encriptado con eCryptfs para que el script y los archivos con la contraseña para desenvolver su frase de contraseña estén encriptados. Si deja su computadora desbloqueada con un shell raíz abierto después de iniciar sesión, será posible acceder a las contraseñas, sin embargo, el uso de sudo NOPASSWD permite el montaje seguro de la partición sin requerir la entrada de contraseña o dejar la frase de contraseña en un archivo legible por el usuario.

Una deficiencia conocida de estos scripts es que su segundo volumen no se desmontará al cerrar sesión, por lo que no es particularmente adecuado para sistemas multiusuario.

Mi solución se implementa con varias partes, dos scripts de shell, uno que realiza el montaje real y otro que sirve de envoltorio.

Este es el script de contenedor que valida si el directorio ya está montado, si no lo está, llamará al script de montaje usando sudo:

/ home / johnf / scripts / automount_ecryptfs

#!/bin/bash

MOUNT_POINT=/home/johnf/slow

grep -q $MOUNT_POINT /proc/mounts
if [ $? -eq 1 ]; then
  sudo /home/johnf/scripts/mount_other_ecryptfs
fi

Este script llama a / home / johnf / scripts / mount_other_ecryptfs, que es el siguiente.

Tenga en cuenta que esta secuencia de comandos asume que tiene habilitado el cifrado de nombre de archivo; si no lo hace, será necesario modificar la secuencia de comandos para manejar la detección (mire ecryptfs-recovery-private) o puede eliminar la opción de montaje ecryptfs_fnek_sig.

El siguiente es el script / home / johnf / scripts / mount_other_ecryptfs:

#!/bin/bash

ENCRYPTED_VOLUME=/vol0/.ecryptfs/johnf/.Private/
MOUNT_POINT=/home/johnf/slow
PASSFILE=/home/johnf/scripts/ecryptfs_passphrase
MOUNT_PASSWORD=secret_passphrase
ECRYPTFS_SIG=`head -1 ${ENCRYPTED_VOLUME}//../.ecryptfs/Private.sig`
ECRYPTFS_FNEK_SIG=`tail -1 ${ENCRYPTED_VOLUME}//../.ecryptfs/Private.sig`

printf "%s" $MOUNT_PASSWORD | ecryptfs-insert-wrapped-passphrase-into-keyring ${ENCRYPTED_VOLUME}/../.ecryptfs/wrapped-passphrase
mount -t ecryptfs -o key=passphrase:passfile=${PASSFILE},ecryptfs_sig=${ECRYPTFS_SIG},ecryptfs_fnek_sig=${ECRYPTFS_FNEK_SIG},ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_passthrough=n ${ENCRYPTED_VOLUME} ${MOUNT_POINT}

También deberá crear un archivo con su contraseña, el comando de montaje eCryptfs utilizará este archivo:

/ home / johnf / scripts / ecryptfs_passphrase:

passwd=secret_passphrase

Necesita modificar los permisos en varios archivos:

chmod +x /home/johnf/scripts/automount_ecryptfs
sudo chown root:root /home/johnf/scripts/mount_other_ecryptfs /home/johnf/scripts/ecryptfs_passphrase
sudo chmod a=x /home/johnf/scripts/mount_other_ecryptfs
sudo chmod 400 /home/johnf/scripts/ecryptfs_passphrase

Antes de crear los scripts, debe crear una configuración de sudoers para permitir la ejecución del script de montaje usando sudo sin ingresar su contraseña de sudo.

Agregue lo siguiente a / etc / sudoers (o un archivo en /etc/sudoers.d). Deberá reemplazar johnf con su nombre de usuario. Es necesario utilizar una ruta absoluta al script de montaje.

johnf   ALL = NOPASSWD: /home/johnf/scripts/mount_other_ecryptfs

El último paso es llamar al script automount_ecryptfs al iniciar sesión.

En Ubuntu Unity (y probablemente gnome) use el applet Startup Applications para crear un nuevo programa de inicio que llame a / home / johnf / scripts / automount_ecryptfs.

Para montar automáticamente el segundo volumen eCryptfs al iniciar sesión en un shell bash, querrá modificar su archivo ~ / .bashrc. Agregue lo siguiente:

/home/johnf/scripts/automount_ecryptfs

Con esta configuración en su lugar, ahora debe montar automáticamente su segundo volumen eCryptfs.

johnf
fuente
Wow, gran respuesta! Votado y aceptado. No puedo probarlo todavía, pero esto se ve muy completo.
Tom Brossman
El autor de mount.ecryptfs_privateahora recomienda el uso ecryptfs-mount-private, también por él, que es un script de envoltura para mount.ecryptfs_private. thesimplecomputer.info/… puede valer la pena leer por los méritos relativos de ecryptfs y LUKS.
mc0e
9

Basándose en la respuesta de @johnf pero usando mount.ecryptfs_private en su lugar:

  • encriptado /home/bob/(por ejemplo, en un SSD), usando la magia de encriptado de inicio normal de Ubuntu.
  • cifrado /media/hdd/bob_extra/(p. ej. en un HDD), para ser montado /home/bob/extra. Esto debería montarse automáticamente al iniciar sesión, tal como lo hace el directorio de inicio.
  • use las mismas claves / credenciales para ambos.

crearlo

mkdir /media/hdd/bob_extra
cp /home/bob/.ecryptfs/Private.sig /home/bob/.ecryptfs/extra.sig
echo "/media/hdd/bob_extra /home/bob/extra ecryptfs none 0 0" > /home/bob/.ecryptfs/extra.conf

Pruébalo

mount.ecryptfs_private extra

corriendo mount, deberías ver:

...
/media/hdd/bob_extra on /home/bob/extra type ecryptfs (ecryptfs_check_dev_ruid,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs,ecryptfs_sig=12345678abcdef,ecryptfs_fnek_sig=abcdef12345678)

desmontar:

sudo umount /media/hdd/bob_extra

configuración de montaje automático

Crear /home/bob/bin/automount_ecryptfs.extra, que lo montará si aún no se ha montado.

#!/bin/bash

MOUNT_POINT=/home/bob/extra

grep -q $MOUNT_POINT /proc/mounts
if [ $? -eq 1 ]; then
  mount.ecryptfs_private extra
fi

Hazlo ejecutable ( chmod +x), luego agrégalo a /home/bob/.bashrc:

...
/home/bob/bin/automount_ecryptfs.extra

Luego agréguelo también a las Aplicaciones de inicio de Gnome.

rcoup
fuente
+1 Gracias por la respuesta. Ahora tengo una configuración mucho más complicada con múltiples SSD y enlaces simbólicos a una unidad compartida, por lo que no podré probar esto. Espero que el cifrado de múltiples HDD sea tan simple como el cifrado / inicio algún día.
Tom Brossman
Vea también ecryptfs-mount-privatecuál es similar más destacado. Por ejemplo, puede usar automáticamente una clave del llavero del usuario.
mc0e
Esta respuesta se trata de montar un directorio privado eCryptfs. La pregunta era sobre montar una partición LUKS creada con la utilidad Disks .
Victor
1

Cree una secuencia de comandos en su directorio de inicio cifrado ~/scripts/mount_storage.sh::

#!/bin/bash

sudo cryptsetup open --type luks UUID=12e26119-0ee2-4eb4-bd40-d8a3547ecf0c storage --key-file ~/keys/storage_keyfile
sudo mount /dev/mapper/storage /storage

Agregar a "Aplicaciones de inicio":

sh ~/scripts/mount_storage.sh

Añadir a /etc/sudoers:

%sudo   ALL= NOPASSWD: /sbin/cryptsetup open --type luks UUID=12e26119-0ee2-4eb4-bd40-d8a3547ecf0c storage --key-file *
%sudo   ALL= NOPASSWD: /bin/mount /dev/mapper/storage /storage

Debe haber creado el /storagepunto de montaje y cambiar el UUID en el script anterior (encuéntrelo con blkid).

Raul Laasner
fuente
¿Hay una manera fácil de ejecutar un script como este cada vez que se conecta un USB?
nada101
No lo he intentado yo mismo, así que no puedo decirlo con certeza, pero no veo por qué no. Debería crear una regla udev que apunte a un dispositivo USB específico y ejecute el script anterior. Esta publicación podría ser un punto de partida, por ejemplo.
Raul Laasner
0

Me temo que esta no será una respuesta popular ...

No será posible montar automáticamente ninguna partición cifrada, sin eludir la seguridad del cifrado en sí.

Piense en lo que significa " automáticamente ", y comprenda que automáticamente significa que ellos también podrán ver sus datos.

Dustin Kirkland
fuente
Utilicé 'Seguramente' subjetivamente, podría eliminarlo de la pregunta. Solo quiero que la unidad encriptada llena de fotos se monte cuando inicio sesión, al igual que / home. Sé que esto es teóricamente posible, ya que tengo un tercer disco (también encriptado) como destino para Déjà Dup. Esa unidad solo se monta cuando se activa la utilidad de copia de seguridad. Completamente automático, tengo la clave guardada, así que no la ingreso cada vez. Me siento cómodo con el manejo automático de todas mis claves después de ingresar mi contraseña en la pantalla de inicio de sesión. ¿Alguna idea de cómo hacer que esto suceda? Gracias.
Tom Brossman
3
Automáticamente, en este contexto, significa que debe montarse después de ingresar su contraseña de inicio de sesión. Su contraseña de inicio de sesión puede ser la clave, o más a menudo la clave de la clave, de su partición cifrada. Esto es razonablemente seguro (dar una buena contraseña de inicio de sesión).
Javier Rivera
No se montará automáticamente en otra computadora, razón por la cual la mayoría de nosotros ciframos algunos discos. En mi caso, es un disco que uso para hacer copias de seguridad. Trabajo en un espacio compartido y sé que uno de ustedes con mucho conocimiento podrá eludir todo lo que haga con el acceso físico a mi disco / computadora: solo quiero reducir la accesibilidad a mis archivos para que cualquier otra persona pueda No lo hagas.
Ramón Suárez
Al convertirlo en un proceso automático, ¿sería posible que alguien que robe su computadora pueda acceder a la clave de su HD extra cifrada? (y luego, por supuesto, montar y acceder a este HD)
miguelfg
Escenario fácil y obvio: conecto una unidad USB a un servidor en la oficina para hacer una copia de seguridad de los datos. Llevo la unidad USB a casa para garantizar copias de seguridad fuera del sitio en caso de que algo malo suceda en el servidor. Alguien entra a mi auto y toma el disco USB mientras estoy en la tienda camino a casa. Ahora tienen que 1) saber dónde está el servidor, y 2) irrumpir en la oficina para descifrar el disco. Esa parte es mucho más difícil que "simplemente conéctela a su computadora en casa".
Ernie
0

Proceder de la siguiente manera debe ser seguro. Requerir la frase de contraseña impide que otros usuarios tengan acceso al volumen, aunque esté montado.

1. Abra los discos, elija la unidad y haga clic en el volumen LUKS. Haga clic en las ruedas dentadas y seleccione "Valores predeterminados de sesión de usuario". Elija "Desbloquear al iniciar el sistema" y "Requerir autorización adicional para desbloquear": ingrese la descripción de la imagen aquí

2.Haga clic en el volumen del disco (debajo del volumen LUKS). Haga clic en las ruedas dentadas y seleccione "Valores predeterminados de sesión de usuario". Elija "Montar al inicio del sistema" y "Mostrar en la interfaz de usuario": ingrese la descripción de la imagen aquí

También puede optar por requerir autenticación adicional para montar el volumen, pero en ese caso el montaje no sería automático para el usuario en cuestión.

ElToro1966
fuente