Certaines partitions impossible à décrypter automatiquement

Tags: #<Tag:0x00007f63f35cb6c0>

Bonjour,

Je suis en train de tenter de durcir d’avantage les serveurs Debian que je suis amené à installer, et dans ce but, je souhaite crypter mes partitions.

Avant de détailler ce que j’ai fait, je résumer en gros mon problème : Je n’arrive pas à déchiffrer automatiquement certaines partition au démarrage (Sans saisie de la passphrase) alors que d’autres oui.
Les partitions qui me posent problème sont les suivantes : Partition racine, /usr, et le swap

Mon but serait le suivant, n’avoir qu’un mot de passe à saisir au démarrage de la machine et déchiffrer ensuite automatiquement chacune des autres partitions.
Dans l’idée, je voulais saisir le mot de passe afin de déchiffrer la partition racine, puis que toutes les autres soit automatiques.

Ce que j’ai fait :

  • Partitions mon serveur et crypté l’ensemble de mes partitions excepté /boot

  • J’ai créé des Keyfiles stockés dans la partitions /etc avec la commande :

sudo dd if=/dev/urandom of=/etc/keyfiles/sdaX bs=1024 count=4
  • Chmod 0400 de chaque Keyfile

  • Ajouté la keyfile comme authorisé pour chaque partition cryptée avec la commande :
    cryptsetup luksAddKey /dev/sdaX /etc/keyfiles/sdaX

  • Ajouté chacune des mes partitions dans le /etc/crypttab ce qui donne (Il manque la sda10 sur le screen) :
    https://i.imgur.com/qOMVjnE.png

  • Vérifié mon /etc/fstab ou je retrouve bien mes partitions du genre (Je condense en enlevant certaines partitions) :

/dev/mapper/sda2_crypt   /        ext4    errors=remount-ro   0    1
/dev/mapper/sda5_crypt   /home    ext4    defaults            0    2
/dev/mapper/sda10_crypt  /usr     ext4    defaults            0    2
/dev/mapper/sda1_crypt   none     swap    sw                  0    0

Au final quand je boot, on me demande toujours le login de la sda1 (SWAP), la sda2 (/) et de la sda10 (/usr), puis, une fois les 3 mots de passe saisis, toutes les autres partitions montent automatiquement :

Auriez vous une explication à cela ?
Si oui, y a t-il une autre solution pour arriver à mes fins ? :stuck_out_tongue:

Merci beaucoup par avance de votre lecture et de votre réponse, cela fait plusieurs jours que je tourne en rond ^^

Bonne journée

Le point commun entre /, /usr et le swap est qu’ils doivent être ouverts par l’initramfs.

  • / pour monter la racine évidemment, puisque c’est le rôle principal de l’initramfs
  • /usr parce qu’on a abandonné l’idée de ne pas mettre dans /usr tout fichier qui peut être nécessaire à l’initialisation du système avant le montage des systèmes de fichiers, donc depuis Jessie /usr est monté par l’initramfs
  • le swap pour la reprise après hibernation s’il contient une image d’hibernation

Et je suppose que les keyfiles ne sont pas inclus dans l’initramfs puisque ce dernier est contenu dans /boot qui est généralement non chiffré.

Pourquoi séparer /usr de la racine ? Pour utiliser des types de systèmes de fichiers différents ? Pour monter /usr en lecture seule (intérêt limité tant qu’on n’a pas fusionné bin, lib* et sbin dans /usr (usr merge), ce qui n’est proposé qu’à partir de buster avec le paquet usrmerge) ?

Une solution possible pour n’avoir à saisir qu’une seule passphrase serait de ne créer qu’un seul volume chiffré servant de volume physique LVM, et de créer des volumes logiques à la place des partitions pour /, /home, le swap…

1 J'aime

Bonjour @PascalHambourg,

Tout d’abord, merci pour cette informations, je comprend un peu mieux ce qui bloque car à cette explication.

Concernant le /usr, je l’avais séparer pour appliquer une option à cette partition que je n’appliquais pas à la partition / (Guide de durcissement), mais dans mon cas, cela n’a en effet pas grande importance. Je peux donc laisser la partition /usr avec la racine, cela me fait un password en moins.

