web-dev-qa-db-fra.com

arrêtez crypttab en demandant le mot de passe pour swap

J'ai installé un nouveau système 11.04 quand il a été publié et configuré le chiffrement intégral 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 était frustrant. J'ai donc essayé de configurer/home et de permuter le déchiffrement à 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 bien pour/home, qui est monté automatiquement sans demander de mot de passe. Mais cryptsetup demande toujours un mot de passe pour l'espace de swap. J'ai même essayé d'ajouter noauto à l'espace d'échange afin qu'il ne soit pas configuré du tout. Une fois le système démarré, je peux l'activer sans la phrase secrète. J'ai donc pensé ajouter un script d'initialisation tardif. mais, même avec noauto, cryptsetup demande toujours la phrase secrète.

Merci!

9
Brad

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

--avant de commencer, assurez-vous de disposer d'une sauvegarde et de pouvoir é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 pouvez perdre des données. Je suppose que vous avez un système Ubuntu chiffré avec LUKS. À l'intérieur de LUKS, vous disposez de 3 partitions: SYSTEM-BOOT (non chiffré), SYSTEM-SWAP (chiffré) et SYSTEM-OS (chiffré) -

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.

Obtenir les UUID:

blkid

Préparer>

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

informe le système de la partition swap, édite 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

informe le système de la partition d'échange, modifie fstab>

nano /etc/fstab

=? assurez-vous que vous avez cette ligne

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

informe le système de la partition swap, édite resume>

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

=? assurez-vous que vous avez cette ligne

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

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

update-initramfs -u -k all

Référence

La réponse inspirée par Configuration d’un système Debian crypté (lien archivé):

Si vous utilisez un système Debian crypté, vous avez probablement des exigences de sécurité à respecter. 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, en utilisant une phrase secrète 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 la mémoire occupée par la 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échiffrée.

J'ai résolu ce problème en demandant à 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 paquetage cryptsetup implémente ceci avec /lib/cryptsetup/scripts/decrypt_derived. Ainsi, pour configurer la partition de swap, procédez comme suit, en supposant que hda2 soit la partition contenant le swap crypté et que le système de fichiers racine se trouve dans 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/crypttab et /etc/fstab; assurez-vous que ces fichiers contiennent des lignes comme celles-ci:

/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

Une fois que cela est en place, dès que vous configurez le système pour une suspension sur disque, la partition de swap est automatiquement configurée très tôt avec le système de fichiers racine au cours de 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_crypt dans /etc/initramfs-tools/conf.d/resume - un paramètre de périphérique de reprise dans /etc/uswsusp.conf (voir uswsusp.conf(5)) - une entrée dans /etc/suspend.conf - un resume=/dev/mapper/hda2_crypt dans la ligne de commande du noyau

Vous pouvez inspecter /usr/share/initramfs-tools/hooks/cryptroot si vous voulez en savoir plus à ce sujet.

10
Prince

Cela indique probablement que la partition de swap est en cours d'accès au cours de la partie initramfs du processus de démarrage. À ce stade, le système de fichiers racine n’a pas encore été monté. Par conséquent, aucun fichier de configuration stocké n’est visible.

Bien que l'espace d'échange soit monté après le système de fichiers racine, le processus d'initialisation initramfs a une raison d'accéder à l'espace d'échange: lors de la mise en veille prolongée de votre ordinateur, le contenu de la mémoire et l'état du système sont écrits dans swap. Pour sortir de l'hibernation, il est nécessaire de vérifier si l'espace de permutation contient une image d'hibernation nécessitant la phrase secrète.

Si cela ne vous dérange pas de perdre la possibilité de reprendre le mode veille prolongée, vous pouvez désactiver ce problème en modifiant /etc/initramfs-tools/conf.d/resume et en commentant la ligne commençant par RESUME=. Après avoir effectué le changement, exécutez update-initramfs -u pour mettre à jour l'image initramfs.

4
James Henstridge