Libera tu máquina: Slackware Cifrado

Y seguimos para terrorista. Ahora, con Slackware 14.1, la llamada distribución madre. Una de las pocas distribuciones que quedan sin gestión automática de dependencias, con init en vez de systemd y fiel seguidora de la filosofia KISS (Keep It Simple, Stupid!), por resumir algo.

Procuraré no andarme con rodeos, todos tenemos cosas de tira-bombas que hacer, lo último que queremos es tardar demasiado en instalar un nuevo SO. En esta página podemos descargar la iso que más nos convenga. Una vez descargado:

dd if=slackware.iso of=/dev/sdx

Donde x es la letra del dispositivo donde queremos quemar la iso.

Arrancamos desde USB y veremos algo parecido a esto.

OPTION TO LOAD SUPPORT FOR NON-US KEYBOARD

If you are not using a US keyboard, you may need to load a different
keyboard map.  To select a different keyboard map, please enter 1
now.  To continue using the US map, just hit enter.

Enter 1 to select a keyboard map: 

Escogemos el mapa y pasamos al login, donde entramos con root.

Ahora llega lo interesante. El instalador de Slackware no particiona el disco, por lo que debemos hacerlo nosotros. Si tenemos una tabla GPT, usaremos cgdisk, sinó con fdisk vale. Veremos cómo hacerlo con cgdisk, ya que hay menos información que de fdisk (tampoco mucha menos).

Un inciso, si no habéis hecho un backup, tatuaros en la mano «Tengo Que Hacer Backups de Manera Regular», parad todo y haced uno.

De vosotros dependerá decidir que particionado necesitais, ya que tal vez decidís instalar Slackware junto a otro SO. Aquí haremos tres particiones: /boot, /boot/efi y el contenedor de lvm2 cifrado. Supondremos que el disco a particionar es sda y además no tiene ninguna partición hecha, así que hacemos gdisk /dev/sda y empezamos: (A partir de los dos puntos, es el input que haremos para cada partición.)

  • /boot/efi: n, 1, 2048, 997375, EF00
  • /boot/: n, 2, 997376, 1497087, 8300
  • lvm2: n, 3, 1497088, +${Tamaño}g, 8300
  • Escribir los datos: w

Explicación:

  • El primer input, n, sirve para crear una nueva partición.
  • El segundo input, {1,2,3}, es el número de cada partición.
  • El tercer input es el sector de inicio de la partición.
  • El cuarto input es el sector de finalización de la partición. En el caso de lvm2, ${tamaño} es una variable que indica que le metais el tamaño deseado.
  • Y el quinto input es el código hexadecimal para definir el tipo de partición.

Para quien quiera saber más, man gdisk y RTFM. El esquema debería quedar parecido a esto:

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048          997375   486.0 MiB   EF00
   2          997376         1497087   244.0 MiB   8300
   3         1497088       733919231   349.2 GiB   8300

Sigamos. Para borrar todo rastro de vida anterior en el disco duro, podemos usar este comando:

dd if=/dev/urandom of=/dev/sda3 

Depende del tamaño del disco puede tirarse dos dias, literalmente. Avisados estáis. Una vez hecho esto, crearemos el contenedor de luks de 256 bits con cifrado AES-CBC-PLAIN y clave secreta.

cryptsetup -s 256 -y luksFormat /dev/sda3 

Nos preguntará por la contraseña dos veces. Es especialmente importante haber escogido nuestro mapa de teclado, ya que tal vez usemos algún signo pensando que es otro diferente. Una vez creado el contenedor, lo abriremos, crearemos el volumen físico, el grupo de volumen y los volúmenes lógicos.

cryptsetup luksOpen /dev/sda3 slackcrypt 
pvcreate /dev/mapper/slackcrypt 
vgcreate cryptvg /dev/mapper/slackcrypt 
lvcreate -L 7G -n root cryptvg
lvcreate -L 5GB -n var cryptvg
lvcreate -L 2GB -n swap cryptvg
lvcreate -l 100%FREE -n home cryptvg

Los volúmenes lógicos podéis y debéis adaptarlos a vuestras necesidades, este es sólo un ejemplo. Para que el SO detecte los volúmenes y los active:

vgscan --mknodes
vgchange -ay 

Y por último, activar el swap

mkswap /dev/cryptvg/swap 

Una vez hecho todo esto, podremos empezar con la instalación en si con setup. La comentaré a grandes rasgos ya que la instalación dependerá de vuestras necesidades y además está hecha con una interfaz dialog muy simple. A la hora de decidir el sitio de cada partición, sólo recordaros que tenéis que definir la partición /boot, ya que no la detecta automáticamente, al contrario que /boot/efi y es necesario montarla fuera del contenedor cifrado, ya que sinó os dará error al intentar iniciar vuestro recién instalado Slackware.

En el momento de elegir los paquetes, deberiais instalar, cómo mínimo: A, AP, D y L. Podéis instalarlos con la opción menu para vaciar de cosas que no vayáis a necesitar, pero no es recomendable hacerlo si no sabéis lo que hacéis. Para ahorrarse problemas, usad full.

Otra cosa a tener en cuenta de Slackware es que usa LILO cómo encargado de arrancar el sistema. Si no tenéis ningún otro SO, tal vez os de igual y podéis escoger LILO sin más. Pero si tenéis otro SO instalado, probablemente con GRUB2, o simplemente os molesta el guarreo que hace LILO con el MBR, siempre podéis escoger no configurar LILO y añadir una sección para Slackware en /boot/grub/grub.cfg. Debería ser parecido a esto.

***
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Slackware GNU/Linux 3.10.17' --class slackware --class gnu-linux --class gnu --class os {
        load_video
        insmod gzio
        insmod part_gpt
        insmod ext2
        set root='(hd0,gpt2)'
        search --no-floppy --fs-uuid --set=root $UUIDde_sda2
        echo    'Loading Linux 3.10.17 ...'
        linux   /vmlinuz-generic-3.10.17 root=/dev/slackcrypt/root ro  quiet
        echo    'Loading initial ramdisk ...'
        initrd  /initrd.gz
}
***

Una vez instalado, configurado todo y blablabla, recordad que tenéis que crear una imagen intrd, que es la encargada de descifrar el contenedor luks y cargar el kernel. Hacerlo será sencillo:

chroot /mnt 
/usr/share/mkinitrd/mkinitrd_command_generator.sh

El segundo comando ejecuta un script que nos dice que comando de mkinitrd ejecutar para generar nuestra imagen teniendo en cuenta lo que tenemos instalado en nuestor sistema. Para cubrir las necesiades básicas es más que suficiente. Así que deberemos ejecutar lo que nos devuelva, que será algo del tipo:

mkinitrd -c -k 3.10.17 -f ext4 -r /dev/slackcrypt/root -m rts5139:ehci-hcd:ehci-pci:usbhid:hid_generic:mbcache:jbd2:ext4 -C /dev/sda4 -L -u -o /boot/initrd.gz

Para cualquier duda, siempre podéis recurrir a la documentación de Slackware, que es muy completa.

Ah, y para facilitar nuestra vida de pedófilos, traficantes de drogas y/o sicarios, está sbopkg, que ayuda a mantener un seguimiento de todos los slackbuilds de slackbuilds.org que instalemos. Porqué nosotros lo valemos.

PD: Para todo lo demás, documentación oficial de Slackware.

Compartir

1 Comentario

  1. A ver si encuentro tiempo y me instalo slackware. Tiene buena pinta y se agradece esta información para el tema del cifrado. Saludos.

Deja una respuesta

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