« Security/Crypt/Partition » : différence entre les versions

De TartareFR
Aller à la navigation Aller à la recherche
(Page créée avec « == Avant propos == Avec la multiplication des clés et autres disques durs USB, nous redécouvrons les joies de deux des plus grands fléaux du monde : la perte et le vol :) ... »)
 
 
(14 versions intermédiaires par le même utilisateur non affichées)
Ligne 34 : Ligne 34 :


== Préparation ==
== Préparation ==
{{Box Note|Nous prendrons dans notre exemple le cas le chiffrement d'un disque dur externe USB.}}
{{Admon/note|Nous prendrons dans notre exemple le cas le chiffrement d'un disque dur externe USB.}}
=== Installation des outils ===
=== Installation des outils ===
Nous aurons besoin des packages suivants (Gentoo) :
Nous aurons besoin des packages suivants (Gentoo) :
* sys-fs/cryptsetup
* sys-fs/cryptsetup<syntaxhighlight lang="bash">emerge -av sys-fs/cryptsetup</syntaxhighlight>
<syntaxhighlight lang="bash">emerge -av sys-fs/cryptsetup</syntaxhighlight>


=== Trouver la partition à chiffrer ===
=== Trouver la partition à chiffrer ===
Ligne 48 : Ligne 47 :
=== Cryptage de la partition ===
=== Cryptage de la partition ===
* Choisissons le type de chiffrement, appelé '''cipher''', que nous voulons utiliser. Le choix par défaut est '''aes''' et nous conviendra dans la plupart des cas.
* Choisissons le type de chiffrement, appelé '''cipher''', que nous voulons utiliser. Le choix par défaut est '''aes''' et nous conviendra dans la plupart des cas.
* Si vous voulez en utiliser un autre, listez les cipher disponibles sur votre système :
* Si vous voulez en utiliser un autre, listez les cipher disponibles sur votre système :<syntaxhighlight lang="bash">cat /proc/crypto <nowiki>|</nowiki> grep name</syntaxhighlight>
<syntaxhighlight lang="bash">cat /proc/crypto <nowiki>|</nowiki> grep name</syntaxhighlight>
 
* La génération de la clé de cryptage de la passphrase utilisée ci-après requiert que nous choisissions une sorte de phrase de cryptage, appelée '''hash'''. Dans notre cas, nous prendrons la phrase '''JaimeLesChats2Paris''' comme hash.
* La génération de la clé de cryptage de la passphrase utilisée ci-après requiert que nous choisissions une sorte de phrase de cryptage, appelée '''hash'''. Dans notre cas, nous prendrons la phrase '''JaimeLesChats2Paris''' comme hash.
* Pour préparer la partition avec LUKS, invoquons la commande suivante :
* Pour préparer la partition avec LUKS, invoquons la commande suivante :<syntaxhighlight lang="bash">cryptsetup luksFormat -c aes /dev/sdc1</syntaxhighlight>
<syntaxhighlight lang="bash"># cryptsetup luksFormat -c '''aes''' '''/dev/sdc1'''</syntaxhighlight>
* Cette commande va générer une clé maître et nous demander une clé (passphrase) initiale, correspondant au '''slot 0. Retenez bien cette clé !'''
* Cette commande va générer une clé maître et nous demander une clé (passphrase) initiale, correspondant au '''slot 0. Retenez bien cette clé !'''


== Utilisation ==
== Utilisation ==
=== Ouverture de la partition ===
=== Ouverture de la partition ===
{{Important|vous devrez toujours utiliser cette commande avant de pouvoir utiliser la partition !}}
{{Admon/important|vous devrez toujours utiliser cette commande avant de pouvoir utiliser la partition !}}


* Pour ouvrir notre partition et la charger avec comme nom '''usbdisk''' on tape :
* Pour ouvrir notre partition et la charger avec comme nom '''usbdisk''' on tape :<syntaxhighlight lang="bash">cryptsetup luksOpen /dev/sdc1 usbdisk</syntaxhighlight>
<syntaxhighlight lang="bash">cryptsetup luksOpen /dev/sdc1 usbdisk</syntaxhighlight>
* Le mot de passe correspondant à la passphrase initiale (slot 0) vous sera alors demandé pour délocker la partition.
* Le mot de passe correspondant à la passphrase initiale (slot 0) vous sera alors demandé pour délocker la partition.
* La partition sera alors accessible par le chemin '''/dev/mapper/nom_du_mapping'''.
* La partition sera alors accessible par le chemin '''/dev/mapper/nom_du_mapping'''.
Ligne 67 : Ligne 62 :


=== Formattage ===
=== Formattage ===
* Une fois la partition ouverte, nous pouvons la formatter :
* Une fois la partition ouverte, nous pouvons la formatter :<syntaxhighlight lang="bash">mkfs.ext3 /dev/mapper/usbdisk</syntaxhighlight>
<syntaxhighlight lang="bash">mkfs.ext3 /dev/mapper/usbdisk</syntaxhighlight>


=== Montage ===
=== Montage ===
* On peut tout simplement monter la partition maintenant et y écrire dessus :
* On peut tout simplement monter la partition maintenant et y écrire dessus :<syntaxhighlight lang="bash">mount -t ext3 /dev/mapper/usbdisk /mnt/hdd</syntaxhighlight>
<syntaxhighlight lang="bash">mount -t ext3 /dev/mapper/usbdisk /mnt/hdd</syntaxhighlight>


=== Fermeture de la partition ===
=== Fermeture de la partition ===
{{Important|Bien s'assurer d'avoir umount la partition avant !}}
{{Admon/important|Bien s'assurer d'avoir umount la partition avant !}}
* Pour fermer la partition nommée '''usbdisk''', taper :
* Pour fermer la partition nommée '''usbdisk''', taper :<syntaxhighlight lang="bash">cryptsetup luksClose usbdisk</syntaxhighlight>
<syntaxhighlight lang="bash">cryptsetup luksClose usbdisk</syntaxhighlight>


== Commandes supplémentaires ==
== Commandes supplémentaires ==
=== Ajout d'une clé dans un slot libre ===
=== Ajout d'une clé dans un slot libre ===
* Pour ajouter une clé permettant d'ouvrir la partition, exécuter la commande :
* Pour ajouter une clé permettant d'ouvrir la partition, exécuter la commande :<syntaxhighlight lang="bash">cryptsetup luksAddKey /dev/sdc1</syntaxhighlight>
<syntaxhighlight lang="bash">cryptsetup luksAddKey /dev/sdc1</syntaxhighlight>
{{Admon/note|La partition peut être ouverte par n'importe quelle clé d'un des 8 slots}}
{{Box Note|La partition peut être ouverte par n'importe quelle clé d'un des 8 slots}}


=== Obtenir des informations sur la partition ===
=== Obtenir des informations sur la partition ===
* Pour consulter les propriétés de la partition, taper :
* Pour consulter les propriétés de la partition, taper :<syntaxhighlight lang="bash">cryptsetup luksDump /dev/sdc1</syntaxhighlight>
<syntaxhighlight lang="bash">cryptsetup luksDump /dev/sdc1</syntaxhighlight>


=== Suppression d'une clé ===
=== Suppression d'une clé ===
* Pour supprimer la clé d'un slot donné, taper :
* Pour supprimer la clé d'un slot donné, taper :<syntaxhighlight lang="bash">cryptsetup luksDelKey /dev/sdc1 num_slot</syntaxhighlight>
<syntaxhighlight lang="bash">cryptsetup luksDelKey /dev/sdc1 num_slot</syntaxhighlight>


=== Créer un fichier spécial contenant une clé LUKS ===
=== Créer un fichier spécial contenant une clé LUKS ===
* Pour pouvoir utiliser l'option --passphrase de pmount ou l'option --key-file de luks, nous allons stocker dans un fichier une clé aléatoire
* Pour pouvoir utiliser l'option --passphrase de pmount ou l'option --key-file de luks, nous allons stocker dans un fichier une clé aléatoire<syntaxhighlight lang="bash">dd if=/dev/urandom of=/root/.luks-keyfile bs=1024 count=4</syntaxhighlight>
<syntaxhighlight lang="code"># dd if=/dev/urandom of=/root/.luks-keyfile bs=1024 count=4</syntaxhighlight>
* Ajoutons ensuite la clé de ce fichier dans un slot<syntaxhighlight lang="bash">cryptsetup luksAddKey /dev/sdc1 /root/.keyfile</syntaxhighlight>
* Ajoutons ensuite la clé de ce fichier dans un slot
<syntaxhighlight lang="bash">cryptsetup luksAddKey /dev/sdc1 /root/.keyfile</syntaxhighlight>


== Déchiffrage et montage automatique du disque ==
== Déchiffrage et montage automatique du disque ==
Ligne 104 : Ligne 91 :
=== pmount ===
=== pmount ===
Cet outil permet à un utilisateur lambda de monter un lecteur amovible sans avoir à être root. Bien sûr, les droits sont configurables finement.
Cet outil permet à un utilisateur lambda de monter un lecteur amovible sans avoir à être root. Bien sûr, les droits sont configurables finement.
<syntaxhighlight lang="code">
<syntaxhighlight lang="text">
*  sys-apps/pmount
*  sys-apps/pmount
       Latest version available: xxxx
       Latest version available: xxxx
Ligne 116 : Ligne 103 :
=== ivman ===
=== ivman ===
Ce démon travaille en collaboration avec HAL, il monte et démonte automatiquement des lecteurs selon des règles prédéfinies.
Ce démon travaille en collaboration avec HAL, il monte et démonte automatiquement des lecteurs selon des règles prédéfinies.
<syntaxhighlight lang="code">*  sys-apps/ivman
<syntaxhighlight lang="text">*  sys-apps/ivman
       Latest version available: 0.6.14
       Latest version available: 0.6.14
       Latest version installed: 0.6.14
       Latest version installed: 0.6.14
Ligne 126 : Ligne 113 :


=== Outils et préparatifs ===
=== Outils et préparatifs ===
* Installons les outils nécessaires :
* Installons les outils nécessaires :<syntaxhighlight lang="bash">emerge -av pmount ivman</syntaxhighlight>
<syntaxhighlight lang="bash">emerge -av pmount ivman</syntaxhighlight>
* Il faut ensuite que notre user fasse partie du groupe '''plugdev'''. Vérifions si tel est le cas :<syntaxhighlight lang="bash">id mon_user</syntaxhighlight>
 
* Si le groupe '''plugdev''' n'est pas listé, ajoutez votre user dedans :<syntaxhighlight lang="bash">usermod -a plugdev mon_user</syntaxhighlight>
* Il faut ensuite que notre user fasse partie du groupe '''plugdev'''. Vérifions si tel est le cas :
* pmount a la faculté de délocker les partitions chiffrées avec LUKS avant de les monter, c'est parfait pour nous mais il s'attend à trouver cryptsetup dans '''/bin'''. Sous Gentoo il est installé dans '''/sbin''', nous devons donc faire un petit lien symbolique :<syntaxhighlight lang="bash">ln -s /sbin/cryptsetup /bin/cryptsetup</syntaxhighlight>
<syntaxhighlight lang="bash">id mon_user}}
 
* Si le groupe '''plugdev''' n'est pas listé, ajoutez votre user dedans :
<syntaxhighlight lang="bash">usermod -a plugdev mon_user</syntaxhighlight>
 
* pmount a la faculté de délocker les partitions chiffrées avec LUKS avant de les monter, c'est parfait pour nous mais il s'attend à trouver cryptsetup dans '''/bin'''. Sous Gentoo il est installé dans '''/sbin''', nous devons donc faire un petit lien symbolique :
<syntaxhighlight lang="bash">ln -s /sbin/cryptsetup /bin/cryptsetup</syntaxhighlight>
 
* Afin de pouvoir délocker notre partition sans qu'un mot de passe nous soit demandé, nous allons écrire ce dernier dans un fichier caché qui sera ensuite lu par pmount lors du montage de la partition.
* Afin de pouvoir délocker notre partition sans qu'un mot de passe nous soit demandé, nous allons écrire ce dernier dans un fichier caché qui sera ensuite lu par pmount lors du montage de la partition.
** Je vous conseille vivement d'ajouter une clé dans un slot libre à cet effet. Cette procédure est décrite plus haut.
** Je vous conseille vivement d'ajouter une clé dans un slot libre à cet effet. Cette procédure est décrite plus haut.
** Dans notre exemple, nous utiliserons la clé '''ViveLUKS2''' du slot 1
** Dans notre exemple, nous utiliserons la clé '''ViveLUKS2''' du slot 1<syntaxhighlight lang="bash">echo 'ViveLUKS2' > /etc/.unlock-key && chown ivman:plugdev /etc/.unlock-key && chmod 660 /etc/.unlock-key</syntaxhighlight>
<syntaxhighlight lang="bash">echo '''ViveLUKS2''' > /etc/.unlock-key && chown ivman:plugdev /etc/.unlock-key && chmod 660 /etc/.unlock-key</syntaxhighlight>


=== Configuration de ivman ===
=== Configuration de ivman ===
Ligne 149 : Ligne 127 :
** Bancher le disque sur le PC
** Bancher le disque sur le PC
** Exécuter la commande dmesg pour trouver la ligne contenant le '''SerialNumber''' du disque et notez-le :
** Exécuter la commande dmesg pour trouver la ligne contenant le '''SerialNumber''' du disque et notez-le :
<syntaxhighlight lang="code"># dmesg
<syntaxhighlight lang="bash">
 
dmesg
...
[kernel] usb 1-2.3: new high speed USB device using ehci_hcd and address 16           
[kernel] usb 1-2.3: new high speed USB device using ehci_hcd and address 16           
[kernel] usb 1-2.3: configuration #1 chosen from 1 choice                             
[kernel] usb 1-2.3: configuration #1 chosen from 1 choice                             
Ligne 157 : Ligne 136 :
[kernel] usb 1-2.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3           
[kernel] usb 1-2.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3           
[kernel] usb 1-2.3: Product: External HD                                               
[kernel] usb 1-2.3: Product: External HD                                               
[kernel] usb 1-2.3: Manufacturer: Iomega</pre>
[kernel] usb 1-2.3: Manufacturer: Iomega
'''[kernel] usb 1-2.3: SerialNumber: 0210001304FA'''<pre>
[kernel] usb 1-2.3: SerialNumber: 0210001304FA
[kernel] scsi 13:0:0:0: Direct-Access    ST350083 0A              3.AA PQ: 0 ANSI: 0
[kernel] scsi 13:0:0:0: Direct-Access    ST350083 0A              3.AA PQ: 0 ANSI: 0
</syntaxhighlight>
</syntaxhighlight>


* Ensuite, taper cette commande pour obtenir le chemin de HAL vers notre périphérique. '''Ce chemin sera toujours le même, quelquesoit le nom de notre disque dans /dev''' :
* Ensuite, taper cette commande pour obtenir le chemin de HAL vers notre périphérique. '''Ce chemin sera toujours le même, quelquesoit le nom de notre disque dans /dev''' :
<syntaxhighlight lang="code">
<syntaxhighlight lang="bash">
hal-device | egrep "block.storage_device.*0210001304FA" | uniq
hal-device | egrep "block.storage_device.*0210001304FA" | uniq
block.storage_device = '/org/freedesktop/Hal/devices/storage_serial_WD_1600BEA_External_0210001304FA_0_0'  (string)
block.storage_device = '/org/freedesktop/Hal/devices/storage_serial_WD_1600BEA_External_0210001304FA_0_0'  (string)
Ligne 171 : Ligne 150 :


* Editez le fichier '''/etc/ivman/IvmConfigActions.xml''' et mettez-y ceci :
* Editez le fichier '''/etc/ivman/IvmConfigActions.xml''' et mettez-y ceci :
{{Box File|/etc/ivman/IvmConfigActions.xml|<pre><?xml version="1.0" encoding="UTF-8"?>  
Fichier <path>/etc/ivman/IvmConfigActions.xml</path>
<syntaxhighlight lang="xml">
<?xml version="1.0" encoding="UTF-8"?>
<ivm:ActionsConfig version="0.2" xmlns:ivm="http://www.eikke.com/ivm">
<ivm:ActionsConfig version="0.2" xmlns:ivm="http://www.eikke.com/ivm">


Ligne 187 : Ligne 168 :


</ivm:ActionsConfig>
</ivm:ActionsConfig>
</syntaxhighlight>
</syntaxhighlight>



Dernière version du 19 décembre 2012 à 13:13

Avant propos

Avec la multiplication des clés et autres disques durs USB, nous redécouvrons les joies de deux des plus grands fléaux du monde : la perte et le vol :)

Rien de plus simple que de perdre ou se faire subtiliser ces petits objets rivalisant de finesse et légèreté. Adieu donc nos données si l'on n'a prévu aucun backup et bonjour le sentiment déplaisant de savoir que quelqu'un peut lire impunément toutes nos données personnelles si précieusement rangées.

C'est sûr, trop peu de monde se soucie vraiment de ses données personnelles, et ils ne mesurent pas à quel point ces données sont l'objet de convoitises. La donnée personnelle, la donnée qualifiée en langage Marketing, ça vaut de l'or ! C'est le maître mot chez Google et Facebook...

Objectif

Au final, ce qu'on veut c'est faire en sorte que nos disques durs et clés USB ne soient lisibles que par nous. Pour cela, il nous suffit de chiffrer nos disques !

Par contre, chiffrer c'est bien, mais il ne faut pas que ce soit trop pénible à utiliser. Nous devrons donc trouver un moyen de faire en sorte que le delockage de nos partitions soit automatique.

Prérequis

Note.png
Nous dirons simplement disque pour désigner tout support physique de stockage de données (clé, disque interne, externe, usb etc ...)
  • Avant de se lancer, on dispose :
    • d'un disque dur vierge
    • d'un linux plutôt récent, noyau 2.6
    • de udev pour gérer les périphériques dans /dev
    • d'une partition sur le disque, c'est elle que l'on va chiffrer

Principe de fonctionnement

Vous l'aurez compris, c'est une partition qui est chiffrée, pas le disque dur physique en tant que tel. Sur un même disque, on peut donc avoir une parition chiffrée (sa home par exemple) et le reste non chiffré !

Pour cela, nous aurons besoin d'une interface entre l'accès à une partition du disque physique et l'OS qui y écrit des données sur laquelle nous implémenterons un système simple de gestion de clés. Les clés nous permettrons d'ouvrir la partition et de la rendre accessible à notre système.

dm-crypt

C'est un module du noyau permettant de créer un mapping entre le disque physique et l'OS. Le chiffrement/déchiffrement intervient donc à un niveau très bas, en dessous du filesystem à proprement parlé.

cryptsetup

cryptsetup permet la configuration du chiffrement des partitions par l'utilisateur. Cette commande est donc notre interface avec dm-crypt, il va créer le mapping entre la partition chiffrée et l'OS et lui donner un nom.

LUKS

Linux Unified Key Setup est une extension de cryptsetup permettant de contourner les limitations de ce dernier concernant la gestion des mots de passe. Au lieu d'un seul mot de passe possible pour déchiffrer la partition, LUKS nous permet d'en avoir 8 différents, rangés dans ce qu'on appele des slots.

Préparation

Note.png
Nous prendrons dans notre exemple le cas le chiffrement d'un disque dur externe USB.

Installation des outils

Nous aurons besoin des packages suivants (Gentoo) :

  • sys-fs/cryptsetup
    emerge -av sys-fs/cryptsetup
    

Trouver la partition à chiffrer

Un disque SATA ou USB se trouve en général dans /dev sous la dénomination sd*, où * représente une lettre tenant compte de l'ordre du chargement des disques du système.

  • Pour commencer, listons les disques présents sur le système :
    ls -l /dev/sd*
    
  • Brancher le disque USB puis répéter la commande ci-dessus après avoir attendu quelques secondes.
    • Le nouveau disque doit apparaître, ainsi que sa partition. Par exemple /dev/sdc1.

Cryptage de la partition

  • Choisissons le type de chiffrement, appelé cipher, que nous voulons utiliser. Le choix par défaut est aes et nous conviendra dans la plupart des cas.
  • Si vous voulez en utiliser un autre, listez les cipher disponibles sur votre système :
    cat /proc/crypto <nowiki>|</nowiki> grep name
    
  • La génération de la clé de cryptage de la passphrase utilisée ci-après requiert que nous choisissions une sorte de phrase de cryptage, appelée hash. Dans notre cas, nous prendrons la phrase JaimeLesChats2Paris comme hash.
  • Pour préparer la partition avec LUKS, invoquons la commande suivante :
    cryptsetup luksFormat -c aes /dev/sdc1
    
  • Cette commande va générer une clé maître et nous demander une clé (passphrase) initiale, correspondant au slot 0. Retenez bien cette clé !

Utilisation

Ouverture de la partition

Important.png
vous devrez toujours utiliser cette commande avant de pouvoir utiliser la partition !
  • Pour ouvrir notre partition et la charger avec comme nom usbdisk on tape :
    cryptsetup luksOpen /dev/sdc1 usbdisk
    
  • Le mot de passe correspondant à la passphrase initiale (slot 0) vous sera alors demandé pour délocker la partition.
  • La partition sera alors accessible par le chemin /dev/mapper/nom_du_mapping.
    • Dans notre cas : /dev/mapper/usbdisk

Formattage

  • Une fois la partition ouverte, nous pouvons la formatter :
    mkfs.ext3 /dev/mapper/usbdisk
    

Montage

  • On peut tout simplement monter la partition maintenant et y écrire dessus :
    mount -t ext3 /dev/mapper/usbdisk /mnt/hdd
    

Fermeture de la partition

Important.png
Bien s'assurer d'avoir umount la partition avant !
  • Pour fermer la partition nommée usbdisk, taper :
    cryptsetup luksClose usbdisk
    

Commandes supplémentaires

Ajout d'une clé dans un slot libre

  • Pour ajouter une clé permettant d'ouvrir la partition, exécuter la commande :
    cryptsetup luksAddKey /dev/sdc1
    
Note.png
La partition peut être ouverte par n'importe quelle clé d'un des 8 slots

Obtenir des informations sur la partition

  • Pour consulter les propriétés de la partition, taper :
    cryptsetup luksDump /dev/sdc1
    

Suppression d'une clé

  • Pour supprimer la clé d'un slot donné, taper :
    cryptsetup luksDelKey /dev/sdc1 num_slot
    

Créer un fichier spécial contenant une clé LUKS

  • Pour pouvoir utiliser l'option --passphrase de pmount ou l'option --key-file de luks, nous allons stocker dans un fichier une clé aléatoire
    dd if=/dev/urandom of=/root/.luks-keyfile bs=1024 count=4
    
  • Ajoutons ensuite la clé de ce fichier dans un slot
    cryptsetup luksAddKey /dev/sdc1 /root/.keyfile
    

Déchiffrage et montage automatique du disque

Maintenant nous voulons que notre disque soit délocké et monté automatiquement lorsque nous l'insérons. Pour cela il faut que l'utilisateur ai le droit de mount un lecteur amovible et il nous faut un gestionnaire de montage automatique.

pmount

Cet outil permet à un utilisateur lambda de monter un lecteur amovible sans avoir à être root. Bien sûr, les droits sont configurables finement.

*  sys-apps/pmount
      Latest version available: xxxx
      Latest version installed: xxxx
      Size of files: xxxx kB
      Homepage:      http://pmount.alioth.debian.org/
      Description:   Policy based mounter that gives the ability to mount removable devices as a user
      License:       GPL-2

ivman

Ce démon travaille en collaboration avec HAL, il monte et démonte automatiquement des lecteurs selon des règles prédéfinies.

*  sys-apps/ivman
      Latest version available: 0.6.14
      Latest version installed: 0.6.14
      Size of files: 310 kB
      Homepage:      http://ivman.sf.net
      Description:   Daemon to mount/unmount devices, based on info from HAL
      License:       GPL-2 QPL

Outils et préparatifs

  • Installons les outils nécessaires :
    emerge -av pmount ivman
    
  • Il faut ensuite que notre user fasse partie du groupe plugdev. Vérifions si tel est le cas :
    id mon_user
    
  • Si le groupe plugdev n'est pas listé, ajoutez votre user dedans :
    usermod -a plugdev mon_user
    
  • pmount a la faculté de délocker les partitions chiffrées avec LUKS avant de les monter, c'est parfait pour nous mais il s'attend à trouver cryptsetup dans /bin. Sous Gentoo il est installé dans /sbin, nous devons donc faire un petit lien symbolique :
    ln -s /sbin/cryptsetup /bin/cryptsetup
    
  • Afin de pouvoir délocker notre partition sans qu'un mot de passe nous soit demandé, nous allons écrire ce dernier dans un fichier caché qui sera ensuite lu par pmount lors du montage de la partition.
    • Je vous conseille vivement d'ajouter une clé dans un slot libre à cet effet. Cette procédure est décrite plus haut.
    • Dans notre exemple, nous utiliserons la clé ViveLUKS2 du slot 1
      echo 'ViveLUKS2' > /etc/.unlock-key && chown ivman:plugdev /etc/.unlock-key && chmod 660 /etc/.unlock-key
      

Configuration de ivman

Lorsque nous branchons notre disque amovible, nous ne savons pas à l'avance quel sera son nom dans /dev. En effet, l'attribution du sda ou sdb ou sdd est faite selon l'ordre de branchement des périphériques. Nous allons donc utiliser HAL pour trouver cette information nécessaire au montage du disque.

  • Tout d'abord, récupérons le numéro de série du disque appelé SerialNumber
    • Bancher le disque sur le PC
    • Exécuter la commande dmesg pour trouver la ligne contenant le SerialNumber du disque et notez-le :
dmesg
...
[kernel] usb 1-2.3: new high speed USB device using ehci_hcd and address 16           
[kernel] usb 1-2.3: configuration #1 chosen from 1 choice                             
[kernel] scsi13 : SCSI emulation for USB Mass Storage devices                         
[kernel] usb 1-2.3: New USB device found, idVendor=059b, idProduct=0274           
[kernel] usb 1-2.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3          
[kernel] usb 1-2.3: Product: External HD                                              
[kernel] usb 1-2.3: Manufacturer: Iomega
[kernel] usb 1-2.3: SerialNumber: 0210001304FA
[kernel] scsi 13:0:0:0: Direct-Access     ST350083 0A               3.AA PQ: 0 ANSI: 0
  • Ensuite, taper cette commande pour obtenir le chemin de HAL vers notre périphérique. Ce chemin sera toujours le même, quelquesoit le nom de notre disque dans /dev :
hal-device | egrep "block.storage_device.*0210001304FA" | uniq
block.storage_device = '/org/freedesktop/Hal/devices/storage_serial_WD_1600BEA_External_0210001304FA_0_0'  (string)
  • Nous savons maintenant que notre disque est accessible via /org/freedesktop/Hal/devices/storage_serial_WD_1600BEA_External_0210001304FA_0_0 dans la catégorie block.storage_device
  • Editez le fichier /etc/ivman/IvmConfigActions.xml et mettez-y ceci :

Fichier <path>/etc/ivman/IvmConfigActions.xml</path>

<?xml version="1.0" encoding="UTF-8"?>
<ivm:ActionsConfig version="0.2" xmlns:ivm="http://www.eikke.com/ivm">

    <ivm:Match name="hal.block.storage_device" value="/org/freedesktop/Hal/devices/storage_serial_WD_1600BEA_External_0210001304FA_0_0">
                <ivm:Match name="hal.block.is_volume" value="true">

                        <ivm:Option name="exec" value="logger 'ivman: luksOpen and mount of usbhdd'" />
                        <ivm:Option name="exec" value="cat /etc/.unlock-key | pmount $hal.block.device$ usbhdd" />

                        <ivm:Option name="execun" value="logger 'ivman: luksClose and umount of usbhdd'" />
                        <ivm:Option name="execun" value="pumount -l usbhdd" />

                </ivm:Match>
    </ivm:Match>

</ivm:ActionsConfig>
  • Explications :
  1. <ivm:Match name="xx" value="yy"> : la règle s'applique à tout objet HAL étant un block.storage_device et dont la valeur est /org/freedesktop/Hal/devices/storage_serial_WD_1600BEA_External_0210001304FA_0_0
  2. <ivm:Match name="hal.block.is_volume" value="true"> : la règle ne s'applique que si l'object HAL est un volume, c'est à dire une partition !
  3. Les Options dont le name="exec" sont appelées lorsque le disque est branché :
    <ivm:Option name="exec" value="logger 'ivman: luksOpen and mount of usbhdd'" /> : permet de mettre une entrée dans les logs pour prévenir que nous allons monter le disque
    <ivm:Option name="exec" value="cat /etc/.unlock-key | pmount $hal.block.device$ usbhdd" /> : monter automatiquement le disque en utilisant la clé contenue dans le fichier /etc/.unlock-key et l'appeler usbhdd
  4. Les Options dont le name="execun" sont appelées lorsque le disque est débranché et font l'inverse, à savoir démonter le disque et fermer le mapping LUKS.


  • Après avoir débranché le disque, finalisons le démarrage d'ivman (Gentoo) :
rc-update add ivman default && /etc/init.d/ivman start
  • Rebranchez votre disque, et quelques secondes après il devrait être délocké et monté automatiquement dans /media/usbhdd !