Disco cifrado
La idea de esta guía es que todo todo lo que pase por nuestro disco quede cifrado o encriptado, manteniendo la posibilidad de suspender al disco, o sea hibernar, la máquina. Para eso es necesario que la swap esté
encriptada también. La forma más simple es hacer una partición para la swap
dentro de un volumen LVM creado sobre una partición encriptada completamente.
Contenido
Llenar el disco de ruido
¿Por qué llenar el disco de ruido o datos aleatorios? Si nuestro disco está en blanco (o sea en ceros) un análisis a bajo nivel puede mostrarlo así:
0000000000000000000000000000000000000000000000000000000000000
Si creamos una partición cifrada y guardamos datos, estos pueden verse, dependiendo de en qué parte del disco se guardan, así:
h572hdasDAsdaudaDWadwdd33ahdCas000000000000000000000000000000
de esta forma se puede identificar claramente qué parte del disco contiene datos cifrados y qué parte no, lo que reduce el esfuerzo necesario para recuperar los datos. Asique llenamos el disco de ruido para impedir esta identificación.
Con haveged
El demonio haveged sirve para generar datos aleatorios (entropía, en realidad) muy rápido. Si estamos instalando arch, el instalador de arch ya lo trae y por default está corriendo, asique está listo para usar.
Esos datos aleatorios se acceden desde /dev/random
. Para llenar el disco
rígido (por ejemplo /dev/sda
) con bloques de 4 megas (para aumentar un poco
el tamaño de bloque default que es de 512 bytes, aunque lo ideal sería usar el
mismo tamaño que el cache del disco rígido que vamos a llenar) usamos
dd bs=4M if=/dev/random of=/dev/sda
Desde otra fuente de ruido
Una solución más rápida es copiar datos "aleatorios" ya generados desde otro
lado, como por ejemplo otro disco cifrado. Para copiar desde un disco conectado
por usb identificado como /dev/sdc
dd bs=4M if=/dev/sdc of=/dev/sda skip=256
skip=n
salta n
bloques de tamaño bs
(en este caso 4MB * 254 = 1GB) para
evitar la cabecera del disco cifrado. Sin cabecera no hay forma de recuperar
los datos, lo que los convierte de hecho en ruido.
Para copiar por la red local, podemos usar netcat (el comando nc
) que
también viene instalado y listo para usar desde el instalador de arch. También
podríamos usar ssh pero sería más lento por el cifrado/descifrado que
implica para transmitir los datos. Ponemos netcat a escuchar en un puerto
cualquiera (9000
en este caso) y redirigimos los datos a dd en la máquina
que estamos instalando
nc -l -p 9000 | dd bs=4M of=/dev/sda
Y desde una máquina que pueda acceder por red a la otra (por ejemplo, con la IP
10.0.0.2
) enviamos los datos desde el disco cifrado propio (acá /dev/sdb
)
dd if=/dev/sdb bs=4M skip=256 | nc 10.0.0.2 9000
Particionar
Hacer 2 particiones (sda1 para boot, sda2 para el lvm)
fdisk /dev/sda
ambas de tipo linux (lvm no mira el tipo de partición)
Cifrar
Encriptamos sda2:
cryptsetup --key-size 512 --use-random luksFormat /dev/sda2
Chequeamos que esté todo bien:
cryptsetup luksDump /dev/sda2
Abrimos la partición encriptada:
cryptsetup open --type luks /dev/sda2 sarasa
Crear los contenedores LVM
-
Crear un volumen físico (physical volume)
pvcreate /dev/mapper/sarasa
-
Crear un grupo de volúmenes (volume group)
vgcreate fafafa /dev/mapper/sarasa
En este ejemplo el volume group se llama fafafa. - Crear volúmenes lógicos (logical volumes)
- Uno especial para la swap
lvcreate -C y -L 8G fafafa -n swap
Debe ser del mismo tamaño que la RAM de la computadora, para poder hibernar. - Todos los demás
lvcreate -L 50G fafafa -n root
para poner el resto en el home podemos fijarnos el total disponible convgdisplay | grep Free
y especificarlo:lvcreate -L 870G fafafa -n home
o le decimos alvcreate
que lo calcule directamente:lvcreate -L -l +100%FREE fafafa -n home
(nótese lal
(ele) minúscula)
- Uno especial para la swap