Pen drive con Debian Buster Live Custom Persistente Criptata

Pen drive con Debian Buster Live Custom Persistente CriptataPen drive con Debian Buster Live Custom Persistente Criptata

Guida su come creare una chiavetta usb, equipaggiata con Debian Buster, in  modalità Live, con partizione persistente, e boot in  UEFI mode. L’obiettivo è quello di avere una usb bootable con i propri tools preferiti, e che ci permette di navigare in internet in piena sicurezza senza rinunciare ad una partizione dove poter stipare tutti i dati sensibili. Per cifrare la partizione persistente userò LUKS. Tutti i comandi verranno eseguiti come root, con il comando ” su  – ” per non avere errori simili a questo:

Pacchetti da installare:

# su -
# apt install fuse libfuse-dev libicu-dev bzip2 libbz2-dev cmake clang git libattr1-dev zlib1g-dev libfuse3-dev debootstrap squashfs-tools rsync

Creazione Environment:

# mkdir $HOME/debian_live
# debootstrap --arch=amd64 --variant=minbase buster $HOME/debian_live/chroot http://ftp.it.debian.org/debian/
# chroot $HOME/debian_live/chroot
# echo "debian-live" > /etc/hostname
# echo 'deb http://ftp.it.debian.org/debian/ buster main contrib non-free' > /etc/apt/sources.list
# apt update

Installazione kernel:

# apt-cache search linux-image
# apt install -y linux-image-4.19.0-6-amd64 linux-headers-4.19.0-6-amd64

Installazione dei pacchetti personalizzati (nel mio caso quelli sotto)

# apt install -y mate-desktop-environment-extra task-laptop xorg xinit xserver-xorg-input-evdev xserver-xorg-input-libinput xserver-xorg-input-kbd live-boot systemd-sysv network-manager net-tools wireless-tools nano gparted x11-xserver-utils x11-utils pciutils usbutils ntfs-3g rsync dosfstools syslinux firefox-esr chromium xserver-xorg-input-synaptics vpnc network-manager-gnome network-manager-vpnc-gnome network-manager-openvpn-gnome gtkterm vsftpd putty openssh-client firmware-linux-nonfree firmware-iwlwifi firmware-linux-free vlc terminator synaptic p7zip-full rar unrar zip ssh wget curl mesa-utils dnsmasq grub2-common grub-efi-amd64 grub-pc-bin xkb-data keyboard-configuration tzdata locales encfs wireshark-gtk aircrack-ng nmap zenmap

a questo punto abbiamo bisogno di installare la versione di cryptsetup 2:2.2.1-1  presente nei repo testing, per evitare il problema di cui sotto:

cryptsetup: WARNING: The initramfs image may not contain cryptsetup binaries
nor crypto modules. If that's on purpose, you may want to uninstall the
'cryptsetup-initramfs' package in order to disable the cryptsetup initramfs

Aggiungere i repo testing ed installare cryptsetup:

# echo 'deb http://ftp.it.debian.org/debian/ testing main contrib non-free' > /etc/apt/sources.list
# apt update
# apt install -t testing cryptsetup
# apt clean

Reinserire i repo stable:

# echo 'deb http://ftp.it.debian.org/debian/ buster main contrib non-free' > /etc/apt/sources.list
# apt update

Aggiungere utenti e password:

# passwd root
# adduser nome_utente
# exit

Comprimere il tutto in uno squash filesystem:

# mkdir -p $HOME/debian_live/image/
# mksquashfs $HOME/debian_live/chroot $HOME/debian_live/image/filesystem.squashfs -noappend -e boot

Copiare kernel e initramfs fuori chroot:

# cp $HOME/debian_live/chroot/boot/vmlinuz-4.19.0-6-amd64 $HOME/debian_live/image/vmlinuz-4.19.0-6-amd64
# cp $HOME/debian_live/chroot/boot/initrd.img-4.19.0-6-amd64 $HOME/debian_live/image/initrd.img-4.19.0-6-amd64

Preparazione chiavetta usb: (nel mio caso /dev/sdb di 16G). Negli steps successivi verranno create 3 partizioni:

  1. partizione in fat32 EFI
  2. partizione in fat32 che contiene il sistema Linux
  3. partizione in ext4 persistente criptata con LUKS
# fdisk -l
# umount /dev/sdb*
# dd count=1 bs=512 if=/dev/zero of=/dev/sdb
# parted -s -- /dev/sdb mktable gpt mkpart efi 1 100M set 1 boot on
# parted -s -- /dev/sdb mkpart system 100 2G
# parted -s -- /dev/sdb mkpart persistence 2G 16G
# mkdir -p /mnt/{usb,efi,persistence}
# mkfs.fat -F32 -n EFI /dev/sdb1
# mkfs.fat -F32 -n SYSTEM /dev/sdb2
# mkfs.ext4 -L persistence /dev/sdb3

Montaggio delle partizioni EFI e di Sistema:

# mount /dev/sdb1 /mnt/efi/
# mount /dev/sdb2 /mnt/usb/

Installazione di Grub-EFI:

# grub-install --target=x86_64-efi --efi-directory=/mnt/efi --boot-directory=/mnt/usb/boot --removable --recheck

Copiare il sistema nella seconda partizione:

# rsync -rv $HOME/debian_live/image/ /mnt/usb/live/

Creare il file grub.cfg:

# nano /mnt/usb/boot/grub/grub.cfg

ed incollare dentro:

set default="0"
set timeout=3
menuentry "Debian Custom Live" {
linux /live/vmlinuz-4.19.0-6-amd64 boot=live persistence persistence-encryption=luks
initrd /live/initrd.img-4.19.0-6-amd64
}

Creazione della partizione persistente criptata con LUKS:

# cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb3

rispondere YES e creare la password:

# cryptsetup luksOpen /dev/sdb3 live
# mkfs.ext4 -L persistence /dev/mapper/live
# mount /dev/mapper/live /mnt/usb
# echo "/ union" > /mnt/usb/persistence.conf
# umount /mnt/usb/
# cryptsetup luksClose live
# umount /dev/sdb*
# exit

sopra non abbiamo fatto altro che creare una cartella live che verrà montata in /dev/mapper/, ed aprire e chiudere la partizione persistente. Per accedere alla partizione da adesso in poi bisognerà digitare una password al boot, dopodichè si potranno mettere i files importanti da portarsi dietro. Al primo avvio dare i comandi:

# apt update
# apt upgrade
# apt install -f

Pen drive con Debian Buster Live Custom Persistente Criptata

enjoy 😉

 

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 http://ftp.it.debian.org/debian/ --mirror-binary http://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 100M
# parted -s -- /dev/sda mkpart live 100M 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 😉