Ceci est une ancienne révision du document !


Gérer la sécurité d'une installation ubuntu avec une clé usb

Ici nous verrons comment paramétrer le verrouillage/déverrouillage d'une installation d'Ubuntu avec une clé USB.

Si vous possédez une installation d'Ubuntu sur partition LUKS (Linux Unified Key Setup) et que vous en avez marre de taper le mot de passe à chaque démarrage, vous pouvez paramétrer une clé usb afin de vous authentifier automatiquement si cette dernière est branchée!

Il est plus que conseillé de faire un backup de la clé, l'histoire de pas tout devoir reparamétrer si perte de la clé. De plus, Il est conseillé d'avoir une alternative de réparation (type livecd ou live usb) afin de pouvoir réparer le démarrage en cas de soucis!

Si cette dernière n'est pas branchée, le mot de passe vous sera demandé.

Prérequis

  1. Une partition de type LUKS avec ubuntu d'installé dessus
  2. Une partition de boot séparée
  3. Une clé usb ou un support amovible (testé avec carte SD et clé usb)

Vous pouvez avoir une installation de windows à coté. Ceci ne posera pas de soucis.

Etape 1 : Préparer la clé

Sauvegardez toute données présente sur la clé que vous allez utiliser!

De plus, soyez attentifs aux commandes, et ne validez celles-ci que lorsque vous-vous êtes relu! Un risque de perte de données existe si vous faites des erreurs de code!

Créez une partition vierge de type ext4[3/2] d'au moins 1Mo sur le support. Utilisez gparted par exemple.

Fat32 devrait fonctionner aussi, mais non testé. Vous pouvez aussi utiliser une seule partition sur toute la clé. J'utilise personnellement une petite partition de 1Mo sur ma clé en ext4, puis le reste de la clé en fat32 pour compatibilité Windows.
/dev/sdb1 représentera ici la partition de notre clé. /dev/sda2 représentera ici la partition du disque crypté. Vous pouvez identifier la votre dans gparted. Elle est situé en tout début de ligne à gauche de votre partition:

Attention, /dev/sdb représente la clé en entier, n'oubliez pas de spécifier le numéro de partition (sdb1, sdf2, sdc4… tout dépend de votre clé)

Montez la clé

mkdir /mnt/usb
mount /dev/sdb1 /mnt/usb

Créez un fichier "d'authentification" de 256octet sur la clé.

dd if=/dev/random of=/mnt/usb/.authkey bs=1 count=256

Puis démontezla clé.

sync
umount /mnt/usb

Etape 2 : Préparer la séquence de démarrage

Editez le fichier /etc/initramfs-tools/modules avec les droits root

sudo gedit /etc/initramfs-tools/modules

Et ajoutez les lignes suivantes au fichier.

  • Si vous utilisez une carte SD:
mmc_core
sdhci
mmc_block
aes_i586
sha256
dm_mod
dm_crypt
  • Si vous utilisez une clé USB:
usbcore
ohci_hcd
ehci_hcd
usb_storage
sd_mod
aes_i586
sha256
dm_mod
dm_crypt

Ajoutez la nouvelle configuration au système.

update-initramfs -v -u

Etape 3 : Paramétrer le démarrage

Redémarrez, et lorsque le système vous demandera de rentrer votre mot de passe, rentrez 3 fois un mot de passe erroné. Vous atterrirez sur une console avec marqué

(initramfs)

Montez la clé

mkdir /usb
mount /dev/sdb1 /usb

Ajoutez le fichier d'authentification aux clé connues

cryptsetup luksAddKey /dev/sda2  /usb/.authkey

Démontez la clé et redémarrez

umount /usb
sync
reboot

Etape 4 : Paramétrer le système

Redémarrez normalement.

Notez l'UUID (identifiant de partition) de la partition obtenu par cette commande:

(Nous prendrons ici "9645b6cb-80db-457b-8d46-fbb9fd33dxxb". N'oubliez pas de le remplacer par le votre dans les commandes suivantes)

blkid /dev/sdb1

Éditez le fichier /etc/crypttab avec les droits root:

sudo gedit /etc/crypttab

Vous devriez avoir quelque chose du genre:

sda2_crypt          UUID=9df4f-878ytju-ilk45q-gfbb9f-d33dxxb       none                luks

Dupliquez la ligne et changez le "none" par UUID=9645b6cb-80db-457b-8d46-fbb9fd33dxxb:.authkey Et rajoutez ",tries=3,keyscript=/usr/local/sbin/bootkeyscript" à la fin de la ligne Soit après "luks" dans notre exemple. Attention à la virgule qui est importante, et à ne pas avoir de duplicatat dans la ligne.

Notre fichier final ressemblera donc à quelque chose du genre:

sda2_crypt          UUID=9df4f-878ytju-ilk45q-gfbb9f-d33dxxb       UUID=9645b6cb-80db-457b-8d46-fbb9fd33dxxb:.authkey                luks,tries=3,keyscript=/usr/local/sbin/bootkeyscript
sda2_crypt          UUID=9df4f-878ytju-ilk45q-gfbb9f-d33dxxb       none                                                                                                   luks

Téléchargez ce script et placez le dans /usr/local/sbin/bootkeyscript à l'aide des droits root.

sudo cp ~/Téléchargements/bootkeyscript /usr/local/sbin/bootkeyscript

(N'oubliez pas de changez l'emplacement du fichier téléchargé si "~/Téléchargements/bootkeyscript" n'est pas sa localisation)

Donnez-lui les droits d’exécution:

sudo chmod +x /usr/local/sbin/bootkeyscript

Réactualisez la séquence de démarrage:

update-initramfs -v -u

Redémarrez et profitez! ;)

Sources

  • tutoriel/securiser_ubuntu_avec_peripherique_externe.1368215908.txt.gz
  • Dernière modification: Le 10/05/2013, 21:58
  • par malabarth