J'ai récemment installé le serveur Ubuntu 11.04 avec le cryptage complet LVM (installé à partir de l'installation). Je souhaite maintenant utiliser un fichier de clé pour le déverrouillage automatique. J'ai essayé de suivre ce guide http://ubuntuforums.org/showthread.php?t=837416
J'ai généré une clé avec cette commande: Sudo dd if=/dev/urandom of=/boot/grub/keyfile bs=1024 count=4
je l'ai mis dans /boot/grub
parce que je pense que ce n'est pas chiffré. Quand j'essaie d'ajouter la clé avec cette commad Sudo cryptsetup luksAddKey /dev/sdX /boot/grub/keyfile
, il me demande le mot de passe et quand je le mets, rien ne se passe, rien n'est imprimé à l'écran! Je l'ignore et continue les autres étapes et redémarre mais rien ne s'est passé et il demande la phrase secrète.
Merci pour l'aide .
Je viens juste de voir cela sur mon nouveau serveur domestique, il a fallu beaucoup de recherches sur Google et de devinettes, mais ça marche. Je vais essayer de reproduire les étapes ici. J'utilise Ubuntu Server 11.10 et j'ai commencé avec une installation à peu près standard utilisant LVM chiffré, je vais donc vous décrire les modifications que j'ai apportées à partir de là.
Installer:
Tout d'abord, j'ai créé un fichier de clés, juste dans mon répertoire personnel:
dd if=/dev/urandom of=keyfile bs=512 count=4
(vous pouvez utiliser une taille de bloc plus grande ou compter pour une clé plus grande)
Dites à cryptsetup la nouvelle clé (c'est le contenu qui est important, pas le nom de fichier):
Sudo cryptsetup luksAddKey /dev/sda5 keyfile
Ensuite, j'ai formaté ma clé USB avec ext2 et lui ai attribué une étiquette. J'ai utilisé une étiquette pour pouvoir la monter par étiquette plus tard et remplacer le lecteur flash USB en cas de problème.
Sudo mkfs -t ext2 /dev/sdc1
Sudo e2label /dev/sdc1 KEYS
(bien sûr, votre appareil variera)
Maintenant, copiez le fichier de clés sur le lecteur flash USB, qui appartient au mode racine 400:
mkdir KEYS
Sudo mount /dev/sdc1 KEYS
Sudo cp keyfile KEYS
Sudo chown root KEYS/keyfile
Sudo chmod 400 KEYS/keyfile
Modifiez/etc/crypttab. Le mien initialement contenu
sd5_crypt UUID=(...) none luks
que j'ai changé pour
sd5_crypt UUID=(...) /dev/disk/by-label/KEYS:/keyfile luks,keyscript=/lib/cryptsetup/scripts/passdev
Enfin, mettez à jour les initramfs:
Sudo update-initramfs -uv
Il démarre maintenant en utilisant le fichier de clés sur le lecteur flash USB. Si je retire le lecteur flash (par exemple, lorsque je pars en vacances), il ne démarre pas et mes données sont sécurisées.
Si quelqu'un sait comment le demander pour demander le mot de passe si le lecteur flash USB est manquant, ce serait pratique comme solution de secours. J'espère que cela vous aidera, tout ajout ou toute correction serait la bienvenue!
Ces instructions de howtoforge.com m’ont permis de démarrer avec un volume à déchiffrement automatique.
Sudo dd if=/dev/urandom of=/root/keyfile bs=1024 count=4
Sudo chmod 0400 /root/keyfile
Cela rendra le fichier clé lisible uniquement par root. Si quelqu'un a accès à ce fichier de clés, vous avez de toute façon un problème plus grave sur votre ordinateur.
Vous pouvez également envoyer votre fichier de clé souhaité à root: root et le déplacer dans le dossier/root.
Les appareils compatibles avec LUKS/dm_crypt peuvent contenir jusqu'à 10 fichiers de clé/mots de passe différents. Donc, à côté du mot de passe déjà configuré, nous allons ajouter ce fichier clé comme méthode d'autorisation supplémentaire.
Sudo cryptsetup luksAddKey /dev/sdX /root/keyfile
sdX est bien sûr votre appareil LUKS.
Tout d'abord, vous serez invité à entrer un mot de passe (existant) pour déverrouiller le lecteur. Si tout fonctionne bien, vous devriez obtenir un résultat comme celui-ci:
Enter any LUKS passphrase:
key slot 0 unlocked.
Command successful.
Les périphériques LUKS doivent créer un mappeur qui peut ensuite être référencé dans le fstab. Ouvrir/etc/crypttab
Sudo nano /etc/crypttab
et ajoutez ensuite une ligne comme ceci:
sdX_crypt /dev/sdX /root/keyfile luks
ou vous pouvez utiliser l'UUID du périphérique:
sdX_crypt /dev/disk/by-uuid/247ad289-dbe5-4419-9965-e3cd30f0b080 /root/keyfile luks
sdX_crypt est le nom du mappeur en cours de création. Vous pouvez utiliser ici n'importe quel nom, par exemple. "musique" ou "films" ou "sfdsfawe" ....
Enregistrez et fermez le fichier en tapant ctrl-x, entrez, entrez. Ctrl-x ferme nano mais il demande d’abord de sauvegarder le fichier [yes = enter] et ce que le nom doit être [same name = enter].
Ce que nous avons fait là-bas, c'est en réalité dire que/root/keyfile doit être utilisé à la place de la saisie du mot de passe pour déverrouiller le lecteur.
Nous avons maintenant un périphérique déverrouillé (enfin, pas encore, mais au démarrage du système) et nous devons simplement le monter maintenant. Ouvrez/etc/fstab:
Sudo nano /etc/fstab
et ajoutez une nouvelle entrée comme:
/dev/mapper/sdX_crypt /media/sdX ext3 defaults 0 2
Assurez-vous que vous avez le bon nom de mappeur que vous avez ajouté à l'étape 4. Assurez-vous également que le point/dossier de montage existe. Après l'avoir ajouté, enregistrez à nouveau le fichier et fermez-le (ctrl-x, entrez, entrez).
C'est tout. Vous pouvez maintenant redémarrer et les périphériques supplémentaires doivent être déverrouillés et montés automatiquement. Vous pouvez également le tester en remontant tous les périphériques:
Sudo mount -a
Amélioration réponse de Randy Orrison , voici un petit script que j'ai créé, qui obligera le système à demander à l'utilisateur un mot de passe s'il ne parvient pas à trouver le fichier de clé.
#!/bin/sh
ask_for_password () {
cryptkey="Unlocking the disk $cryptsource ($crypttarget)\nEnter passphrase: "
if [ -x /bin/plymouth ] && plymouth --ping; then
cryptkeyscript="plymouth ask-for-password --Prompt"
cryptkey=$(printf "$cryptkey")
else
cryptkeyscript="/lib/cryptsetup/askpass"
fi
$cryptkeyscript "$cryptkey"
}
device=$(echo $1 | cut -d: -f1)
filepath=$(echo $1 | cut -d: -f2)
# Ask for password if device doesn't exist
if [ ! -b $device ]; then
ask_for_password
exit
fi
mkdir /tmp/auto_unlocker
mount $device /tmp/auto_unlocker
# Again ask for password if device exist but file doesn't exist
if [ ! -e /tmp/auto_unlocker$filepath ]; then
ask_for_password
else
cat /tmp/auto_unlocker$filepath
fi
umount /tmp/auto_unlocker
Enregistrez-le et remplacez keyscript=/lib/cryptsetup/scripts/passdev
dans /etc/crypttab
par le chemin d'accès à ce fichier et exécutez Sudo update-initramfs -uv
et vous avez terminé.
@deitch J'avais la même configuration que @Randy Orrison et j'ai rencontré le même problème que vous et il s'avère qu'il s'agit d'un bogue de systemd qui tente de monter le système de fichiers/à nouveau lorsqu'il trouve l'entrée correspondante dans/etc/crypttab.
Pour résoudre ce problème, je viens de supprimer l'entrée de sda5_crypt dans/etc/crypttab une fois que la commande update-initramfs -uv a été exécutée.
Redémarrez et tout fonctionne comme prévu.