Ma machine a un SSD, où j'ai installé le système et un disque dur, que j'utilise comme stockage pour les fichiers volumineux et / ou rarement utilisés. Les deux sont cryptés, mais j'ai choisi d'utiliser la même phrase secrète pour eux. SSD est monté sur /
et HDD sur /usr/hdd
(les utilisateurs individuels ont chacun un répertoire et peuvent créer des liens symboliques comme ils le souhaitent depuis le répertoire personnel).
Lorsque le système est démarré, il demande immédiatement une phrase secrète pour le SSD, et quelques secondes plus tard pour celle pour le disque dur (il est monté automatiquement). Étant donné que les deux mots de passe sont identiques, existe-t-il un moyen de configurer le système pour qu'il ne demande qu'une seule fois?
linux
disk-encryption
cryptsetup
doublep
la source
la source
expect
script ou similaire qui sera appelé pour monter les disques au lieu de le faire par le système. Au lieu de cela, le système appelle le script qui demande le mot de passe, le stocke et le fournit à chacune des opérations de montage./etc/crypttab
pour déverrouiller le deuxième lecteur .Réponses:
Distributions basées sur Debian:
Debian et Ubuntu livrent un script de mise en cache des mots de passe decrypt_keyctl avec le paquet cryptsetup .
Le script decrypt_keyctl fournit le même mot de passe à plusieurs cibles LUKS chiffrées, vous évitant de le taper plusieurs fois. Il peut être activé dans crypttab avec
keyscript=decrypt_keyctl
option. Le même mot de passe est utilisé pour les cibles qui ont le même identifiant dans le champ du fichier de clés . Au démarrage, un mot de passe pour chaque identifiant est demandé une fois.Un exemple de crypttab :
Après avoir mis à jour votre cryptab , vous devrez également mettre à jour initramfs pour appliquer les modifications. Utilisez
update-initramfs -u
.Le fichier Lisezmoi complet pour decrypt_keyctl se trouve dans
/usr/share/doc/cryptsetup/README.keyctl
Malheureusement, cela ne fonctionne pas actuellement sur les systèmes Debian utilisant systemd init en raison d' un bogue (les autres systèmes init ne devraient pas être affectés). La page de manuel de Debian crypttab propose une solution de contournement pour utiliser l'
initramfs
option pour forcer le traitement à l'étape initramfs du démarrage.Distributions qui ne fournissent pas de script decrypt_keyctl :
Si decrypt_keyctrl n'est pas fourni par votre distribution, l'appareil peut être déverrouillé à l'aide d'un fichier de clés dans le système de fichiers racine chiffré. Cela lorsque le système de fichiers racine peut être déverrouillé et monté avant de tout autre appareil crypté.
LUKS prend en charge plusieurs emplacements de clé. Cela vous permet également de déverrouiller l'appareil à l'aide d'un mot de passe si le fichier de clé n'est pas disponible / perdu.
Générez la clé avec des données aléatoires et définissez ses autorisations en lecture seule par le propriétaire pour éviter de la divulguer. Notez que le fichier de clé doit être sur la partition racine qui est déverrouillée en premier.
Ajoutez la clé à votre appareil LUKS
Configurez crypttab pour utiliser le fichier de clés. La première ligne doit être le périphérique racine, car les périphériques sont déverrouillés dans le même ordre que celui répertorié dans crypttab . Utilisez des chemins absolus pour les fichiers clés.
la source
crypttab
(je n'ai pas touchéUUID=
créé par l'installateur du système, je suppose que cela ne devrait pas avoir d'importance) et les entrées résultantes dans/var/log/syslog
. Les erreurs sont en quelque sorte compréhensibles, mais je ne sais pas quoi faire à leur sujet. Le fichier/lib/cryptsetup/scripts/decrypt_keyctl
existe, donc je ne sais pas pourquoi il se plaint d'une option inconnue. Je n'ai également aucune idée de ce qu'il faut spécifier comme fichier de clés, je ne vois aucune explication nulle part ...update-initramfs -u -k $(uname -r) -v
il devrait sortirAdding binary /lib/cryptsetup/scripts/decrypt_keyctl
.lsinitramfs /boot/initrd.img-$(uname -r)
update-initramfs
dit, j'ai remarqué ceci:E: /usr/share/initramfs-tools/hooks/cryptkeyctl failed with return 1.
. Après un peu de recherche sur Google, j'ai découvert que j'avais probablement besoin d'unkeyutils
package (vraiment pas installé). Maintenantupdate-initramfs
réussit etlsinitramfs
mentionnedecrypt_keytls
. Mettra à jour après le prochain démarrage (probablement demain).Voici ma solution de contournement sur Debian, étant donné le bogue référencé ci-dessus par @sebasth.
Ma configuration est légèrement différente. J'ai une partition racine chiffrée et un tas de disques de raid. Pour moi, j'ai dû ajouter une option initramfs à la crypttab:
Cela indique à update-initramfs que je veux que ces entrées crypttab soient montées dans les initramfs. J'ai vérifié mon crypttab en exécutant
Notez que mes disques de raid sont des dm-crypt simples. Cela signifiait que je ne pouvais pas utiliser la méthode luks keyfile qui contourne le bogue keycript de systemd. Pour dm-crypt simple, je devrais stocker la phrase secrète en texte clair.
Les disques chiffrés doivent être montés avant d'
update-initramfs
être exécutés; sinon, cela générera des erreurs. J'ai dû chercher les lignes suivantes lors de la construction de mes initramfs:qui montrait les deux fichiers suivants:
étant ajouté aux initramfs.
Enfin, j'ai dû désactiver systemd pour gérer mon crypttab, afin de faire face au bogue référencé ci-dessus: systemd ne prend pas en charge l'option keyscript dans crypttab. Pour cela, j'ai ajouté l'option noyau
dans / etc / default / grub et a couru
update-grub
. systemd ignore maintenant crypttab, et toutes les partitions chiffrées sont chargées dans les initramfs.Parce que j'ai une partition racine chiffrée, cryptroot ne semble pas mettre en cache ma clé. Cela signifie que je dois saisir mon mot de passe deux fois; un pour la partition racine et une fois pour ma baie de raid.
la source
Une autre option consiste à utiliser le
/lib/cryptsetup/scripts/decrypt_derived
script, qui fait également partie de cryptsetup dans Debian / Ubuntu.Au lieu de mettre la clé en cache, vous utilisez la clé de volume d'un disque comme mot de passe supplémentaire pour le deuxième disque. Cela nécessite l'ajout d'un deuxième mot de passe au deuxième (et troisième, etc.) disque crypté, mais LUKS le prend en charge. Cette solution fonctionne donc également si vos multiples disques chiffrés n'utilisent pas le même mot de passe.
Exemple pour ajouter la clé de sda6crypt à sda5:
Ajoutez la clé de volume de sda6crypt comme mot de passe supplémentaire pour sda5:
Configurez sda5crypt pour qu'il soit déverrouillé automatiquement dans
/etc/crypttab
Cela utilise un tube nommé (
fifo
) pour passer la clé pour éviter d'avoir à stocker la clé de volume dans un fichier temporaire sur le disque.L'
keyscript
option ne fonctionne que si ellecrypttab
est traitée par les outils cryptsetup d'origine de Debian, la réimplémentation systemd ne la prend pas actuellement en charge. Si votre système utilise systemd (qui est la plupart des systèmes), vous avez besoin de l'initramfs
option pour forcer le traitement à se produire dans l'initrd par les outils cryptsetup, avant le démarrage de systemd.Basé sur /unix//a/32551/50793
la source