GNU/Linux >> Tutoriels Linux >  >> Debian

Chiffrement sans mot de passe de la partition racine Linux sur Debian 8 avec une clé USB

La sécurité des données critiques sur le périphérique de stockage (disque dur, clé USB portable) est nécessaire pour qu'un intrus ne puisse pas voler des informations sensibles. Dans ce didacticiel, nous nous concentrons sur la sécurité du système de fichiers racine Linux et de la zone d'échange. La fonctionnalité de chiffrement par défaut de Linux "LUKS" sera utilisée, ce qui nécessite une phrase secrète au démarrage. Par conséquent, notre prochain objectif est de fournir automatiquement la phrase secrète à un volume chiffré au démarrage. Il existe déjà quelques articles sur le même sujet pour les anciennes versions de la distribution Debian disponibles. Cependant, dans ce tutoriel, la version Debain 8 (Jessie) est installée sur une VM VirtualBox.

Installation du système d'exploitation Debian 

Dans ce didacticiel, Debian Jessie est installé sur une machine virtuelle et les détails sont présentés dans la figure suivante. La même procédure fonctionnera également sur un "vrai" serveur ou bureau.

Ajoutez le fichier iso du programme d'installation de Debian net dans la machine virtuelle et démarrez la machine virtuelle, l'invite du programme d'installation apparaîtra. Sélectionnez l'option "Installer" pour démarrer le processus d'installation.

Les quelques écrans suivants vous invitent à définir les paramètres de base de Debian. Sélectionnez l'option de langue souhaitée dans la liste donnée.

Sélectionnez le pays ou la zone comme indiqué dans la figure suivante.

Configurez la langue du clavier.

Après les paramètres de base, le programme d'installation charge plus de composants pour la configuration.

Encore une fois, d'autres paramètres de base seront configurés pendant le processus d'installation.

1. Définition du nom d'hôte

2. Configuration du nom de domaine

3. Définition d'un mot de passe pour l'utilisateur "root".

4. Création d'un nouvel utilisateur autre que root.

5. définir le fuseau horaire

6. Et enfin, la partie la plus importante est le partitionnement du disque.

Le partitionnement manuel du disque dur est requis pour cet article. Par conséquent, sélectionnez l'option "Manuel" dans l'invite ci-dessus et sélectionnez le disque dur souhaité pour démarrer le processus.

Comme le montre la figure ci-dessus, Debian sera installé dans la machine virtuelle. Appuyez sur Entrée pour démarrer le partitionnement du disque dur sélectionné, comme indiqué ci-dessous.

L'écran suivant apparaîtra après l'acceptation du message ci-dessus. Comme le montre la capture d'écran suivante, il n'y a actuellement aucune partition sur le disque dur.

Appuyez sur "Entrée" pour créer la première partition sur le disque dur virtuel.

La première partition que nous avons créée sur le disque dur est "/dev/sda1" pour le point de montage "/boot".

Le type principal ou logique est sélectionné pour la partition.

L'emplacement de la nouvelle partition est sélectionné.

Le point de montage "/boot" est illustré dans la capture d'écran suivante.

La première partition a été créée avec succès sur le disque dur. Le noyau Linux est ensuite placé dans la partition "/boot".

La deuxième partition créée sur le disque dur de la VM est swap et la taille de la partition swap doit être le double de la taille de la RAM. Comme le montre la capture d'écran suivante, l'espace libre restant est sélectionné pour l'échange.

Définissez la taille de la partition d'échange.

La capture d'écran suivante montre que la partition est sélectionnée comme zone de swap.

Une autre partition est également créée sur la VM.

La partition principale de la plate-forme Linux est créée sur l'espace restant pour / (le point de montage "racine"). L'instantané suivant montre la taille de la partition "racine".

Sélectionnez l'option "Volume physique de chiffrement" pour la nouvelle partition sur le disque dur.

