# [mini-howto] Sistema totalmente cifrado con luks(act 6/3/11)

## hashashin

Nota: Actualizado 06/03/2011 

En este mi primer howto y post en este foro vamos a ver como cifrar nuestros discos al instalar gentoo, la partición raíz del sistema, la swap y las otras particiones que tengamos. Me ha motivado el publicar esto porque no he encontrado ningún manual de como hacerlo en castellano y es bastante sencillo y útil sobretodo en portátiles. Depositaremos las keys en un pendrive usb para no tener que introducir una password en cada arranque del sistema al montar la partición raíz.

Este howto es para nuevas instalaciones pero podéis crearos un stage4 de vuestro sistema actual y usarlo en la instalación por ejemplo.

Necesitamos

-livecd Gentoo minimal.

-pendrive o floppy.

Bien, arrancamos el sistema con el livecd,  conectamos el pendrive que queremos usar y lo montamos(también valdría un  floppy) y ejecutamos:

```
# head -c1024 /dev/urandom > /mnt/puntomontaje/.key
```

con esto creamos una llave aleatoria de 1024 bits y la guardamos en el dispositivo removible.

Imaginemos que nuestro disco está dividido así:

 *Quote:*   

> /dev/sda1 >> /boot
> 
> /dev/sda2 >> swap
> 
> /dev/sda3 >> /
> ...

 

Algo recomendable pero opcional seria ejecutar shred en todas las particiones para asegurarnos que todos los datos anteriores son destruidos, esto puede tardar mucho, mucho tiempo:

```
# shred -v -n 2 /dev/sda3

# shred -v -n 2 /dev/sda1

# shred -v -n 2 /dev/sda2

# shred -v -n 2 /dev/sda5

# shred -v -n 2 /dev/sda6
```

Una vez echo esto o si os habéis saltado este paso vamos a crear los volúmenes cifrados:

```
# cryptsetup luksFormat -s 256 /dev/sda3
```

nos pedirá una clave que luego usaremos para añadir la key que creamos antes. Aunque este pass se puede eliminar una vez añadida la key, es recomendable que sea una pass segura y la conservemos por si el archivo key fuera comprometido y tuviéramos que revocarlo (O sí tú perro se come el floppy/pendrive  :Wink:  ).

Hacemos los mismo con el resto de particiones menos con la partición donde tengamos el /boot:

```
# cryptsetup luksFormat -s 256 /dev/sda5
```

etc...

Añadimos el archivo key que tenemos en el usb o floppy:

```
# cryptsetup luksAddKey /dev/sda3 /mnt/puntomontaje/.key
```

Nos pedirá la clave que usamos al formatear la partición.

Hacemos lo mismo con el resto, si queremos podemos crear una key para cada partición y tenerlas en dispositivos removibles diferentes, eso ya es decisión de cada uno y de su nivel de paranoia.

Lo siguiente es hacer la particiones cifradas accesibles al sistema y formatearlas:

```
# cryptsetup luksOpen /dev/sda3 root

# cryptsetup luksOpen /dev/sda5 home
```

la partición swap y la que usemos como /tmp no hace falta abrirlas ahora.

Si hacemos ahora un:

```
# ls /dev/mapper
```

tendríamos que ver algo parecido a esto:

 *Quote:*   

> # ls /dev/mapper/
> 
> control root home

 

Formateamos las particiones cifradas con nuestro sistema de archivos preferido(creo que hay problemas con reiser4), yo usaré reiserfs 3:

```
# mkreiserfs /dev/mapper/root

# mkreiserfs /dev/mapper/home
```

Ahora seguimos el manual de instalación de gentoo desde después prepare sus discos hasta llegar al punto de configurar el kernel. En el chroot instalamos genkernel y cryptsetup.

```
# emerge -av genkernel cryptsetup

# genkernel --menuconfig --luks --dmraid all
```

Deberemos entrar en la sección 'Device Drivers' -> 'Multi-device support (RAID and LVM)' y activar soporte para las opciones 'device-mapper' y 'dm-crypt'. Importante compilarlas estáticamente en el kernel así como los drivers necesarios para el usb/floppy y los drivers especí­ficos del disco duro.

Ahora seguimos con el manual de instalación hasta el punto donde tenemos de configurar grub.

El grub.conf quedaria así:

 *Quote:*   

> title GNU/Linux Gentoo
> 
> root (hd0,0)
> 
> kernel /kernel-genkernel-x86_64-2.6.36-gentoo-r5 root=/dev/ram0 crypt_root=/dev/sda3 root_key=/.key root_keydev=/dev/sdXX real_root=/dev/mapper/root
> ...

 

Explicaré un poco las opciones de luks:

crypt_root=/dev/sda3 >> particion raiz cifrada.

real_root=/dev/mapper/root >> partición raiz una vez "descrifada".

root_key=/.key >> nombre del archivo key

keydev=/dev/sdXX >> unidad removible, si no la encuentra aquí buscará en el resto de dispositivos el archivo key.

Bien ahora retocaremos el archivo /etc/fstab para dejarlo en algo así:

 *Quote:*   

> /dev/sda1 /boot ext2 noauto,noatime 1 2
> 
> /dev/mapper/root / reiserfs noatime 0 1
> 
> /dev/mapper/home /home reiserfs noatime 1 2
> ...

 

Ajustamos también el archivo de cryptsetup: /etc/conf.d/dmcrypt para dejarlo conforme a nuestra configuración:

 *Quote:*   

> swap=crypt-swap
> 
> options='-s 256 -d /dev/urandom -c aes-cbc-essiv:sha256 -h sha256'
> 
> source='/dev/sda2
> ...

 

Seguimos con el manual de gentoo pero cuando llegue al punto de desmontar las particiones también deberemos ejecutar esto para cerrarlas completamente:

```
# cryptsetup luksClose root

# cryptsetup luksClose home
```

etc...

Reiniciamos, ahora tendreis un sistema cifrado y deberia preguntar por el pendrive/floppy al montar la partición.

----------

## sefirotsama

Muy muy bueno, aunque no me atrevo a usarlo con un particion raiz haré pruebas con un disco externo y más tarde puede que con /home y /tmp, todo depende.

Sobretodo gracias por este manual, muy util

----------

## hashashin

Yo lo estoy usando en el sobremesa de casa y en el portátil del curro, en ambos sin problemas y sin bajada de rendimiento apreciable. Incluso el sobremesa a sobrevivido a 2 apagones   :Shocked:  . Parece bastante sólido el tema, (cruzo dedos) igualmente si tenéis algo importante en el disco respaldarlo antes de hacer cosas de estas   :Twisted Evil: . Gracias por el comentario.

Salud.

----------

## hashashin

He revisado el how-to para ponerlo al día que se había quedado un poco desfasado   :Embarassed: 

----------

