Kali Linux es una de las suites para realizar auditorías informáticas y hacking ético más conocidas y más completas que podemos encontrar. Además de permitirnos realizar estas auditorías y otras prácticas de hacking ético, Kali se caracteriza también por ser una distribución segura y robusta, permitiendo a los usuarios utilizarla sin riesgo a comprometer su sistema y sus datos. Además de sus medidas de seguridad propias, esta distro nos ofrece una serie de herramientas y configuraciones para poder proteger nuestros datos, como, por ejemplo, permitirnos activar el cifrado de nuestro disco o memoria, algo muy útil cuando utilizamos dispositivos como, por ejemplo, un Raspberry Pi.

El sistema operativo del Raspberry Pi se copia tal cual en una tarjeta de memoria Micro-SD, por lo que si alguien tiene acceso a este dispositivo lo más probable es que pueda extraer dicha tarjeta y, al conectarla a un ordenador, podrá acceder a los datos que tengamos guardados en ella. Esto no es demasiado importante si, por ejemplo, estamos utilizando el micro-ordenador como retro-consola, pero si lo utilizamos como un servidor o para guardar datos personales en él sí puede suponer un grave riesgo, riesgo que podemos reducir simplemente activando el cifrado del disco.

Si elegimos Kali Linux como distribución para nuestro Raspberry Pi es muy fácil proteger nuestros datos utilizando LUKS. A continuación, os vamos a explicar cómo hacerlo.

Cómo preparar el Raspberry Pi con Kali Linux para cifrar todos sus datos

Aunque esta tarea podría realizarse fácilmente con cualquier otra distribución para el Raspberry Pi, nosotros vamos a utilizar Kali Linux, la conocida distro de seguridad que, además de un sistema robusto, nos permite convertir el micro-ordenador en una completa herramienta para realizar auditorías de seguridad.

Como Kali Linux tiene una versión específica para Raspberry Pi, podemos descargarla y seguir las instrucciones para ponerla en funcionamiento desde el siguiente enlace, aunque el resumen es básicamente el de siempre, descargar la imagen y copiarla a la Micro-SD para poder arrancar el dispositivo con ella.

Una vez que ya arrancamos nuestro Kali Pi, el siguiente paso será actualizar toda la distro, por seguridad, e instalar algunos paquetes necesarios para poder llevar a cabo este proceso. Para ello ejecutaremos los siguientes comandos:


apt update
apt dist-upgrade
apt install cryptsetup lvm2 busybox dropbear

Cómo configurar el cifrado de la Micro-SD en nuestro Raspberry Pi con Kali Linux

Una vez llegados a este punto ya tendremos nuestro sistema listo para continuar con la configuración. Lo primero que tendremos que hacer es ejecutar el siguiente comando para añadir una línea necesaria al fichero de configuración /boot/config.txt:

echo initramfs initramfs.gz followkernel >> /boot/config.txt

A continuación, localizaremos dónde está montado el directorio root “/” en la tarjeta micro-sd. Para ello, ejecutaremos el comando “cat /etc/fstab” y nos fijaremos en el punto de montaje de “/” que, además, tendrá el sistema de archivos EXT4. Lo general es que el punto de montaje sea “/dev/mmcblk0p2”, aunque es mejor asegurarnos.

