« Installation debian luks via debootstrap » : différence entre les versions

De Wiki doc

(Page créée avec « Voici comment installer une Debian Stretch sur un support interne ou externe chiffré avec cryptsetup. {{attention|faire une doc sur la création d'un ESP.}} =Préparation... »)
 
Aucun résumé des modifications
Ligne 112 : Ligne 112 :
Pour le moment cette section est vide. Une rustine pour ne pas être bloqué en attendant sa rédaction est de se référer au même passage sur l'[[Installation_archlinux_-_UEFI_64bits#Installation_du_chargeur_d.27amor.C3.A7age|installation d'Archlinux sur UEFI 64bits]].
Pour le moment cette section est vide. Une rustine pour ne pas être bloqué en attendant sa rédaction est de se référer au même passage sur l'[[Installation_archlinux_-_UEFI_64bits#Installation_du_chargeur_d.27amor.C3.A7age|installation d'Archlinux sur UEFI 64bits]].
===Systemd-boot===
===Systemd-boot===
note pour documentation ultérieure : options <UUID de la partition ext4>
===Syslinux===
===Syslinux===
===EFI STUB===
===EFI STUB===
Ligne 119 : Ligne 120 :
Fermeture de la partition chiffrée
Fermeture de la partition chiffrée
  cryptsetup luksClose debsecu
  cryptsetup luksClose debsecu
