Instalación de ArchLinux modo UEFI con cifrado completo del sistema.

Full disk encryption

En un artículo anterior les contamos, que es, la historia e instalación de ArchLinux en un sistema que usa el modo BIOS/MBR. Hoy les contamos cómo hacer una instalación de ArchLinux en modo UEFI, pero aparte de eso, usando cifrado completo del sistema operativo.

Cifrar nuestros discos es el único modo de asegurarnos de que NADIE podrá leer lo que tenemos dentro aunque tengan acceso físico al equipo. Para cifrar los discos usaremos dm-crypt y LUKS.

Descargue la ISO oficial de ArchLinux.

Para descargar la ISO oficial basta con descargar una de las que se encuentran en https://www.archlinux.org/download/

Una vez descargada, verificamos las sumas SHA1 o MD5. Luego vamos a grabarla en nuestra USB usando DD en GNU/Linux o Rufus en Windows.

dd if=iso-de-archlinux.iso of=/dev/sdX bs=16M && sync #Esto en Linux

En Windows abre Rufus y sigue las instrucciones.

Ahora arranca desde la USB reiniciando su sistema, si no puedes hacerlo, verifica que la opción Secure Boot esté deshabilitada y que el proceso de copia de la imagen ISO a la USB ha terminado sin errores.

Conéctese a la red.

Una vez hayas iniciado, el primer paso es conectarse a internet, para que el proceso sea menos tedioso, hemos creado un script que hace todo el proceso por usted, puede descargarlo desde aquí: https://github.com/SecHackLabs/linuxscripts/blob/master/conectar/conectar

Si usted está usando una red Ethernet (Cableada) solo basta con que ejecutes en tu terminal el siguiente comando:

dhcpcd -4

Crea las particiones necesarias para la instalación.

Ejecuta los siguientes comandos:

cgdisk /dev/sdX #sdX es tu disco duro, normalmente sda.

#Creamos las particiones así:

1) 300MB EFI partition # Hex code ef00
2) 300MB Boot partition # Hex code 8300
3) 100% size partiton # (Para ser cifrada) Hex code 8300

Formateamos las particiones creadas.

mkfs.vfat -F32 /dev/sdX1
mkfs.ext2 /dev/sdX2

Configuración del cifrado.

Ahora vamos a configurar el cifrado del sistema, ejecutamos estos comandos:

cryptsetup -c aes-xts-plain64 -y --use-random luksFormat /dev/sdX3
cryptsetup luksOpen /dev/sdX3 luks

Creamos las particiones cifradas, aquí vamos a crear una partición para / y otra para /home, si usted desea crear más particiones es libre de hacerlo.

pvcreate /dev/mapper/luks
vgcreate vg0 /dev/mapper/luks
lvcreate --size 8G vg0 --name swap #El tamaño de la partición SWAP dependede la cantidad de RAM, se recomienda el mismo tamaño que tengas de RAM. Si el sistema tiene más de 8 GB se recomienda solo 8 GB.
lvcreate ---size 100G vg0 --name root #Es la partición root, se recomienda más de 50 GB.
lvcreate -l +100%FREE vg0 --name home #Es el tamaño restante del disco, se dejará para /home. Si usted desea crear un tamaño personalizado, puede usar la opción --size en lugar de -l

Creamos el sistema de archivos para las particiones cifradas.

mkfs.ext4 /dev/mapper/vg0-root
mkfs.ext4 /dev/mapper/vg0-home
mkswap /dev/mapper/vg0-swap

Montaje de particiones y el nuevo sistema.

Ejecutamos los siguientes comandos:

mkdir /mnt/home
mount /dev/mapper/vg0-root /mnt # /mnt es el sistema que vamos a instalar
mount /dev/mapper/vg0-home /mnt/home # Montamos la partición home
swapon /dev/mapper/vg0-swap # No es necesario pero podemos usarlo para probar.
mkdir /mnt/boot
mount /dev/sdX2 /mnt/boot
mkdir /mnt/boot/efi
mount /dev/sdX1 /mnt/boot/efi

Instalación del sistema base y algunas cosas adicionales.

Aquí vamos a instalar los paquetes base y base-devel, también wpa_supplicant para conectarnos a WiFi.

pacstrap /mnt base base-devel grub-efi-x86_64 gvim git efibootmgr dialog wpa_supplicant

Configuración del nuevo sistema.

Creación del archivo /etc/fstab

genfstab -pU /mnt >> /mnt/etc/fstab

Hacemos de /tmp un disco random. Añade la siguiente línea a /etc/fstab

tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0

Entramos en el nuevo sistema.

arch-chroot /mnt /bin/bash

Ajustamos el reloj del sistema.

timedatectl set-timezone America/Bogota #En mi caso
hwclock --systohc --utc #Sincronizamos el horario del hardware del equipo

Agregamos nombre a nuestro equipo

echo NombreDelEquipo > /etc/hostname

Creamos la configuración de locale.

echo LANG=en_US.UTF-8 >> /etc/locale.conf #Puedes cambiar el lenguaje por el que desees.
vim /etc/locale.gen #Desmarcamos en_US.UTF-8 UTF-8 o el que hayas colocado arriba.
locale-gen

Cambiamos la contraseña root.

passwd

Añadimos un usuario diferente a root.

useradd -m -g users -G wheel -s /bin/bash USUARIO
passwd USUARIO

Configuramos mkinitcpio con los módulos necesarios para la imagen de inicio (initrd).

vim /etc/mkinitcpio.conf
# añadimos 'ext4' a MODULES, quedará así: MODULES=(ext4)
# añadimos 'encrypt' y 'lvm2' a HOOKS antes de filesystems, quedará así: HOOKS=(base udev autodetect modconf block encrypt lvm2 filesystems keyboard fsck)

Regeneramos la imagen de inicio (initrd).

mkinitcpio -p linux

Configuración del GRUB.

vim /etc/default/grub #Descomentamos la línea GRUB_ENABLE_CRYPTODISK=y
grub-install
#En /etc/default/grub editamos la línea GRUB_CMDLINE_LINUX a GRUB_CMDLINE_LINUX="cryptdevice=/dev/sdX3:luks:allow-discards" y ejecutamos:
grub-mkconfig -o /boot/grub/grub.cfg

Salimos del nuevo sistema.

exit

Desmontamos todas las particiones.

umount -R /mnt
swapoff -a

Reiniciamos (No olvide retirar la USB al reiniciar).

reboot

Con eso finalizamos la instalación cifrada de ArchLinux en un sistema UEFI.

Síguenos en FacebookTwitterunete a nuestra charla en Riotúnete a IRC o únete a Telegram y no olvides compartirnos en las redes sociales. También puede hacernos una donación o comprar nuestros servicios.

Acerca del autor

Especialista en Seguridad Informática bajo certificación OSCP, desarrollador de software y desarrollador backtend, miembro de la FSF y Fundador de Security Hack Labs. Entusiasta de la tecnología y amante de GNU/Linux. Twitter: @edu4rdshl