{{tag> sécurité tutoriel}} ====== 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. ===== Déchiffrer automatiquement une partition chiffrée au démarrage ===== 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! Si cette dernière n'est pas branchée, le mot de passe vous sera demandé. 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! ==== Prérequis ==== - Une partition de type LUKS avec ubuntu d'installé dessus - Une partition de boot séparée - 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 **[[apt>gparted]]** par exemple. Vous pouvez aussi n'utiliser qu'une grande partition. Systèmes de fichiers testés: Ext4/3/2, Fat32, Ntfs /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: {{:tutoriel:cryptgpart.png?200|}} 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 ==== Attention, si vous souhaitez utiliser ntfs, une mise à jour du fichier bootscript est disponible! (Etape 4) [2013/09/26] De plus, assurez-vous que le module ntfs-3g est bien présent dans **/etc/initramfs-tools/modules**, et que vous avez [[:tutoriel:comment_installer_un_paquet|Installé le paquet]] **[[apt>ntfs-3g|ntfs-3g]]** 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 ntfs-3g * Si vous utilisez une clé USB: usbcore ohci_hcd ehci_hcd usb_storage sd_mod aes_i586 sha256 dm_mod dm_crypt ntfs-3g Ajoutez la nouvelle configuration au système. sudo update-initramfs -v -u ==== Etape 3 : Paramétrer le démarrage ==== Montez la clé mkdir /mnt/usb mount /dev/sdb1 /mnt/usb Ajoutez le fichier d'authentification aux clé connues cryptsetup luksAddKey /dev/sda2 /mnt/usb/.authkey Démontez la clé et redémarrez umount /mnt/usb sync reboot ==== Etape 4 : Paramétrer le système ==== Redémarrez normalement. Notez l'UUID (identifiant de partition) de la partition contenant la clé (/dev/sdb1), obtenu par cette commande: (Nous prendrons ici **4645b6cb-80db-457b-8d46-fbb9fd33dxxb**. N'oubliez pas de le remplacer par le votre dans les commandes suivantes) sudo 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 **9df4f-878ytju-ilk45q-gfbb9f-d33dxxb** est l'UUID de la partition cryptée Dupliquez la ligne et changez le **none** par **UUID=4645b6cb-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 duplicata dans la ligne. Notre fichier final ressemblera donc à quelque chose du genre: sda2_crypt UUID=9df4f-878ytju-ilk45q-gfbb9f-d33dxxb UUID=4645b6cb-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 [[http://iutinfo2000.free.fr/Linux/bootkeyscript| 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! 8-) Si vous souhaitez débguer et afficher les messages de ce que fait le script, modifier la ligne **debug=0** en **debug=1** du fichier **/usr/local/sbin/bootkeyscript** Puis réactualisez la séquence de démarrage: update-initramfs -v -u ==== En cas de soucis ==== Si une erreur apparaît au démarrage indiquant quelque chose du genre "UUID=nf14k7-ui56gf-wzdf4gt1-yj3-61sd not found". Et que vous tombez sur la console (initramfs) Alors le fichier **/etc/crypttab** n'est pas correct. La procédure est comme ceci: * Démarrez sur un live cd ou live usb * Identifiez les emplacements de la partition de boot et la partition root avec gparted ici respectivement **/dev/sda1** et **/dev/sda2** * Identifiez l'UUID de la partitino cryptée par un: sudo cryptsetup luksUUID /dev/sda2 * créez le répertoire /tmproot: mkdir /tmproot * montez les deux partitions: cryptsetup luksOpen /dev/sda2 tmproot mount /dev/mapper/tmproot /tmproot mount /dev/sda1 /tmproot/boot * Chrootez-vous dans le système: chroot /tmproot * [[:tutoriel:comment_modifier_un_fichier|Modifiez]] le fichier **/etc/crypttab**, et vérifiez que l'UUID de montage est bien celui de la partition cryptée. * Nous aurons donc, pour l'optimal: sda2_crypt UUID=uuid-de-votre-partition-cryptee none luks ATTENTION, **sda2_crypt** doit correspondre avec le nom de la partition montée en root listée dans le fichier /etc/fstab! Sinon quoi, la partition sera bien décryptée au démarrage, mais absolument pas montée dans **/**, ce qui ne permettra bien évidement pas le démarrage! Logiquement, vous n'avez pas à y toucher à n'importe quel moment du tutoriel. Seul le "none" et la partie "luks" sont à modifier dans l'étape 4! * Enregistrez et réactualisez la configuration: update-initramfs -v -u * Redemarrez ===== Verrouiller / Déverrouiller l'écran avec une clé USB ===== ==== Identifier l'ID de sa clé ==== Notez l'identification de la clé, obtenu par cette commande: lsusb Vous devrez obtenir une résultat similaire: Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 003: ID 114b:085b PNY Bus 002 Device 004: ID 035f:0945 Microsoft Corp. Nano Transceiver v1.0 for Bluetooth Nous choisirons ici la clé "PNY". Retenez donc la section ID qui précède le nom du materiel. Ici: **ID 114b:085b PNY** ==== Paramétrer et installer le script ==== Installez **[[apt>xscreensaver]]** (requis) sudo apt-get install xscreensaver Créez un script dans le répertoire **~/** (votre home) appelé **.autoLock** Éditez avec gedit: touch ~/.autoLock gedit ~/.autoLock Et on copie/colle le code suivant: #!/bin/bash # A simple shell to lock / unlock your Desktop # Ubuntu # ---------------------------------------------------------------------------- # Original Script by Echowrap http://echowarp.neomenlo.org # Modified by Vidyadhar D S # vidyadhards@gmail.com techienote.com@gmail.com # Translated and corrected by malabarth malabarth@gmail.com # ---------------------------------------------------------------------------- #Replace with the ID of your USB device id="ID 114b:085b PNY" #runs every 2 seconds for ((i=0; i<=30; i++)) do if [ -z "`lsusb | grep "$id"`" ] then echo "Clé d'authentification absente" if [ -n "`DISPLAY=:0.0 gnome-screensaver-command --query | grep "est actif"`" ] then if [ -e /tmp/autoUnlock.lock ] then rm /tmp/autoUnlock.lock fi elif [ -e /tmp/autoUnlock.lock ] then DISPLAY=:0.0 notify-send -t 5000 --icon=dialog-info "Clé d'authentification deconnectée" "A bientôt!" DISPLAY=:0.0 gnome-screensaver-command --lock rm /tmp/autoUnlock.lock fi else echo "Clé d'authentification connectée" if [ ! -e /tmp/autoUnlock.lock ] then DISPLAY=:0.0 gnome-screensaver-command --deactivate DISPLAY=:0.0 notify-send -t 5000 --icon=dialog-info "Clé d'authentification connectée" "Bienvenue!" touch /tmp/autoUnlock.lock fi fi sleep 2 done **ATTENTION** On n'oubliera pas de remplacer **ID 114b:085b PNY** par votre **ID** Puis donnez-lui les droits d'execution: chmod +x .autoLock ==== Ajouter aux tâches cron ==== crontab -u votrenomdutilisateur -e On ajoute la ligne suivante: * * * * * bash /home/votrenomdutilisateur/.autoLock & >/dev/null 2>&1 * Enregistrez (ctrl + o) * Quittez (ctrl + x) Redémarrez cron: sudo /etc/init.d/cron restart Voila, enlevez votre clé, l'écran devrait se verrouiller. Remettez-là, L'écran se déverrouillera! Si pas de clé, le mot de passe sera demandé comme un déverrouillage normal. ==== En cas de soucis ==== Si problème il y a, loguez vous en console tty1 (ctrl + alt + 1), et déplacez le fichier exécutable: mv .autoLock .autoLock.bak Puis redémarrez! N'oubliez pas de supprimer la tâche de cron tab si vous ne souhaitez plus cette fonctionnalité! crontab -u votrenomdutilisateur -e ===== Sources & Contributeurs ===== [[http://web.archive.org/web/20100110234521/http://petaramesh.org/post/2007/11/29/Une-cle-de-contact-pour-votre-portable-chiffre]] [[http://www.techienote.com/2011/03/lock-unlock-ubuntu-desktop-using-usb-drive.html]] ---- //Contributeurs: malabarth//