Pen 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:
- partizione in fat32 EFI
- partizione in fat32 che contiene il sistema Linux
- 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 😉