Cifrado de disco completo con autenticación de dos factores para Ubuntu: ¿cómo?

9

Información de contexto

Soy un novato en Linux recientemente destetado de Windows. Actualmente estoy usando Ubuntu 11.04 sin cifrado de disco completo. Solo mi directorio de inicio está encriptado y con eCryptFS. Últimamente, he comenzado a notar que el cifrado no es tan transparente como debería ser. VMWare, por ejemplo, a veces tiene problemas para las máquinas virtuales almacenadas en mi directorio de inicio cifrado, por lo que simplemente moví las máquinas virtuales a una ubicación no cifrada y las vinculé desde mi directorio de inicio cifrado. Pero eso no viene al caso: me he dado cuenta de que en realidad no es muy seguro dejar el sistema sin cifrar, ya que un sistema operativo de código abierto como Ubuntu es muy fácil de modificar para divulgar información que se supone que debe mantener en secreto.


Objetivo

Me gustaría poder tener un cifrado de disco completo que funcione junto con un dispositivo clave y una contraseña para la autenticación previa al arranque.


Requerimientos / Detalles

  1. Todo el disco debe estar encriptado. Como mínimo, el disco consta de particiones individuales que están encriptadas. Si es posible ocultar incluso las particiones con cifrado, lo intentaré. Cuanto más transparente sea el cifrado, mejor; No debería tener que usar mi computadora de manera diferente o configurar cualquier otra cosa.
  2. El dispositivo utilizado para desbloquear e iniciar la partición cifrada debe ser un pequeño dispositivo portátil externo. Esto tiene dos propósitos: es mucho menos probable que el gestor de arranque se altere con fines maliciosos, ya que permanecerá conmigo cuando no esté en uso; y los archivos de clave para descifrar el disco no se encontrarán en ninguna parte del disco cifrado en ninguna forma.
  3. Los archivos clave deben estar encriptados con una contraseña. Si pierdo mi computadora y mi dispositivo USB, los datos y el sistema operativo seguirán siendo seguros. Si pierdo la llave USB o se ve comprometida, puedo crear otra limpia desde una copia de seguridad. No se divulga información en ninguno de los casos. Por supuesto, si pierdo mi computadora, es intrascendente.

Sí, he visto guías de muchos lugares, pero el problema es que no abordan todos los requisitos (especialmente el número 3). Estoy bastante seguro de que mis requisitos son lo suficientemente comunes como para que alguien ya haya probado e implementado con éxito dicha configuración. Estaría agradecido si algún profesional de Linux pudiera compartir una solución.

Kevin Li
fuente
2
Re "dado que un sistema operativo de código abierto como Ubuntu es muy fácil de modificar para divulgar información que se supone que debe mantener en secreto". - Te sorprendería lo fácil que es convencer a los sistemas operativos de código cerrado para que hagan lo mismo. El hecho de que un programa sea de código abierto no significa nada sobre su seguridad o inseguridad contra los ataques locales.
user1686

Respuestas:

2

Hay una manera simple de tener un cifrado de disco completo que requiere la presencia de una unidad de disco USB particular Y su contraseña para arrancar.

Lo que debe hacer es desconectar el encabezado LUKS de su disco duro totalmente encriptado y almacenarlo en su memoria USB.

Asumiré que ya tienes la siguiente configuración:

# /dev/sda1 is the boot partition (100MB)
# /dev/sda2 is the encrypted partition
parted /dev/sda mklabel msdos
parted /dev/sda -- mkpart primary ext2 1M 200M
parted /dev/sda -- mkpart primary ext4 200M -100M
cryptsetup luksFormat /dev/sda2

Cree una copia del encabezado de luks y bórrela del dispositivo local:

mkdir /media/ramdisk && mount -t tmpfs -osize=20m,rw tmpfs /media/ramdisk
cryptsetup luksHeaderBackup /dev/sda2 --header-backup-file /media/ramdisk/header.img
dd if=/dev/urandom of=/dev/sda2 bs=1M count=2

Ejecute el último paso varias veces si es el objetivo de una agencia de alto presupuesto. También he creado un ramdisk para mantener el encabezado temporalmente para que no se demore después.

Con su dispositivo usb en / dev / sdb, haga una partición de 2MB y cargue el encabezado en ella:

parted /dev/sdb -- mklabel MSDOS
parted /dev/sdb -- mkpart primary 1M 3M
dd if=/media/ramdisk/header.img of=/dev/sdb1

En este momento, todo en / dev / sda2 parece datos aleatorios, y usted tiene su encabezado en / dev / sdb1. Para acceder a la unidad encriptada manualmente, use:

cryptsetup luksOpen --header /dev/sdb1 /dev/sda2 rootfs
mount /dev/mapper/rootfs /target

El siguiente paso es hacer que su proceso de arranque solicite que se inserte el pendrive en el arranque. Me resultó más fácil asumir que estará allí y fallar de lo contrario. Primero, encuentre la identificación y el UUID de sus dispositivos:

find -L /dev/disk/by-id/ -samefile /dev/sdb1
/dev/disk/by-id/usb-Generic-_Compact_Flash-part1
find -L /dev/disk/by-id/ -samefile /dev/sda2
/dev/disk/by-id/scsi-SATA_ST3320820AS_5QF28W6V-part2

blkid /dev/sdb1
/dev/sdb1: UUID="63347546-2db3-4bc1-9414-1142739a4c9f" TYPE="crypto_LUKS"

Luego edite su /etc/crypttablínea para que se vea así:

root /dev/disk/by-id/scsi-SATA_ST3320820AS_5QF28W6V-part2 none luks,header=/dev/disk/by-id/usb-Generic-_Compact_Flash-part1

(Es posible que necesite este parche para obtener soporte para la headeropción crypttab)

Por último, pero no menos importante, actualice su initram:

update-initramfs -u

Podría llevar esto un paso más allá y, de hecho, tener toda la partición de arranque cargada en la unidad USB . El autor de este artículo estaba en este mismo sitio haciendo un seguimiento .

Hay muchos enfoques diferentes que puede adoptar , con diferentes grados de seguridad y conveniencia.

Una nota particular sobre la seguridad: si su frase de contraseña se ve comprometida, cualquier persona con una copia del encabezado podrá descifrar los datos, incluso si cambia la frase de contraseña más adelante.

GnP
fuente
1

Sé que TrueCrypt está disponible para OSX, Windows y Linux. Puede hacer dos niveles de encriptación para todo el disco. Lo he usado en Debian con cifrado de disco completo AES. Se requiere la contraseña en el arranque para acceder a los datos en el disco duro.

Kobaltz
fuente
3
Pensé que el cifrado de disco completo TrueCrypt solo funcionaba con Windows.
Kevin Li
two levels of encryption for the whole drive! =two factor auth
GnP