LUKS

Le projet LUKS, vise à standardiser le chiffrement de systèmes de fichiers. Les partitions LUKS peuvent être accédées aussi bien sous linux que sous Windows grâce à l’outil gratuit FreeOTFE.

  • http://en.wikipedia.org/wiki/Linux_Unified_Key_Setup
  • http://en.wikipedia.org/wiki/FreeOTFE

Préparation du système

Le kernel

Le kernel doit être, ou avoir été, compilé avec les options suivantes :

Pour un noyau 2.6.27, ces deux options se trouvent dans la rubrique Device drivers --> Multiple devices driver support (RAID and LVM).

  • CONFIG_BLK_DEV_DM (Device mapper support)
  • CONFIG_DM_CRYPT (Crypt target support)

Pour un noyau 2.6.27, ces trois options se trouvent dans la rubrique Cryptographic API.

  • CONFIG_CRYPTO_SHA256 (SHA224 and SHA256 digest algorithm)
  • CONFIG_CRYPTO_SHA512 (SHA384 and SHA512 digest algorithms)
  • CONFIG_CRYPTO_AES (AES cipher algorithms)

Rassurez-vous c'est le cas sur les kernel par default au moins sur Debian 5.0 & Ubuntu 8.04

Chargement des modules necessaires

 modprobe aes
modprobe dm-mod
modprobe dm_crypt

Chargement des modules au boot de la machine

 echo aes >> /etc/modules
echo dm_mod >> /etc/modules
echo dm_crypt >> /etc/modules

Installation des packages necessaire

 aptitude install cryptsetup

Préparation du disque

Création de la partition à l'aide de fdisk

 fdisk /dev/sdb
  • pour supprimer toutes les partitions : d (a repéter pour toutes les partitions)
  • puis pour ajouter une nouvelle parition : n (les valeurs par default concernant les tailles, utilise tout l'espace du disque)
  • et enfin : w (pour enregistrer les changements)

Supprimer toutes les données de la partition Nous allons supprimé toutes les trace des données qui sont actuellement sur la partition. Il existe des outils dit de "forensic" comme TCT, qui peuvent retrouver des données effacées. Une donnée sur un disque dur disparait au bout d'environ sept écritures au même endroit, il existe un outil nommé shred qui effectue se genre de chose.

 shred -n 10 -v /dev/sdb1

Shred n'etant pas efficace pour la génération d'entropie (reproduit toujours la même séquence), on va donc généré de l'entropie depuis /dev/urandom

 dd if=/dev/urandom of=/dev/sdb1

Crypter le disque

Initialisez la partition

 cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb1

On vous demandera de saisir une passphrase qui elle seul permettra de decrypter les données de la partition.

Prenez soins de bien la noter et quel soit assé compliqué.

Ouvrir le nouveau volume crypté L'opération consiste à mapper notre partition (crypté) avec une partition virtuelle (dé-crypté). On vous demandera bien-sûr lors de cette opération la passphrase permettant de dé-crypté la partition.

 cryptsetup luksOpen /dev/sdb1 data

La partition mapper (donc dé-crypté) ici data se trouvera dans /dev/mapper/

Pour vérifier que le volume est bien ouvert :

 ls -l /dev/mapper | grep data

Création du système de fichier (ext3 dans notre exemple) sur la partition crypté

 mkfs.ext3 /dev/mapper/data

Monter la partition

 mkdir /mnt/data/
mount /dev/mapper/data /mnt/data/

Pour vérifier que le point de montage est bien visible :

 df -h

Ouvrir & monter la partition crypté au boot de la machine

ATTENTION !!!

Vous noterez bien que je ne dis pas ici Ouvrir & monter automatiquement.

Si vous decidez de monter votre partition au demarrage, la passphrase vous sera demandé avant même de charger les différents services (y compris réseau & bien sûr ssh). Pensez-y si vous le faite sur un serveur distant !!

Le fichier /etc/crypttab (à créer au besoin) décrit les périphériques de bloc chiffrés qui sont configurés au démarrage du système. Nous y ajoutons notre partition crypté

 echo "data /dev/sdb1 none luks" >> /etc/crypttab
  • data : correspond à notre mapping
  • /dev/sdb1 : correspond à la partition crypté
  • none : indique que nous n'utilisons pas de fichier de clef
  • luks : indique le type de cryptage utilisé

Modifier le fichier /etc/fstab : echo "/dev/mapper/data /data ext3 defaults 1 2" >> /etc/fstab

Ouvrir & monter la partition crypté manuellement Si vous utilisez une partition crypté sur un serveur, il vous faudra utiliser cette methode manuelle :

 cryptsetup luksOpen /dev/sdb1 data
mount -a

Dé-monter & Fermer la partition crypté On commence par demonter la partition :

 umount /mnt/data/

Puis par fermer le mapping :

 cryptsetup luksClose data