Debian Stretch Live UEFI-BIOS Persistente Sicura

Debian Stretch Live UEFI-BIOS Persistente Sicura

Debian Stretch Live UEFI-BIOS Persistente Sicura

Ho fatto diverse guide su come costruirsi una Debian Live personalizzata, creando anche una categoria dedicata. Le ultime due sono state: Creare una Debian Stretch Live Custom persistente Sicura  e Creare una Debian Live personalizzata con live build. Questa guida invece sarà quella definitiva, dove la chiavetta costruita sarà un mix di sicurezza e personalizzazione, il tutto avviabile sia da UEFI che da Legacy BIOS, con partizione cryptata con LUKS. La guida sotto è per utenti avanzati, dato che non spiegherò ogni singolo passaggio, quindi attenzione a fare copia ed incolla senza capire quello che si andrà a fare, e sopratutto attenzione ad identificare con certezza il device usb. Questa guida si può adattare anche utilizzando una Debian Live scaricata direttamente dal sito, ma il problema è che non si può cryptare la partizione dato che cryptsetup non è installato di default, da qui l'esigenza di creare una Debian Live di base con cryptsetup installato, dopodichè successivamente si potrà installare tutto il resto.

Installazione tools:

$ sudo apt install -y debootstrap grub-common grub-pc-bin grub-efi-amd64-bin efibootmgr syslinux squashfs-tools live-build live-tools live-boot cryptsetup

Preparazione Debian Base:

$ mkdir live; cd live
$ lb config --distribution stretch --binary-images iso-hybrid --architectures amd64 --archive-areas main contrib non-free --debian-installer-gui true debian-installer live --mirror-bootstrap https://ftp.it.debian.org/debian/ --mirror-binary https://ftp.it.debian.org/debian --bootappend-live boot=live components persistence persistence-encryption=luks timezone=Europe/Rome locales=en_GB.UTF-8 keyboard-layouts=it hostname=Debian-Custom username=user noeject autologin

per installare un desktop environment ed i programmi di cui si necessita, bisogna editare il file live.list.chroot, ed incollare dentro il necessario:

$ nano config/package-lists/live.list.chroot

incollare dentro:

mate-desktop-environment task-laptop xorg xinit xserver-xorg-input-evdev xserver-xorg-input-libinput xserver-xorg-input-kbd cryptsetup firefox-esr firmware-linux-nonfree firmware-iwlwifi firmware-linux-free

Costruzione Debian Base:

$ sudo lb build

Debian Stretch Live UEFI-BIOS Persistente Sicura

Identificazione device usb e partizioni: nel mio caso userò /dev/sda, ed i comandi eseguiti tutti come root:

# fdisk -l
# umount /dev/sda*
# dd count=1 bs=512 if=/dev/zero of=/dev/sda
# parted -s -- /dev/sda mktable gpt mkpart efi 1 10M
# parted -s -- /dev/sda mkpart live 10M 3G
# parted -s -- /dev/sda mkpart persistence 3G 100%
# parted /dev/sda set 1 msftdata on
# parted /dev/sda set 2 legacy_boot on
# parted /dev/sda set 2 msftdata on
# mkfs.vfat -n EFI /dev/sda1
# mkfs.vfat -F32 -n LIVE /dev/sda2

Creazione partizione cryptata /dev/sda3 persistente:

# cryptsetup --verbose --verify-passphrase luksFormat /dev/sda3
# cryptsetup luksOpen /dev/sda3 sda3_crypt
# mkfs.ext4 -L persistence /dev/mapper/sda3_crypt
# mkdir /mnt/persistence
# mount /dev/mapper/sda3_crypt /mnt/persistence/
# echo "/ union" > /mnt/persistence/persistence.conf
# umount /mnt/persistence/
# cryptsetup luksClose sda3_crypt

Mount partizioni di lavoro:

# mkdir -p /mnt/{efi,live,live-iso}
# mount /dev/sda1 /mnt/efi
# mount /dev/sda2 /mnt/live

Mount Debian Base:

# mount -oro live/live-image-amd64.hybrid.iso /mnt/live-iso
# cp -ar /mnt/live-iso/* /mnt/live
# rm -rf /mnt/live/efi

Grub per UEFI:

# grub-install --removable --target=x86_64-efi --boot-directory=/mnt/live/boot/ --efi-directory=/mnt/efi /dev/sda

Syslinux per legacy BIOS:

# dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/mbr/gptmbr.bin of=/dev/sda
# syslinux --install /dev/sda2

Fix grub.cfg

# rm /mnt/live/boot/grub/grub.cfg
# nano /mnt/live/boot/grub/grub.cfg

ed incollare dentro:

set default="0"
set timeout=3

    menuentry "Debian Custom Live" {
        linux /live/vmlinuz-4.9.0-6-amd64 boot=live persistence persistence-encryption=luks keyboard-layouts=it locales=en_US.UTF-8,it_IT.UTF-8
        initrd /live/initrd.img-4.9.0-6-amd64
}

Fix syslinux:

# mv /mnt/live/isolinux /mnt/live/syslinux/
# mv /mnt/live/syslinux/isolinux.bin /mnt/live/syslinux/syslinux.bin
# mv /mnt/live/syslinux/isolinux.cfg /mnt/live/syslinux/syslinux.cfg
# rm /mnt/live/syslinux/menu.cfg
# nano /mnt/live/syslinux/menu.cfg

ed incollare dentro:

LABEL Debian GNU/Linux Live (kernel 4.9.0-6-amd64)
  SAY "Booting Debian GNU/Linux Live (kernel 4.9.0-6-amd64)..."
  linux /live/vmlinuz-4.9.0-6-amd64
  APPEND initrd=/live/initrd.img-4.9.0-6-amd64 boot=live components persistence persistence-encryption=luks keyboard-layouts=it locales=en_US.UTF-8,it_IT.UTF-8

per verificare la versione del kernel:

# ls live/chroot/boot/

output:

root@debianbox:/home/edmond# ls live/chroot/boot/
config-4.9.0-6-amd64  initrd.img-4.9.0-6-amd64    vmlinuz-4.9.0-6-amd64
grub              System.map-4.9.0-6-amd64

Smontaggio e pulizia:

# umount /mnt/efi /mnt/live /mnt/live-iso
# rmdir /mnt/efi /mnt/live /mnt/persistence /mnt/live-iso

a questo punto basta riavviare e fare il boot in modalità uefi oppure legacy, in entrambi i casi ad un certo punto del boot verrà chiesto la password, senza la quale il sistema operativo non si avvierà. Successivamente si potranno installare tutti i programmi di cui si necessiterà, e fare le proprie personalizzazioni. In più si possono conservare files in modo sicuro poichè la pen drive  è inaccessibile senza password.

Debian Stretch Live UEFI-BIOS Persistente Sicura

ps: in caso di password complicate, fare attenzione al layout, poiche in fase di boot è quello di grub

enjoy 😉