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é.
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é
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.
Vous pouvez aussi n'utiliser qu'une grande 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
De plus, assurez-vous que le module ntfs-3g est bien présent dans /etc/initramfs-tools/modules, et que vous avez Installé le paquet 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 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!
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
- 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
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 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 <http://www.techienote.com/> # 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