L'option en surbrillance dans la capture d'écran suivante est requise pour chiffrer la partition sur la plate-forme Linux.

La configuration de la partition après avoir sélectionné "volume physique pour le chiffrement" est illustrée dans la figure suivante. La méthode de cryptage par défaut est device-mapper (dm-crypt), l'algorithme de cryptage est AES avec une taille de clé de 256.

La création réussie de la partition sur le disque dur virtuel est illustrée dans la figure ci-dessous.

Voici la configuration avancée des volumes chiffrés sur Debian qui est sélectionnée dans la capture d'écran suivante.

L'invite suivante indique que le schéma de partitionnement actuel doit écrire sur le disque dur avant de pouvoir commencer la configuration du volume chiffré.

L'invite suivante montre la création du volume chiffré sur la plate-forme Debian.

Sélectionnez les périphériques pour le volume chiffré. Ne sélectionnez pas le périphérique de démarrage "/dev/sda1" pour le volume chiffré car il n'est pas autorisé à chiffrer la partition de démarrage.

Comme le montre la capture d'écran suivante, seul "/dev/sda3" est sélectionné pour le volume chiffré et il s'agit de la partition racine du disque.

Après la configuration du volume chiffré, sélectionnez Terminer pour appliquer les modifications.

Cependant, l'erreur suivante s'affichera si la partition d'échange n'est pas sélectionnée pour le volume chiffré.

Par conséquent, nous sélectionnons les deux partitions pour le volume chiffré.

Les paramètres de partition pour le volume chiffré d'échange sont indiqués ci-dessous.

L'invite suivante indique que les données seront effacées sur "sda2" (swap).

La suppression des données sur "sda2" et "sda3" est illustrée ci-dessous.

Une fois le processus terminé, entrez une phrase de passe pour les deux partitions chiffrées.

Saisir à nouveau la même phrase de passe.

La table de partition après une configuration réussie des volumes chiffrés sur le disque est illustrée ci-dessous.

Terminez le processus de partitionnement pour démarrer l'installation du système d'exploitation Debian. Cependant, l'invite d'erreur suivante apparaîtra car le point de montage "/" n'est pas encore sélectionné pour aucune partition.

Après l'invite d'erreur ci-dessus, reconfigurez les volumes chiffrés pour définir le point de montage. Dans cet article, "sda3_crypt" est le système de fichiers racine et "sda2_crypt" est la zone d'échange.

Sélection du point de montage "/" pour le volume chiffré.

Sélection du volume chiffré "sda2_crypt" comme zone d'échange.

La capture d'écran suivante montre la table de partition finale pour les volumes chiffrés.

Le formatage des partitions est illustré ci-dessous.

Une fois le processus de formatage terminé, le système de base sera installé.

La capture d'écran suivante montre la sélection du miroir d'archive pour les packages Debian.

La configuration du gestionnaire de packages est illustrée ci-dessous.

Seul le système de base ou central est encore installé et d'autres packages peuvent être installés à partir de la liste affichée.

Sélectionnez l'environnement de bureau et d'autres packages dans la liste.

L'installation des packages sélectionnés est illustrée ci-dessous.

L'installation du chargeur de démarrage Linux "GRUB" est illustrée dans la capture d'écran suivante.

Le périphérique (sda) est sélectionné pour l'installation du chargeur de démarrage.

Enfin, le processus d'installation est terminé.

Après le redémarrage, entrez la phrase de passe pour déchiffrer le disque sda3.

Entrez la phrase de passe pour déchiffrer le disque sda2 qui est la zone d'échange.

Connectez-vous avec succès sur le système installé.

Configuration pour le système de fichiers racine sans mot de passe

Le processus de saisie de la phrase de passe au démarrage sera désormais automatisé à l'aide d'une clé USB. Au lieu d'utiliser

une phrase de passe, la clé secrète sur la clé USB déchiffrera les volumes chiffrés. Connectez une clé USB à la VM et localisez-la à l'aide de la commande "dmesg". Il est détecté comme "/dev/sdb" dans ma VM.