Il me reste donc à saisir le mot de passe du swap et de la partition racine.

Une ami m’avait dit que le swap n’était pas vital au lancement de la machine. Et donc il émettait l’hypothèse de virer le swap du /etc/fstab, pour le monter à l’issu du boot via un script.
Est ce vraiment une bonne idée ? Et si oui, comment l’appliquer au mieux ?

Merci encore pour la réponse, et surtout avec cette rapidité ! :slight_smile:

Je passais par là.

Inutile de supprimer le swap de fstab : cela ne l’enlève pas de l’initramfs et la prise en compte de fstab par le système d’init intervient après celle de crypttab.
L’ouverture du swap dans l’initramfs n’est utile que pour la reprise de l’hibernation. Il faut donc désactiver la reprise de l’hibernation. Je ne sais pas comment on fait. Avant, il suffisait de laisser l’option RESUME= vide dans /etc/initramfs-tools/conf.d/resume, mais maintenant il semble que update-initramfs soit capable de prendre automatiquement le swap actif comme périphérique d’hibernation.

Autre piste possible mais à prendre avec des pincettes car j’en ai juste entendu parler : il semblerait que plymouth (dont je n’ai jamais bien compris l’utilité) soit capable d’interagir avec le magasin de clés du noyau, donc si plusieurs volumes chiffrés ont la même clé ou passphrase, elle ne sera demandée qu’une fois.

Hello,

Merci encore.

La ce que tu me dis va un peu trop loin pour mon niveau et mes connaissances actuelles ^^
Je pense que je vais donc rester sur une solution plus simple qui serait d’utiliser un volume physique LVM.
J’y placerai du coup la partition / (avec /usr non séparé) et le swap.
Pour le /home, il se déchiffre correctement et automatiquement en partition normale donc je ne vais pas vraiment y toucher :wink:

Merci en tout cas pour ces bonnes idées !

Pour faire plus simple :

Si tous les volumes chiffrés peuvent être ouverts avec la même passphrase, installer le paquet plymouth pourrait éviter de devoir la taper plusieurs fois.

D’après la page de manuel de initramfs.conf, on peut désactiver la reprise d’hibernation dans l’initramfs avec RESUME=none. Cette variable est généralement définie dans un fichier /etc/initramfs-tools/conf.d/resume, avec l’UUID ou le nom de périphérique du swap. Après l’avoir modifié, il faut reconstruire l’initramfs avec update-initramfs -u. Cela ne règlera pas la question de la passphrase demandée pour ouvrir le volume /usr.

Je trouve que c’est dommage de ne pas inclure /home dans le PV LVM car cela prive de la facilité de redimensionner inhérente à LVM. Si tu comptes réinstaller en conservant la partition chiffrée de /home, sache que l’installateur Debian est incapable de réutiliser un volume chiffré existant sans le reformater. Il faudra donc réinstaller sans toucher à celui-ci puis l’ajouter ensuite dans crypttab et fstab.

1 J'aime

Ok je comprend l’idée. Je ferai comme ça alors ce sera plus simple. La pour le premier serveur sur lequel je travail, il n’y aura aucune activité sur le /home donc je suis tranquille, mais pour les autres, je noterai dans mon guide de joindre le /home sur le LVM effectivement. Merci du conseil.

En tout cas, sache qu’après configuration comme dit précédemment, tout fonctionne comme je le désirais.
Je dois saisir le mot de passe pour décrypter mon device LVM, puis tout s’enchaine.

Il mets quelques warning avant que je saisisse la passephrase car il n’arrive pas a charger mon volum groupe LVM. Mais c’est logique puisqu’il n’a pas encore été déchiffré ^^
Après la saisie de la passphrase ca va mieux :slight_smile:

Merci à toi ! :wink:

Finalement @PascalHambourg, j’ai suivi ton conseil pour le LVM :wink:

C’est tout bon pour moi désormais, dois je faire quelque chose pour que le sujet soit tagué résolu ou autre ?

Merci encore

Il y a une coche verte à cliquer quelque part pour marquer le sujet comme résolu.