CIFRAR PARTICION EN UN SISTEMA YA INSTALADO

      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

5 Comments

  1. 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

  2. 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.

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax