Actualmente casi todas las distribuciones Gnu/Linux ofrecen cifrado de disco en el proceso de instalación, pero los que instalamos Gnu/Linux hace ya unos años no teníamos esa posibilidad.
Afortunadamente es posible cifrar cualquier partición aunque nuestro sistema ya esté instalado. En estas líneas voy a explicar el proceso de cifrado de nuestro /home, partición que por su almacenamiento de datos personales es más susceptible a la hora de preservar nuestra privacidad.
Mi particionado de disco es este:
/dev/sda1 – Raíz
/dev/sda2 – Home
/dev/sda3 – Almacenaje
Las herramientas que necesitamos son:
- cryptsetup instalado
- Espacio para backup de datos
Antes de nada instalaremos cryptsetup en nuestro sistema y acto seguido haremos una copia de seguridad de nuestros datos en /home a otra partición o disco externo, ya que hay que formatear, prestando atención a los archivos ocultos. En este caso los copio a /dev/sda3 que la uso para estas cosas.
La partición a cifrar no debe estar montada, por ese motivo debemos iniciar el sistema en un entorno monousuario (root) mediante init 1 (telinit 1 en algunas distribuciones). Desmontamos la partición mediante el comando umount, en este ejemplo:
umount /home
Cifrando.
Toca cifrar la partición, en este ejemplo /dev/sda2 (usad fdisk -l para saber como se llama la vuestra). Para mejorar el cifrado llenaremos de ceros o datos aleatorios la partición. Es recomendable, aunque opcional, así que si no te interesa te puedes saltar este paso:
Ceros: dd if=/dev/zero of=/dev/sda2 bs=4096
Datos: dd if=/dev/urandom of=/dev/sda2 bs=4096
Formateamos con la opción:
cryptsetup -v -s 512 -y luksFormat /dev/sda2
-v: Modo verboso
-s 512: Algoritmo de 512 bits
-y: Verificar la contraseña
Abrimos la partición recién cifrada y le asignamos un nombre que queramos al planificador de dispositivos (mapper) para darle formato:
cryptsetup luksOpen /dev/sda2 HOGAR
mkfs.ext4 /dev/mapper/HOGAR
Cerramos la partición:
cryptsetup luksClose HOGAR
Reconocimiento y automontaje.
Ya tenemos nuestro /home cifrado. Ahora vamos a hacer que el sistema reconozca y monte la partición al inicio, pidiéndonos la contraseña previamente. Debemos editar algunos archivos. Primero editamos el archivo crypttab. Si no lo tenemos lo creamos con:
touch /etc/crypttab
nano /etc/crypttab
Definimos el nombre asignado al mapper, el dispositivo que se cifró y en el tercer campo se define «none».
hogar /dev/sda2 none
NOTA: El modo anterior ha quedado obsoleto en la mayoría de distribuciones. Ahora hay que poner lo siguiente:
HOGAR UUID=2f9a8428-ac69-478a-88a2-4aa458565431 none luks,timeout=180
Y ahora editamos el fstab y añadimos la partición para el automontaje:
nano /etc/fstab
/dev/mapper/HOGAR /home ext4 defaults,noatime,nodiratime 1 2
Montamos la partición y ya podremos restaurar los datos de la copia de seguridad:
mount /dev/mapper/HOGAR
Cargando modulos necesarios al inicio.
cryptsetup luksClose /dev/mapper/HOGAR
El archivo initramfs suele incluir los módulos dm_crypt para cifrado con LUKS y el mapa de dispositivos. Si no es así o usamos un initramfs distinto hay que regenerar la imagen de disco RAM que utiliza el núcleo del sistema para cargar los controladores necesarios. En este ejemplo editaré el archivo mkinitcpio.conf:
nano /etc/mkinitcpio.conf
Añadimos a la sección MODULES «dm_crypt».
NOTA: Añadiremos más abajo, en HOOKS, «encrypt» antes de «system» si queremos cifrar la partición raíz.
Ahora hacemos la imagen de arranque:
mkinitcpio -p linux
Tras unos segundos tendremos nuestra imagen de arranque nueva. Ya podemos reiniciar el sistema y si todo ha ido bien, a medio arrancar nos pedirá la contraseña para poder montar nuestro /home
Muy util +1
Qué bueno rubito
Relaciobada. Para hacerlo en gentoo en una instalación http://elbinario.net/2015/11/19/instalar-gentoo-de-manera-segura-con-y-swap-cifrados-con-luks-y-lvm/
Vale aclarar que es recomendable hacer backup de todos los datos del home, ya que en primera instancia dd elimina todo contenido de la partición original, y luego mkfs crea un filesystem nuevo, donde habrá que volcar los datos.
Por otro lado, la primer línea dd donde barre el dispositivo con /dev/zero no es necesaria, ya que luego lo barres nuevamente con urandom. Es recomendable hacerlo con urandom para que a nivel de filesystem no haya diferencia entre sectores escritos y sectores no escritos luego de volcar los datos.
Espero que sume al aporte! Gracias por compartir!
@d1cor
Hola Diego. Comento lo de hacer copia de seguridad aunque no ponga como hacerlo porque es algo muy básico.
Lo del dd, no es que se tenga que hacer dos veces; en el enunciado pongo que se puede llenar de ceros o de datos, por eso sale dos veces, una para cada uno.