Installation par debootstrap - root chiffré

Installation par debootstrap - root chiffré

Mise à jour : Debian 10 Buster/SID

L'installateur Debian n'autorise le chiffrage du système que dans le cadre de l'utilisation de volumes logiques. Ce qui suit propose une installation chiffrée sans utilisation de volumes logiques :

Sommaire

1 - Préparation de la clé 

1.1 - Partitionnement

$ lsscsi
[0:0:0:0]    disk    ATA      KINGSTON SHSS37A 00.Y  /dev/sda 
[2:0:0:0] cd/dvd HL-DT-ST DVDRAM GT51N AS00 /dev/sr0
[6:0:0:0] disk Lexar USB Flash Drive 1100 /dev/sdb

Dans le cas présent, la clé est attachée en /dev/sdb.

$ sudo parted -s /dev/sdb mklabel msdos mkpart primary ext2 4M 200M set 1 boot on mkpart primary ext2 200M 100%
$ parted -s /dev/sdb print
Model: Lexar USB Flash Drive (scsi)
Disk /dev/sdb: 16,0GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number Start End Size Type File system Flags
1 4194kB 200MB 196MB primary boot
2 200MB 16,0GB 15,8GB primary

1.2  - Système de fichier

$ sudo mkfs.ext4 -L boot /dev/sdb1
$ sudo cryptsetup luksFormat /dev/sdb2

WARNING!
========
Cette action écrasera définitivement les données sur /dev/sdb2.

Are you sure? (Type uppercase yes): YES
Saisissez la phrase secrète :
Vérifiez la phrase secrète :
$ sudo cryptsetup luksOpen /dev/sdb2 root
Saisissez la phrase secrète pour /dev/sdb2 :

$ sudo mkfs.ext4 -L root /dev/mapper/root
mke2fs 1.43.4 (31-Jan-2017)
En train de créer un système de fichiers avec 3857920 4k blocs et 964768 i-noeuds.
UUID de système de fichiers=00565f80-8405-48b3-b7fb-60b623118aa2
Superblocs de secours stockés sur les blocs :
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Allocation des tables de groupe : complété
Écriture des tables d'i-noeuds : complété
Création du journal (16384 blocs) : complété
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété
$lsblk -f /dev/sdb2
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb2 crypto_LUKS 3ba4f7e2-b455-4a3f-84ed-da87306eb09c
└─root ext4 root 00565f80-8405-48b3-b7fb-60b623118aa2

2 - Création du système par debootstrap

$ sudo mount /dev/mapper/root /mnt
$ sudo mkdir /mnt/boot
$ sudo deboostrap --include=grub2,linux-image-amd64,console-setup,locales,cryptsetup /mnt

Note : il sera toujours possible d'ajouter des paquets dans la phase de chroot

$ ls /mnt
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

3 - Mise à jour des paramètres

3.1 - sources.list

$ cat etc/apt/sources.list
deb http://deb.debian.org/debian stretch main contrib non-free

Ajouter à minima, debian-security

# debian security
deb https://deb.debian.org/debian-security stretch/updates main contrib non-free

3.2 - hostname

$ cat etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Ajouter :

127.0.0.1      "nom_hote_identique_à_etc/hostname"

3.3 - fstab

# cat etc/fstab
# UNCONFIGURED FSTAB FOR BASE SYSTEM

Ajouter les partitions de boot et de root :

LABEL=boot         /boot   ext4    defaults                0       2
/dev/mapper/root / ext4 errors=remount-ro 0 1

3.4 - crypttab

  • Créer le fichier crypttab :

  • Relever l'UUID de la partition chiffrée :

    # blkid /dev/sdb2 -s UUID -o value
    3ba4f7e2-b455-4a3f-84ed-da87306eb09c

    Et l'introduire dans crypttab :

    # <target name>    <source device>    <key file>       <options>
    kroot UUID=3ba4f7e2-b455-4a3f-84ed-da87306eb09c none luks

    4 - Mise à jour en chroot

    $ sudo -- sh -c 'for i in proc sys dev dev/pts;do mount --bind /$i /mnt/$i;done'
    $ sudo chroot /mnt 
    # aptitude update
    # sudo debconf-show locales                 # etc ....

    et si les valeurs ne conviennent pas, reconfigurer les paquets correspondants :

    # dpkg-reconfigure locales
    # dpkg-reconfigure console-setup
    # dpkg-redonfigure keyboard-configuration
    # dpkg-reconfigure tzdata
    # adduser pengouin
    # passwd
    # adduser pengouin sudo
    # grub-install /dev/sdb
    # update-grub
    # update-initramfs -u -k all
    # apt install linuxlogo

    5 - Clôture

    # exit
    exit
    $ cd /mnt
    $ sudo --sh -c 'for i in dev/pts dev sys proc;do umount $i; done'
    $ cd /
    # umount /mnt
    # eject /dev/sdb