La clé secrète de 8 192 octets aléatoires est extraite de la clé USB à l'aide de la commande dd.

dd if=/dev/sdb of=/root/secret.key bs=512 skip=4 count=16

La clé secrète générée ci-dessus est ajoutée aux volumes chiffrés à l'aide de la commande "cryptsetup". Par défaut, la phrase secrète est conservée dans l'emplacement 0. Par conséquent, l'emplacement 1 sera utilisé pour la deuxième clé secrète.

Exécutez la commande "blkid" pour obtenir les détails du volume sur le disque.

blkid

Dans ce didacticiel, la clé secrète de déchiffrement du volume est ajoutée uniquement dans /dev/sda3. Cependant, il peut également être ajouté à la partition "/dev/sda2" (swap).

cryptsetup luksAddKey /dev/sda3 /root/secret.key --key-slot 1

Une règle udev simple est créée pour le périphérique USB dans le fichier /etc/udev/rules.d/99-custom-usb.rules, le lien symbolique que nous utiliserons est /dev/usbdevice.

SUBSYSTEMS=="usb", DRIVERS=="usb",SYMLINK+="usbdevice%n"

Actualisez les règles à l'aide de la commande suivante.

udevadm control --reload-rules

Insérez le périphérique USB pour vérifier la règle personnalisée.

Un script shell est requis pour lire la clé secrète à partir du périphérique USB et la fournir à cryptsetup au démarrage. Le script est créé en tant que "/usr/local/sbin/openluksdevices.sh" et extrait du site http://www.oxygenimpaired.com/.

#!/bin/sh
############taken from following link#########
###http://www.oxygenimpaired.com/debian-lenny-luks-encrypted-root-hidden-usb-keyfile

TRUE=0
FALSE=1

# flag tracking key-file availability
OPENED=$FALSE

if [ -b /dev/usbdevice ]; then
# if device exists then output the keyfile from the usb key
dd if=/dev/usbdevice bs=512 skip=4 count=16 | cat
OPENED=$TRUE
fi

if [ $OPENED -ne $TRUE ]; then
echo "FAILED to get USB key file ..." >&2
/lib/cryptsetup/askpass "Try LUKS password: "
else
echo "Success loading key file for Root . Moving on." >&2
fi

sleep 2

Définissez les autorisations du script afin qu'il puisse être exécuté.

 chmod a+x /usr/local/sbin/openluksdevices.sh

Semblable au fichier de configuration fstab, le fichier crypttab contient les informations sur les volumes chiffrés sur la plate-forme Linux. Ajoutez un script shell pour la partition chiffrée sda3_crypt. Le contenu du fichier de configuration "/etc/crypttab" pour le volume chiffré est donné ci-dessous.

sda3_crypt /dev/disk/by-uuid/c37a8128-5ea9-45c6-8890-d52f3d452ccc none luks,keyscript=/usr/local/sbin/openluksdevices.sh

Ajoutez la ligne suivante dans le fichier "/etc/initramfs-tools/conf.d/cryptroot".

CRYPTROOT=target=sda3_crypt,source=/dev/disk/by-uuid/c37a8128-5ea9-45c6-8890-d52f3d452ccc

Assurez-vous que "usb_storage" est ajouté dans le fichier "/etc/initramfs-tools/modules".

Le script shell suivant (/etc/initramfs-tools/hooks/udevusbkey.sh) provient également d'une source externe. Il est utilisé pour ajouter une règle udev personnalisée dans le système de fichiers temporaire "initrd".

#!/bin/sh
# udev-usbkey script
###taken from
###http://www.oxygenimpaired.com/ubuntu-with-grub2-luks-encrypted-lvm-root-hidden-usb-keyfile
PREREQ="udev"
prereqs()
{
echo "$PREREQ"
}

case $1 in
prereqs)
prereqs
exit 0
;;
esac

