arrêtez crypttab demandant le mot de passe pour l'échange

10

J'ai installé un nouveau système 11.04 lors de sa sortie et mis en place un chiffrement complet du disque avec LUKS. Au début, il m'a demandé un mot de passe pour mes trois partitions chiffrées:

/
/home
swap

Taper trois fois la phrase secrète est devenu frustrant, j'ai donc essayé de configurer / home et de permuter pour décrypter à partir d'un fichier de clés stocké sur /. J'ai créé le fichier de clés et l'ai activé sur les deux partitions. Mon crypttab ressemble maintenant à ceci:

root-root_crypt UUID=13c21bf6-4d92-42a7-877a-87cc31b1aa19 none luks
home-home_crypt UUID=ba90ce5b-9df7-4764-8a72-011bbb164db4 /root/keyfile luks
home-home_crypt UUID=ba90ce5b-9df7-4764-8a72-011bbb164db4 none luks
sda3_crypt UUID=e4677895-2114-4054-9f23-d36f6bb0e6a2 /root/keyfile luks,swap

Cela fonctionne très bien pour / home, qui est monté automatiquement sans demander de mot de passe. Mais cryptsetup demande toujours un mot de passe pour l'espace d'échange. J'ai même essayé d'ajouter noauto à l'espace de swap pour qu'il ne soit pas configuré du tout - une fois que le système est démarré, je peux l'activer sans la phrase de passe, alors j'ai pensé que j'allais juste ajouter un script d'initialisation tardif à faire , mais même avec noauto cryptsetup demande toujours la phrase secrète.

Merci!

Brad
la source
4
Pour cette raison, il est recommandé d'utiliser LVM + LUKS en cas de plusieurs partitions. Crypsetup peut être utilisé au-dessus ou en dessous de la couche LVM (au-dessus -> système de fichiers, en dessous -> disque). L'utilisation de cryptsetup sous LVM présente l'avantage de n'avoir besoin que d'une seule partition chiffrée (celle de LVM).
Lekensteyn

Réponses:

10

J'ai eu la même question, voici comment je l'ai fait sur Ubuntu 12.04.1 et 12.10,

- Avant de commencer, assurez-vous d'avoir une sauvegarde et pouvez également démarrer votre système avec ubuntu cd ou usb; comme si vous faites une erreur, votre système peut ne plus démarrer ou vous risquez de perdre des données. je suppose que vous avez un système ubuntu crypté avec LUKS, à l'intérieur de LUKS vous avez 3 partitions, SYSTEM-BOOT (non crypté), SYSTEM-SWAP (crypté) et SYSTEM-OS (crypté) -

vous devez ajuster les UUID, SYSTEM-SWAP_crypt, SYSTEM-OS_crypt, SYSTEM-SWAP, SYSTEM-OS à la variation utilisée sur votre système, veuillez consulter le lien de référence ci-dessous ma solution pour plus d'informations

Obtenez les UUID:

blkid

Préparez>

swapoff /dev/mapper/SYSTEM-SWAP_crypt
cryptsetup luksClose SYSTEM-SWAP_crypt

Dites à cryptsetup de calculer la phrase secrète de la partition de swap à partir de la clé de déchiffrement du volume contenant le système de fichiers racine>

/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksFormat /dev/mapper/SYSTEM-SWAP --key-file -
/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksOpen /dev/mapper/SYSTEM-SWAP SYSTEM-SWAP_crypt --key-file -
mkswap /dev/mapper/SYSTEM-SWAP_crypt

informer le système de la partition de swap, éditer crypttab>

nano /etc/crypttab

=? assurez-vous que deux lignes correspondent

SYSTEM-OS_crypt UUID=uuid-of-luks-containing-osroot none luks
SYSTEM-SWAP_crypt UUID=uuid-of-luks-containing-swap SYSTEM-OS_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

informer le système de la partition d'échange, éditer fstab>

nano /etc/fstab

=? assurez-vous que vous avez cette ligne

/dev/mapper/SYSTEM-SWAP_crypt swap swap sw 0 0

informer le système de la partition d'échange, modifier le CV>

nano /etc/initramfs-tools/conf.d/resume

=? assurez-vous que vous avez cette ligne

RESUME=UUID=uuid-of-encrypted-swap-SYSTEM-SWAP_crypt

mettre à jour initramfs sur la partition de démarrage>

update-initramfs -u -k all

Référence

La réponse inspirée par la mise en place d'un système Debian crypté (lien archivé):

Si vous utilisez un système Debian chiffré, vous devez probablement respecter certaines exigences de sécurité. Si tel est le cas, vous devez également utiliser une partition de swap chiffrée.

La partition de swap peut être chiffrée de deux manières:

  • il peut être recréé à chaque démarrage, à l'aide d'une phrase de passe aléatoire, ou
  • il peut être créé comme les autres volumes chiffrés avec une phrase secrète persistante

Si vous souhaitez utiliser la suspension sur disque, vous ne pouvez pas utiliser la première approche car elle écraserait votre empreinte mémoire stockée dans la partition de swap. De plus, vous ne pouvez pas utiliser un fichier de clé comme les autres partitions, car le système de fichiers racine n'est pas (et ne doit pas) être monté au moment où le processus de reprise démarre et doit lire la partition de swap décryptée.