Una vez apuntado este punto de montaje editaremos el archivo “/boot/cmdline.txt” para indicarle que vamos a trabajar con una unidad cifrada. Para ello, ejecutaremos “nano /boot/cmdline.txt” (o el editor que queramos usar, previa copia de seguridad del fichero original) y modificaremos el contenido por el siguiente (comprobando que coincide /dev/mmcblk0p2 con el obtenido en el punto anterior:


dwc_otg.fiq_fix_enable=2 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mapper/crypt cryptdevice=/dev/mmcblk0p2:crypt rootfstype=ext4 rootwait rootflags=noload net.ifnames=0

Una vez hecho esto, editamos el fichero /etc/fstab (nano /etc/fstab) y cambiaremos el montaje de root “/” (que nosotros estamos llamando “/dev/mmcblk0p2”) por “/dev/mapper/crypt”, la unidad cifrada con LUKS. Ahora este fichero quedará de la siguiente manera:


# proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults 0 2
/dev/mapper/crypt / ext4 defaults,noatime 0 1
#/dev/mmcblk0p2 / ext4 defaults,noatime 0 1

El siguiente paso será crear un fichero ejecutando el comando “nano /etc/crypttab” en cuyo interior copiaremos lo siguiente:

crypt /dev/mmcblk0p2 none luks

Debemos prestar atención a que los separadores del comando anterior no son espacios, si no tabuladores. Si los ponemos con espacios no nos funcionará.

El siguiente paso será crear un falso sistema LUKS para poder forzar cryptsetup. Para ello, vamos a ejecutar los siguientes comandos en nuestro Kali Linux. No tenemos que preocuparnos por usar una contraseña segura en este falso sistema LUKS.


dd if=/dev/zero of=/tmp/fakeroot.img bs=1M count=20
cryptsetup luksFormat /tmp/fakeroot.img
cryptsetup luksOpen /tmp/fakeroot.img crypt
mkfs.ext4 /dev/mapper/crypt

Configurar el desbloqueo remoto de la partición LUKS del Raspberry Pi con Kali Linux

Continuando con el proceso, el siguiente paso será crear un nuevo fichero de configuración de dropbear. Para ello, ejecutaremos el comando “nano /etc/dropbear-initramfs/authorized_keys” y, en el fichero que se nos abrirá, introduciremos el siguiente contenido. Debemos asegurarnos de que todo él está en una línea y no hay saltos o caracteres extraños, ya que si no no funcionará:

command="export PATH='/sbin:/bin/:/usr/sbin:/usr/bin'; /scripts/local-top/cryptroot && kill -9 `ps | grep -m 1 'cryptroot' | cut -d ' ' -f 3` && exit"

En el siguiente paso vamos a establecer una pausa a dropbear para que el Raspberry Pi tenga tiempo de conectarse a la red y descargar el archivo para descifrar el disco cuando lo encendemos. Para ello, ejecutamos el comando “nano /usr/share/initramfs-tools/scripts/init-premount/dropbear” y, al final del archivo, debajo de la línea “[ “$BOOT” != nfs ] || configure_networking” añadiremos “sleep 5”, quedando de la siguiente manera:


[ "$BOOT" != nfs ] || configure_networking
sleep 5
run_dropbear &
echo $! >/run/dropbear.pid

Ahora vamos a crear el initramfs. Para ello, ejecutaremos los siguientes comandos en el Raspberry Pi y comprobamos que todos los datos están correctos:


mkinitramfs -o /boot/initramfs.gz

lsinitramfs /boot/initramfs.gz | grep cryptsetup

lsinitramfs /boot/initramfs.gz | grep authorized

Si todo está perfecto ya podemos apagar el Raspberry Pi, no sin antes asegurarnos de que los datos están sincronizados con los siguientes comandos:


sync && sync

init 0

Últimos pasos

Con nuestro Raspberry Pi ya apagado, sacaremos la tarjeta micro-sd de él para conectarla a nuestro ordenador. Antes de hacerlo, nos aseguraremos de que tenemos un directorio creado para funcionar como backup de la misma ejecutando los siguientes comandos (y comprobando que no tenemos nada en /mnt):


ls -al /mnt/{chroot,backup,encrypted}
rm -rf /mnt/{chroot,backup,encrypted}
mkdir -p /mnt/{chroot,backup,encrypted}

Conectamos ahora la tarjeta de memoria al ordenador y, cuando la reconozca, comprobamos cuál es su punto de montaje. Asumiendo que sea /dev/sdc2 (si no lo es ajustaremos los comandos según coincida), ejecutaremos los siguientes comandos para guardar la copia de seguridad de la misma:


mount /dev/sdc2 /mnt/chroot/
rsync -avh /mnt/chroot/* /mnt/backup/
umount /mnt/chroot

Llegados a este punto, lo siguiente será eliminar la segunda partición del Raspberry Pi, la que no estaba cifrada, y volver a crear otra ejecutando los comandos:


echo -e "d\n2\nw" | fdisk /dev/sdc
echo -e "n\np\n2\n\n\nw" | fdisk /dev/sdc

Y ya, para terminar con este largo proceso, configuraremos la partición con LUKS ejecutando partprobe con los siguientes comandos:


cryptsetup -v -y --cipher aes-cbc-essiv:sha256 --key-size 256 luksFormat /dev/sdc2
cryptsetup -v luksOpen /dev/sdc2 crypt
mkfs.ext4 /dev/mapper/crypt

Ya, por último, volveremos a restaurar la partición que hemos copiado al principio de este último punto ejecutando los comandos:


mount /dev/mapper/crypt /mnt/encrypted/
rsync -avh /mnt/backup/* /mnt/encrypted/
sync
umount /mnt/encrypted/
cryptsetup luksClose /dev/mapper/crypt

Ya hemos terminado. Ya podemos extraer la tarjeta de memoria del ordenador y volver a conectarla al Raspberry Pi. Ahora todo debería funcionar sin problemas y, al conectarla, deberíamos ver cómo se conecta dropbear, descifra la unidad y podemos acceder a ella.

Publicado por Rubén Velasco el 31 julio 2018

Últimos análisis

Valoración RZ
8
Valoración RZ
10
Valoración RZ
9
Valoración RZ
10
Valoración RZ
8
Valoración RZ
9
Valoración RZ
10
Valoración RZ
9