=Problèmes=
Il y a plein de raisons de rencontrer des problèmes lors de la configuration de l'initrd. Lorsque une erreur survient au moment de la phase de démarrage, le système s'arrête et rend la main par l'intermédiaire d'un prompt directement dans l'initramfs. À ce stade, on peut récupérer des informations sur les disques ainsi que sur les arguments passés au noyau afin de résoudre les difficultés rencontrées.
Afficher les arguments passés au noyau
cat /proc/cmdline
Afficher les modules compilés dans l'initrd
cat /proc/modules
La commande <source lang="bash" inline>lsblk</source> est disponible pour identifier l'UUID des disques et partitions.
Les liens symboliques sous forme d'UUID sont présents dans <source lang="bash" inline>/dev/disk/by-uuid</source> et pointes vers les périphériques de type bloque correspondants (/dev/sda; /dev/sdb2...).
{{info|Il est important de rappeler que l'UUID de la partition luks est codé en dur dans l'initrd (contrairement à Archlinux), aussi, l'UUID renseigné dans le fichier <source lang="bash" inline>/etc/initramfs-tools/conf.d/cryptroot</source> doit être exacte et correspondre à l'UUID de la partition chiffrée. Bien observer les messages d'erreurs, un indice important y est souvant mentionné.}}
Il est également possible de renseigné le périphérique de type bloque au lieu de l'UUID de la partition luks dans le fichier <source lang="bash" inline>/etc/initramfs-tools/conf.d/cryptroot</source>, cependant il est important de garder en tête que la nomenclature sda; sdb... change au petit bonheur la chance en fonction de l'orientation de la lune (un coup le disque n°2 s'appel sdb, un autre il est sda...). Donc ça peut avoir pour conséquence que le système, ne trouve pas la partition ext4 contenant le système puisque il ne peut pas trouver le disque chiffré (et donc vous demander la clé de déchiffrement). Un <source lang="bash" inline>cryptsetup luksOpen /dev/sdb2 debsecu</source> à la main dans le prompt initramfs suivi d'un <source lang="bash" inline>exit</source> suffira à démarrer le système.
L'UUID renseigné dans le chargeur d'amorçage est très important car il permet au noyau de savoir sur quelle partition se trouve le '''/'''. Si l'initrd demande la clé de déchiffrement, que vous avez entré la bonne et que malgré tout le système vous renvoi sur le prompt initramfs c'est que vous vous êtes trompé sur cet UUID.
=Sources=
=Sources=
* http://linuxfr.org/users/leryan/journaux/howto-luks-lvm-et-debian-ont-fucke-my-head
* http://linuxfr.org/users/leryan/journaux/howto-luks-lvm-et-debian-ont-fucke-my-head
* https://unix.stackexchange.com/questions/178666/sbin-cryptsetup-not-found-on-boot
* https://unix.stackexchange.com/questions/178666/sbin-cryptsetup-not-found-on-boot
* https://www.divingeek.com/chiffrement-ameliore-dun-systeme-linux-avec-luks/
* https://www.divingeek.com/chiffrement-ameliore-dun-systeme-linux-avec-luks/

Version du 4 mai 2017 à 22:10

Voici comment installer une Debian Stretch sur un support interne ou externe chiffré avec cryptsetup.

ATTENTION

faire une doc sur la création d'un ESP.

Préparation du disque

Installation de l'outil de chiffrement de disque

apt install cryptsetup

Chiffrement de la partition

cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 /dev/sdb2

Ouverture de la partition

cryptsetup luksOpen /dev/sdb2 debsecu

Formatage de la sous partition (testé également avec btrfs)

mkfs.ext4 /dev/mapper/debsecu

Installation du système Debian

Installation du système

Montage de la partition formaté dans l'étape précédente

mount /dev/mapper/debsecu /mnt

Installation du système de base

debootstrap --arch amd64 stretch /mnt http://ftp.fr.debian.org/debian

Configuration du système

Entrer dans le système

chroot /mnt

[chroot] Monter les ressources nécessaires pour les installations

mount none -t proc /proc
mount none -t sysfs /sys
mount none -t devpts /dev/pts

[chroot] Définition du répertoire utilisateur root

export HOME=/root

[chroot] Changement temporaire du prompt (un accident est vite arrivé en confondant le prompt du chroot avec celui du root de l'hôte, le changer évite les sueurs froides)

export PS1="\e[01;31m(live):\W \$ \e[00m"

[chroot] Mise à jour des paquets

apt update
apt install dialog dbus
dbus-uuidgen > /var/lib/dbus/machine-id

[chroot] Installation du noyau

apt install linux-image-amd64

[chroot] Définition du mot de passe root passwd [chroot] Ajout d'un utilisateur adduser toto [chroot] Changement du fuseau horaire

dpkg-reconfigure tzdata

[chroot] Installer le système en Français

apt install locales
dpkg-reconfigure locales

INFORMATION

Cocher fr_FR.UTF-8 UTF-8 et séléctionner fr_FR.UTF-8 sur l'écran suivant.
apt install console-data

INFORMATION

Dans Choisir un codage clavier dans la liste complète, sélectionner pc / azerty / French / Same as X11 (latin9) / Standard.
apt install keyboard-configuration console-setup

INFORMATION

Pour keyboard-configuration, séléctionner Français - Français (variante obsolète).

Le contenu de /etc/default/keyboard doit être le suivant :

# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="pc105"
XKBLAYOUT="fr"
XKBVARIANT="latin9"
XKBOPTIONS=""

BACKSPACE="guess"

Le contenu de /etc/default/console-setup doit être le suivant :

# CONFIGURATION FILE FOR SETUPCON

# Consult the console-setup(5) manual page.

ACTIVE_CONSOLES="/dev/tty[1-6]"

CHARMAP="UTF-8"

CODESET="Lat15"
FONTFACE="Fixed"
FONTSIZE="8x16"

VIDEOMODE=

# The following is an example how to use a braille font
# FONT='lat9w-08.psf.gz brl-8x8.psf'

Configuration de l'initrd

[chroot] Installation de l'outil de chiffrement de disque

apt install cryptsetup

[chroot] Supprimer le fichier de montage des partitions chiffré (il gène la compilation de l'initrd)

rm /etc/crypttab

[chroot] Créer le fichier suivant contenant les information de votre partition chiffré :

echo 'CRYPTOPTS=target=debsecu,source=/dev/disk/by-uuid/<UUID de la partition chiffrée>' > /etc/initramfs-tools/conf.d/cryptroot

INFORMATION

On comprend avec cette ligne que la référence du disque / est codé en dur dans l'initrd, ce n'est pas le cas de Archlinux qui récupère cette information du chargeur d'amorçage. On comprend donc que Debian est moins portable que ce dernier car l'initrd doit être recompilé à chaque changement de disque chiffré.

[chroot] Activation du module

echo -e 'aes-x86_64\nsha512-ssse3\nxts\ndm-mod\ndm-crypt' >> etc/initramfs-tools/modules

[chroot] Forcer l'utilisation de cryptsetup au démarrage

echo 'CRYPTSETUP=y' >> /etc/cryptsetup-initramfs/conf-hook

[chroot] Mise à jour de l'inird

update-initramfs -u

[chroot] Nettoyage du système

apt-get clean
rm -rf /tmp/*
rm /var/lib/dbus/machine-id

[chroot] Démontage des systèmes de fichier spéciaux montés

umount /proc /sys /dev/pts

[chroot] Suppression de l'historique bash

history -c

Quitter le système

<ctrl+d>

Copie des fichiers de démarrage dans l'ESP

Copie de l'initrd et du noyau dans l'ESP

mount /dev/sdb1 /media
cp /mnt/boot/initrd.img-4.9.0-2-amd64 /media/initrd-debsecu
cp /mnt/boot/vmlinuz-4.9.0-2-amd64 /media/vmlinuz-debsecu

Installation du chargeur d'amorçage

Pour le moment cette section est vide. Une rustine pour ne pas être bloqué en attendant sa rédaction est de se référer au même passage sur l'installation d'Archlinux sur UEFI 64bits.

Systemd-boot

note pour documentation ultérieure : options <UUID de la partition ext4>

Syslinux

EFI STUB

Finalisation

Démontage de la partition

umount /mnt

Fermeture de la partition chiffrée

cryptsetup luksClose debsecu

Problèmes

Il y a plein de raisons de rencontrer des problèmes lors de la configuration de l'initrd. Lorsque une erreur survient au moment de la phase de démarrage, le système s'arrête et rend la main par l'intermédiaire d'un prompt directement dans l'initramfs. À ce stade, on peut récupérer des informations sur les disques ainsi que sur les arguments passés au noyau afin de résoudre les difficultés rencontrées.

Afficher les arguments passés au noyau

cat /proc/cmdline

Afficher les modules compilés dans l'initrd

cat /proc/modules

La commande lsblk est disponible pour identifier l'UUID des disques et partitions.

Les liens symboliques sous forme d'UUID sont présents dans /dev/disk/by-uuid et pointes vers les périphériques de type bloque correspondants (/dev/sda; /dev/sdb2...).

INFORMATION

Il est important de rappeler que l'UUID de la partition luks est codé en dur dans l'initrd (contrairement à Archlinux), aussi, l'UUID renseigné dans le fichier /etc/initramfs-tools/conf.d/cryptroot doit être exacte et correspondre à l'UUID de la partition chiffrée. Bien observer les messages d'erreurs, un indice important y est souvant mentionné.

Il est également possible de renseigné le périphérique de type bloque au lieu de l'UUID de la partition luks dans le fichier /etc/initramfs-tools/conf.d/cryptroot, cependant il est important de garder en tête que la nomenclature sda; sdb... change au petit bonheur la chance en fonction de l'orientation de la lune (un coup le disque n°2 s'appel sdb, un autre il est sda...). Donc ça peut avoir pour conséquence que le système, ne trouve pas la partition ext4 contenant le système puisque il ne peut pas trouver le disque chiffré (et donc vous demander la clé de déchiffrement). Un cryptsetup luksOpen /dev/sdb2 debsecu à la main dans le prompt initramfs suivi d'un exit suffira à démarrer le système.

L'UUID renseigné dans le chargeur d'amorçage est très important car il permet au noyau de savoir sur quelle partition se trouve le /. Si l'initrd demande la clé de déchiffrement, que vous avez entré la bonne et que malgré tout le système vous renvoi sur le prompt initramfs c'est que vous vous êtes trompé sur cet UUID.

Sources