{{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//