. /usr/share/initramfs-tools/hook-functions

# Copy across relevant rules

cp /etc/udev/rules.d/99-custom-usb.rules ${DESTDIR}/lib/udev/rules.d/

exit 0

Modifiez l'autorisation du script.

 chmod a+x /etc/initramfs-tools/hooks/udevusbkey.sh

Certaines modifications sont requises dans la configuration du chargeur de démarrage GRUB2. Cependant, les modifications directes dans le fichier de configuration "/boot/grub/grub.cfg" ne sont pas autorisées. Par conséquent, modifiez le paramètre "GRUB_CMDLINE_LINUX_DEFAULT" dans le fichier de configuration "/etc/default/grub". Comme indiqué ci-dessous, "rootdelay" et "cryptopts" sont inclus dans le paramètre "GRUB_CMDLINE_LINUX_DEFAULT".


GRUB_CMDLINE_LINUX_DEFAULT="rootdelay=20 cryptopts=target=sda3_crypt,source=/dev/disk/by-uuid/c37a8128-5ea9-45c6-8890-d52f3d452ccc,keyscript=/lib/cryptsetup/scripts/openluksdevices.sh"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtainsConclusion

Exécutez la commande "update-grub" pour appliquer les modifications ci-dessus dans le fichier de configuration "/boot/grub/grub.cfg".

Après la commande ci-dessus, les modifications suivantes ont été appliquées dans le fichier de configuration "/boot/grub/grub.cfg".

echo    'Loading Linux 3.16.0-4-686-pae ...'
linux   /vmlinuz-3.16.0-4-686-pae root=UUID=b30cdb22-8e3c-4ffd-a0c7-af96b90ba016 ro  rootdelay=20 cryptopts=target=sda3_crypt,source=/dev/disk/by-uuid/c37a8128-5ea9-45c6-8890-d52f3d452ccc,keyscript=/lib/cryptsetup/scripts/openluksdevices.sh
echo    'Loading initial ramdisk ...'
initrd  /initrd.img-3.16.0-4-686-pae

Exécutez "update-initramfs -u" pour mettre à jour le fichier du système de fichiers temporaire pour tous les noyaux.

Avant de redémarrer, décompressez le fichier "initrd.img" généré par newley et vérifiez que le keyscript a été copié dans le répertoire "lib/cryptsetup/scripts" et la règle udev personnalisée dans le répertoire "lib/udev/rules.d/".

cd /tmp/
zcat /boot/initrd.img-3.16.0-4-686-pae | cpio -iv

Keyscript est inclus avec succès dans les scripts initramfs.

La règle USB personnalisée est également incluse dans les règles udev.

Ajoutez un périphérique USB dans les paramètres de la machine virtuelle avant de tester l'ensemble de la configuration.

Enfin, la clé secrète est chargée avec succès pour le volume chiffré.

Conclusion

Dans cet article, une partition cryptée est ouverte à l'aide d'une clé secrète qui est conservée dans une clé USB. Un script shell automatique est utilisé pour fournir une clé secrète pour le volume chiffré au démarrage.


Debian
  1. Comment installer Arch Linux avec Full Disk Encryption

  2. Linux - Comment chiffrer Linux (debian 8) après l'installation et quelles en sont les conséquences ?

  3. Debian – Média modifié :veuillez insérer le disque intitulé « debian Gnu/linux ?

  4. Linux - Rend la copie de disque/disque plus lente ?

  5. Restaurer la taille d'une clé USB (Linux)

Premiers pas avec les outils de chiffrement en ligne de commande sous Linux

Comment cloner des disques avec la commande Linux dd

Créer et gérer des partitions de disque avec Parted sous Linux

Comment ajuster la taille de la partition racine sur Live Arch Linux

Comment démarrer le fichier ISO Debian à partir du disque dur avec GRUB2

Debian - Comment installer Debian avec le chiffrement complet du disque et un fichier d'échange de taille personnalisée ?