La façon dont j'ai résolu cela est de dire à cryptsetup de calculer la phrase secrète de la partition de swap à partir de la clé de déchiffrement du volume contenant le système de fichiers racine; le package cryptsetup implémente cela avec /lib/cryptsetup/scripts/decrypt_derived. Ainsi, pour configurer la partition de swap, je fais ce qui suit, en supposant que hda2la partition contenant le swap crypté et que le système de fichiers racine se trouve hda5_crypt:

swapoff /dev/mapper/hda2_crypt
cryptsetup luksClose hda2_crypt
dd if=/dev/urandom of=/dev/hda2
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
  | cryptsetup luksFormat /dev/hda2 --key-file -
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
  | cryptsetup luksOpen /dev/hda2 hda2_crypt --key-file -
mkswap /dev/mapper/hda2_crypt

Pour informer le système de cette partition de swap, nous devons l'ajouter à /etc/crypttabet /etc/fstab; assurez-vous que ces fichiers contiennent des lignes comme les suivantes:

/etc/crypttab:
  hda2_crypt /dev/hda2 hda5_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

/etc/fstab:
  /dev/mapper/hda2_crypt swap swap sw 0 0

Avec cela en place, dès que vous configurez le système pour une suspension sur disque, la partition de swap sera automatiquement configurée à côté du système de fichiers racine très tôt pendant la séquence de démarrage. Pour déterminer la partition de swap à rendre disponible à ce stade, cryptsetup vérifie les éléments suivants: asfasfafs - une ligne comme RESUME=/dev/mapper/hda2_cryptin /etc/initramfs-tools/conf.d/resume - un paramètre de reprise de périphérique dans /etc/uswsusp.conf(voir uswsusp.conf(5)) - une entrée dans /etc/suspend.conf - a resume=/dev/mapper/hda2_cryptdans la ligne de commande du noyau

Vous pouvez inspecter /usr/share/initramfs-tools/hooks/cryptrootsi vous souhaitez en savoir plus à ce sujet.

Prince
la source
Bienvenue sur Ask Ubuntu! Aurait + 1'd sinon simplement copié / collé sans prendre soin de la mise en forme (ce que je viens de faire). J'aime l'approche «il peut être recréé à chaque démarrage, en utilisant une phrase de passe aléatoire» ici.
gertvdijk
a ajouté les commandes que j'ai réellement utilisées à la réponse, je vais également le tester le 12.10, mettra à jour la réponse plus tard
Prince
D'accord. Je suppose que vous le copiez / collez complètement. Veuillez le modifier pour avoir une idée claire des modifications que vous y avez apportées pour le faire fonctionner. Serait utile, merci!
gertvdijk
ne l'essayez pas le 12.10 car j'ai rencontré un bug qui empêche le démarrage, j'obtiens "cryptsetup lvm n'est pas disponible", rapporte la recherche Google. besoin de regarder plus en profondeur mais sans temps, nous le ferons savoir plus tard.
Prince
mis à jour la réponse, mon système 12.10 est maintenant entièrement fonctionnel et ne demande qu'un seul mot de passe, je n'ai pas mis à jour-initramfs -u -k tout à la fin qui a créé le problème que j'ai mentionné dans le commentaire précédent. @gertcdijk a tout formé, j'espère que tu es heureux maintenant
Prince
4

Cela indique probablement que la partition de swap est accessible pendant la initramfspartie du processus de démarrage. À ce stade, le système de fichiers racine n'a pas encore été monté, donc tous les fichiers de configuration qui y sont stockés ne seront pas visibles.

Alors que l'espace de swap est monté après le système de fichiers racine, il y a une raison pour que le initramfsprocessus d'initialisation accède à l'espace de swap: lorsque vous hibernez votre ordinateur, le contenu de la mémoire et l'état du système sont écrits pour swap. Afin de quitter l'hibernation, il est nécessaire de vérifier si l'espace de swap contient une image d'hibernation qui nécessiterait la phrase de passe.

Si cela ne vous dérange pas de perdre la capacité de reprendre l'hibernation, vous pouvez désactiver ce comportement en modifiant /etc/initramfs-tools/conf.d/resumeet en commentant la ligne en commençant par RESUME=. Après avoir effectué la modification, exécutez update-initramfs -upour mettre à jour l' initramfsimage.

James Henstridge
la source
Ah merci! Je ne suis pas sûr de vouloir sacrifier l'hibernation. Je ne l'utilise pas souvent, mais lorsque la batterie s'use sans que je m'en aperçoive, elle est utile. Savez-vous s'il existe un moyen pour que cryptsetup réutilise le même mot de passe pour /?
Brad
Je ne connais aucun moyen de le faire. Et avant de demander, n'essayez pas de mettre une copie de votre fichier de clés dans le initramfs. Bien qu'il supprimerait l'invite de phrase secrète, il le rendrait également accessible à toute personne ayant un accès physique au disque.
James Henstridge