Affichage des articles dont le libellé est luks. Afficher tous les articles
Affichage des articles dont le libellé est luks. Afficher tous les articles

jeudi 25 juin 2009

Chiffrage & Partitions IV

Source: Forum Ubuntu

Ce tuto se compose de quatre parties :

  • crypter une partition, sur ce poste #1.
  • crypter une partition en utilisant les LUKS, ICI
  • crypter une partition déjà utilisée tout en conservant les données présentes : ICI
  • Crypter un fichier créé pour la circonstance. Ce fichier crypté sera ensuite utilisé comme une partition, y compris sur une clé usb ou un autre pc disposant de cryptsetup : ICI

Lien

Voir aussi le poste de traaf qui a ajouté une règle udev pour régler un problème de changement de position du disque crypté.
----------
Lien
J'ai réduit au maximum les commentaires.
Pour plus de détails, voir Le Wiki Ubuntu

On va utiliser dm-crypt et donc cryptsetup pour crypter une partition avec AES.

On s'assure que l'on a les moyens de contrôler le device-mapper, où tout sera "fait à la volée" :

cep@casa:~$ ls -l /dev/mapper/control
crw-rw---- 1 root root 10, 63 2005-12-08 14:23 /dev/mapper/control

On regarde quelles sont les possibilités d'encryption inclues dans le kernel d'ubuntu :

cep@casa:~$ /sbin/modinfo /lib/modules/`uname -r`/kernel/crypto/* |grep description
description: Anubis Cryptographic Algorithm
description: ARC4 Cipher Algorithm
description: Blowfish Cipher Algorithm
description: Cast5 Cipher Algorithm
description: Cast6 Cipher Algorithm
description: CRC32c (Castagnoli) calculations wrapper for lib/crc32c
description: Null Cryptographic Algorithms
description: Deflate Compression Algorithm for IPCOMP
description: DES & Triple DES EDE Cipher Algorithms
description: Khazad Cryptographic Algorithm
description: MD4 Message Digest Algorithm
description: Michael MIC
description: Serpent and tnepres (kerneli compatible serpent reversed) Cipher Algorithm
description: SHA1 Secure Hash Algorithm
description: SHA256 Secure Hash Algorithm
description: SHA-512 and SHA-384 Secure Hash Algorithms
description: Quick & dirty crypto testing module
description: TEA & XTEA Cryptographic Algorithms
description: Tiger Message Digest Algorithm
description: Twofish Cipher Algorithm
description: Whirlpool Message Digest Algorithm

cep@casa:~$ /sbin/modinfo /lib/modules/`uname -r`/kernel/arch/i386/crypto/* |grep description
description: Rijndael (AES) Cipher Algorithm, i586 asm optimized

On se donne les droits root pour ne pas avoir à entrer sudo à chaque ligne :
cep@casa:~$ sudo -s
Password:

On installe cryptsetup, qui est l'interface de chiffrement :

root@casa:~# apt-get install cryptsetup
Lecture des listes de paquets... Fait
...
...etc.etc.
puis le processus d'installation se termine par:
Paramétrage de cryptsetup (1.0.1-0ubuntu4) ...
Adding system startup for /etc/init.d/cryptdisks ...
/etc/rc0.d/S48cryptdisks -> ../init.d/cryptdisks
/etc/rc6.d/S48cryptdisks -> ../init.d/cryptdisks
/etc/rcS.d/S28cryptdisks -> ../init.d/cryptdisks

On ajoute aes, dm_mod et dm_crypt dans /etc/modules (vérifiez s'ils n'y sont pas déjà) :

root@casa:~# echo aes >> /etc/modules
root@casa:~# echo dm_mod >> /etc/modules
root@casa:~# echo dm_crypt >> /etc/modules

On vérifie :
root@casa:~# cat /etc/modules
lp
mousedev
psmouse
aes
dm_crypt
dm_mod

On vérifie que la partition sur laquelle on va travailler n'est pas montée :

root@casa:~# mount
...

J'ai choisi de crypter la partition hdb7 et de nommer le volume "crypt".
On crée donc le volume "crypt"

root@casa:~# cryptsetup -y create crypt /dev/hdb7
Enter passphrase:
Verify passphrase:

On a entré le mot de passe ou la phrase secrète.

On ajoute "crypt /dev/hdb7" dans /etc/crypttab

root@casa:~# echo "crypt /dev/hdb7" >> /etc/crypttab

On modifie /etc/fstab afin d'y ajouter /dev/mapper/crypt pour qu'il soit monté au boot dans /crypt :

root@casa:~# echo "/dev/mapper/crypt /crypt ext2 defaults 0 1" >> /etc/fstab

On vérifie :

root@casa:~# cat /etc/fstab
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
/dev/hda1 / ext3 defaults,errors=remount-ro 0 1
...
/dev/mapper/crypt /mnt/crypt ext2 defaults 0 1

On crée le système de fichiers sur /dev/mapper/crypt. En ce qui me concerne, j'ai choisi ext2 :

root@casa:~# mkfs.ext2 /dev/mapper/crypt
mke2fs 1.38 (30-Jun-2005)
Étiquette de système de fichiers=
Type de système d'exploitation: Linux
Taille de bloc=1024 (log=0)
Taille de fragment=1024 (log=0)
26104 inodes, 104388 blocs
5219 blocs (5.00%) réservé pour le super usager
Premier bloc de données=1
13 bloc de groupes
8192 blocs par groupe, 8192 fragments par groupe
2008 inodes par groupe
Archive du superbloc stockée sur les blocs:
8193, 24577, 40961, 57345, 73729

Écriture des tables d'inodes: complété
Écriture des superblocs et de l'information de comptabilité du système de fichiers: complété

Le système de fichiers sera automatiquement vérifié tous les 32 montages ou après
180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i pour écraser la valeur.

On crée le point de mount /crypt :

root@casa:~# mkdir /crypt

Pensez à attribuer le répertoire à votre user et à lui donner les droits 700 par exemple.

On monte tout :

root@casa:~# mount -a

On vérifie :

root@casa:~# mount
/dev/hda1 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
usbfs on /proc/bus/usb type usbfs (rw)
tmpfs on /lib/modules/2.6.12-10-386/volatile type tmpfs (rw,mode=0755)
tmpfs on /dev type tmpfs (rw,size=10M,mode=0755)
/dev/mapper/crypt on /crypt type ext2 (rw)

/dev/mapper/crypt est bien monté sur /crypt.

root@casa:~# exit
exit
cep@casa:~$

Maintenant on redémarre la machine pour voir comment tout se déroule.

Àu moment de lancer le processus de cryptographie et de mount de la partition, le usplash s'interrompt et il est demandé d'entrer le mot de passe. D'ou la nécessité d'être devant sa machine.
Si vous entrez le mot de passe, tout se déroule normalement, la partition est montée et décryptée / encryptée à la volée.
Par contre, si vous n'entrez pas le mot de passe, le lancement de la machine s'interrompt avec un message de mauvais filesystème et fsck failed. Normal.
On vous propose de lancer un fsck manuel. Inutil d'accepter, il ne servira à rien. Taper simplement : exit et le processus reprend et votre système démarre.
Par contre, lorsque vous essayerez de monter la partition cryptée par un : sudo mount -a ou un : sudo mount -a -o remount, cela n'aboutira pas et vous aurez le message :

mount: wrong fs type, bad option, bad superblock on /dev/mapper/crypt,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so

ce qui encore une fois est normal.
Pour pouvoir monter la partiton, il faudra refaire le "mapping" avec les deux commandes suivantes :

cep@casa:~$ sudo cryptsetup remove crypt
cep@casa:~$ sudo cryptsetup create crypt /dev/hdb7
Enter passphrase:

Et vous entrerez votre mot de passe choisi initialement.
À ce stade, n'essayez pas de mettre un autre mot de passe, ou penser utiliser cette commande pour monter une partition dont vous n'auriez pas le mot de passe, ça ne parchera pas :-)

Ensuite vous pourrez monter votre partition :

cep@casa:~$ sudo mount /dev/mapper/crypt -t ext2 /crypt

Une autre solution serait de commenter ou supprimer la ligne de /dev/mapper/ dans fstab. Ainsi, si vous avez d'autres users sur la machine, mais qui ne doivent pas accéder à cette partition, le boot pourra se faire normalement. Il suffira qu'ils tapent sur la touche Enter lorsqu'on demande un mot de passe. Et vous ferez la procédure décrite plus haut pour monter la partition.

Certains conseillent de crypter le /home, et parfois tout le système.
N'oubliez pas que si vous avez un jour un problème et que votre système ne se lance pas, il vous sera difficile de réparer avec un live cd ou autre. Il faudra utiliser d'autres moyens.

Il me reste maintenant à pousser un peu plus l'utilisation de cette partition et à étudier les systèmes de sauvegarde restauration sur une partition cryptée.
Mais, surtout, à appliquer cela sur un disque usb (udev et compagnie), ce qui est l'interêt principal.

Pour cette page, je me suis inspiré de :
https://wiki.ubuntu.com//EncryptedFilesystemHowto
Vous pourrez le consulter pour tous les détails techniques et un usage plus poussé.

cep

Dernière modification par cep (Le 05/11/2007, à 15:12)


Quelques tutos et astuces :

http://www.cepcasa.info/divers/

Chiffrage & Partitions III

Source : Blog de ChMD

Comment crypter vos partitions sous ubuntu

Avant, pour me voler mes données, il suffisait d’extraire le disque dur de mon pc et d’explorer celui-ci. À cette époque, les chiens aboyaient sur mon passage, les gens m’évitaient et mes spams se moquaient de moi en me proposant un sexe plus gros. Aujourd’hui, les toutous me lèchent la main, tout le monde veut être mon pote et mes spams m’annoncent que j’ai trouvé l’amour : c’est normal, je suis passé aux partitions cryptées!

Bon ok, crypter ça fait parano, mais je vous assure que ça vaut le coup. D’abord, vous apprenez plein de trucs. Ensuite, la sécurité ne fait jamais de mal. Et enfin, moi, ça me fait enfin un article à mettre sur ce blog :)

Introduction

D’abord, la mauvaise nouvelle : tout ça ne servira à rien si on vous vole votre ordinateur allumé, même verrouillé. C’est assez récent, mais il a été montré, vidéos à l’appui, que dans ce cas on pouvait casser hyper facilement ces beaux mécanismes de protection avec un tournevis, une bombe à froid, un autre ordinateur et 10 minutes devant soi. Vous ne pourrez donc pas vous amuser à laisser trainer votre matos n’importe où sans surveillance (sans blague, me direz-vous). D’autre part, sachez que cela fait perdre la possibilité d’utiliser le mécanisme de veille prolongée (Argl). Eh oui, c’est le prix à payer pour la sécurité ;)

la fameuse vidéo, la voilà :

C’est contraignant?

Non. Ça impose juste de taper un mot de passe à chaque démarrage. Après, vous pouvez utiliser votre système normalement : le mécanisme est totalement transparent et l’encryptage/décryptage se fait à la volée. Au passage, pour les accrocs de l’économie CPU, l’algo est apparemment assez intelligemment codé et je n’ai constaté aucune baisse de performances perceptible.

Les manips

On va se crypter /home et /swap. Pour cela, vous aurez besoin d’une partition libre (votre futur /home).

Commencez par installer dm-crypt :

sudo apt-get install dm-crypt

Partons du principe que vous avez choisi d’utiliser /dev/sda3 pour votre nouvelle partition cryptée. Démontez-le.

sudo umount /dev/sda3

Le wiki en anglais d’ubuntu suggère de vérifier que votre partition se porte bien, puis de la remplir de données aléatoires. Comme c’est vachement long, si vous êtes sûr que votre disque marche bien et que cette partition n’a rien contenu de secret avant, laissez tomber et passez direct à la creation de votre nouvelle partition LUKS :

sudo cryptsetup
--verify-passphrase\
--verbose --hash=sha256\
--cipher=aes-cbc-essiv:sha256\
--key-size=256 luksFormat\
/dev/sda3

Ensuite, faites ouvrir votre volume par cryptsetup :

sudo cryptsetup luksOpen /dev/hda3 home

Puis créez-y le système de fichiers :

sudo mke2fs\
-j -O dir_index,filetype,sparse_super\
/dev/mapper/home

On va temporairement monter cette partition cryptée (sur /mnt), pour y copier votre ancien home.

sudo mount -t ext3 /dev/mapper/home /mnt

À ce moment là, plusieurs choix. Première possibilité, vous pourriez recopier tout votre /home dans cette nouvelle partition :

sudo cp -axv /home/* /mnt/

Moi, je m’y prend autrement : j’ai fait le choix de continuer à me servir de l’ancien /home pour y stocker toutes les données non confidentielles (films, musiques, fonds d’écrans…).
Si vous voulez faire comme moi, créez d’abord le futur répertoire pour votre /home/user et attribuez vous les droits :

sudo mkdir /mnt/user && sudo chown user:user /mnt/user

Puis copiez tout, sauf les répertoires que vous voulez garder sur l’ancienne partition.

for i in `ls --almost-all /home/user
--ignore videos\
--ignore images\
--ignore musique`;\
do\
sudo cp -avx $i /mnt/user/;
done

Note pour ceux qui veulent appliquer la commande : ‘ls –almost-all /home/user’ va lister tous les fichiers de /home/user, sauf les répertoires spéciaux ‘.’ et ‘..’. Je rajoute l’option ‘–ignore nomdefichier’ lorsque je veux éviter qu’un fichier nommé ‘nomdefichier’ apparaisse dans la liste résultante. Ainsi, en français, cela donne : “pour i appartenant à l’ensemble des fichiers de /home/user, sauf ceux qui s’appellent ‘images’, ‘musique’ ou ‘videos’ (i.e. les répertoires dans lesquels je conserve ma musique, mes images, mes vidéos), copier i dans /mnt/user/ ( -avx : récursivement, en préservant au maximum les droits, liens, propriétaires, dates, contexte de sécurité, etc; en explicitant ce qui est copié; en gardant le même système de fichier)”
C’est bon! Vous effacerez les données cryptées une fois que vous serez certain que ça marche. Démontez moi ça :

sudo umount /mnt

Éditez /etc/fstab pour un montage automatique de votre nouveau /home crypté au démarrage : ajoutez y la ligne suivante (et commentez celle de l’ancien home).

/dev/mapper/home /home ext3 defaults 1 2

Éditez /etc/crypttab ajoutez-y cette ligne :

home /dev/hda3 none luks

C’est fini! Vous pouvez redémarrer.

Cryptage du swap

Vous allez être déçu, ça se fait en deux secondes : ouvrez /etc/fstab, commentez la ligne du swap. Celle-ci devrait être de la forme :

/dev/sda5 none swap sw 0 0

Maintenant faites un simple remplacement de /dev/sda5 par /dev/mapper/cswap :

/dev/mapper/cswap none swap sw 0 0

Et ouvrez /etc/cryptab pour lui dire de crypter aléatoirement le swap à chaque démarrage en y ajoutant la ligne :

cswap /dev/sda5 /dev/random swap

Voilà! C’est fini!

Conclusion

Vous faites désormais partie des personnes magnifiquement intelligentes qui cryptent leurs données. Savourez cet instant…

Si vous voulez des références sur le cryptage de partition, il existe aussi une liste de tutos faits par cep sur le forum d’ubuntu-fr.org…

Tags: ,

Chiffrage & Partitions II

Source : Doc FreeBSD

18.16. Chiffrer les partitions d'un disque

Contribution de Lucky Green.

FreeBSD offre d'excellentes protections contre un accès non autorisé aux données par l'intermédiaire du réseau. Les permissions sur les fichiers et le contrôle d'accès obligatoire -- ``Mandatory Access Control'' (MAC) (voir Chapitre 16) empêchent l'accès aux données pour des tiers non autorisés quand le système d'exploitation est actif et l'ordinateur en fonctionnement. Cependant, des permissions renforcés sont inutiles si l'attaquant a un accès physique à un ordinateur et peut simplement déplacer le disque dur sur un autre système pour copier et analyser les données sensibles.

Indépendamment de la manière dont une personne malveillante s'est trouvé en possession d'un disque dur ou a arrêté un ordinateur, le chiffrage de disque basé sur GEOM (gbde) (``GEOM Based Disk Encryption'') et le système de chiffrage geli de FreeBSD sont en mesure de protéger les données des systèmes de fichiers contre des attaquants très motivés et aux ressources importantes. A la différence des méthodes de chiffrage lourdes qui chiffrent uniquement les fichiers individuels, gbde et geli chiffrent de manière transparente l'intégralité du système de fichiers. Aucun texte en clair ne touche les plateaux du disque.

18.16.1. Chiffrage des disques avec gbde

  1. Devenir root

    La configuration de gbde requiert les privilèges du super-utilisateur.

    % su -
    Password:
  2. Ajouter le support gbde(4) au fichier de configuration du noyau

    Ajoutez la ligne suivante à votre fichier de configuration du noyau:

    options GEOM_BDE

    Recompilez le noyau comme décrit dans Chapitre 8.

    Redémarrez avec le nouveau noyau.

  3. Au lieu de recompiler le noyau, on peut utiliser kldload pour charger le support gbde(4):

    # kldload geom_bde

18.16.1.1. Préparation du disque dur chiffré

L'exemple suivant suppose que vous ajoutez un nouveau disque dur à votre système et qui contiendra une seule partition chiffrée. Cette partition sera montée sous /private. gbde peut également être utilisé pour chiffrer les répertoires /home et /var/mail, mais cela demande une configuration plus complexe qui dépasse le cadre de cette introduction.

  1. Ajouter le nouveau disque

    Installez le nouveau disque comme expliqué dans Section 18.3. Pour les besoins de cet exemple, une nouvelle partition disque a été ajoutée en tant que /dev/ad4s1c. Les périphériques du type /dev/ad0s1* représentent les partitions FreeBSD standards sur le système exemple.

    # ls /dev/ad*
    /dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1
    /dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c
    /dev/ad0s1a /dev/ad0s1d /dev/ad4
  2. Créer un répertoire pour héberger les fichiers de verrouillage de GBDE

    # mkdir /etc/gbde

    Le fichier de verrouillage de gbde contient l'information nécessaire à gbde pour accéder aux partitions chiffrées. Sans accès au fichier de verrouillage, gbde sera incapable de déchiffrer les données contenues sur la partition chiffrée sans une aide manuelle significative ce qui n'est pas supporté par le logiciel. Chaque partition chiffrée utilise un fichier de verrouillage propre.

  3. Initialiser la partition gbde

    Une partition gbde doit être initialisée avant d'être utilisable. Cette initialisation doit être effectuée une seule fois:

    # gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c

    gbde(8) lancera votre éditeur, vous permettant de fixer diverses options de configuration dans un gabarit. Pour une utilisation de UFS1 ou UFS2, fixez l'option sector_size à 2048:

    $FreeBSD: src/sbin/gbde/template.txt,v 1.1 2002/10/20 11:16:13 phk Exp $
    #
    # La taille d'un secteur est la plus petite unité de donnée
    # qui peut être lue ou écrite.
    # Une valeur trop petite diminue les performances et l'espace
    # disponible.
    # Une valeur trop grande peut empêcher des systèmes de
    # fichiers de fonctionner correctement. 512 est la valeur minimale
    # et sans risque. Pour l'UFS, utiliser la taille d'un fragment
    #
    sector_size = 2048
    [...]

    gbde(8) vous demandera de taper deux fois la phrase d'authentification qui devra être utilisée pour sécuriser les données. La phrase d'authentification doit être la même dans les deux cas. La capacité de gbde à protéger vos données dépend de la qualité de la phrase d'authentification que vous avez choisie. [1]

    La commande gbde init crée un fichier de verrouillage pour votre partition gbde qui dans cet exemple est stocké sous /etc/gbde/ad4s1c.

    AttentionLes fichiers de verrouillage de gbde doivent être conservés de pair avec le contenu des partitions chiffrées. Alors que la suppression seule d'un fichier de verrouillage ne peut empêcher une personne déterminée de déchiffrer une partition gbde, sans le fichier de verrouillage, le propriétaire légitime sera incapable d'accéder aux données de la partition chiffrée sans beaucoup de travail ce qui est totalement non supporté par gbde(8) et son concepteur.

  4. Attacher la partition chiffrée au noyau

    # gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c

    On vous demandera de fournir la phrase d'authentification que vous avez choisie lors de l'initialisation de la partition chiffrée. Le nouveau périphérique chiffré apparaîtra dans /dev en tant que /dev/nom_périphérique.bde:

    # ls /dev/ad*
    /dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1
    /dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c
    /dev/ad0s1a /dev/ad0s1d /dev/ad4 /dev/ad4s1c.bde
  5. Créer un système de fichiers sur le périphérique chiffré

    Une fois que le périphérique chiffré a été attaché au noyau, vous pouvez créer un système de fichiers sur le périphérique. Pour créer un système de fichiers sur le périphérique, utilisez newfs(8). Puisqu'il est plus rapide d'initialiser un nouveau système de fichiers UFS2 qu'un nouveau système UFS1, l'utilisation de newfs(8) avec l'option -O2 est recommandé.

    # newfs -U -O2 /dev/ad4s1c.bde

    Note : La commande newfs(8) peut être effectuée sur une partition gbde attachée qui est identifiée par une extension *.bde au niveau du nom de périphérique.

  6. Monter la partition chiffrée

    Créez un point de montage pour le système de fichiers chiffré.

    # mkdir /private

    Montez le système de fichiers chiffré.

    # mount /dev/ad4s1c.bde /private
  7. Vérifiez que le système de fichiers chiffré est disponible

    Le système de fichiers chiffré devrait être visible par df(1) et prêt à être utilisé:

    % df -H
    Filesystem Size Used Avail Capacity Mounted on
    /dev/ad0s1a 1037M 72M 883M 8% /
    /devfs 1.0K 1.0K 0B 100% /dev
    /dev/ad0s1f 8.1G 55K 7.5G 0% /home
    /dev/ad0s1e 1037M 1.1M 953M 0% /tmp
    /dev/ad0s1d 6.1G 1.9G 3.7G 35% /usr
    /dev/ad4s1c.bde 150G 4.1K 138G 0% /private

18.16.1.2. Montage des systèmes de fichiers chiffrés

Après chaque démarrage, tout système de fichiers chiffré doit être rattaché au noyau, contrôlé pour les erreurs, et monté, avant que les systèmes de fichiers ne puissent être utilisés. Les commandes nécessaires doivent être exécutées en tant que root.

  1. Attacher la partition gdbe au noyau

    # gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c

    On vous demandera de fournir la phrase d'authentification que vous avez choisie lors de l'initialisation de la partition gbde chiffrée.

  2. Contrôler les erreurs du système de fichiers

    Puisque les systèmes de fichiers chiffrés ne peuvent être encore listés dans le fichier /etc/fstab pour un montage automatique, on doit donc contrôler les systèmes de fichiers pour d'éventuelles erreurs en exécutant manuellement fsck(8) avant le montage.

    # fsck -p -t ffs /dev/ad4s1c.bde
  3. Monter le système de fichiers chiffré

    # mount /dev/ad4s1c.bde /private

    Le système de fichiers est maintenant disponible à l'utilisation.

18.16.1.2.1. Montage automatique de partitions chiffrées

Il est possible de créer une procédure pour automatiquement attacher, contrôler, et monter une partition chiffrée, mais pour des raisons de sécurité la procédure ne devrait pas contenir le mot de passe gbde(8). A la place, il est recommandé que de telles procédures soient exécutées manuellement tout en fournissant le mot de passe via la console ou ssh(1).

Comme autre possibilité, une procédure rc.d est fournie. Des arguments peuvent être passés à cette procédure par l'intermédiaire de rc.conf(5),, par exemple:

gbde_autoattach_all="YES"
gbde_devices="ad4s1c"

Cela impose la saisie de la phrase d'authentification gbde au démarrage. Après avoir entré la phrase d'authentification correctement, la partition chiffrée gbde sera montée automatiquement. Cela peut être très utile quand gbde est utilisé sur des ordinateurs portables.

18.16.1.3. Les protections cryptographiques utilisées par gbde

gbde(8) chiffre la partie utile des secteurs en utilisant le chiffrage AES 128 bits en mode CBC. Chaque secteur sur le disque est chiffré avec une clé AES différente. Pour plus d'informations sur l'architecture cryptographique de gbde, y compris comment les clés pour chaque secteur sont des dérivés de la phrase d'authentification donnée par l'utilisateur, voir la page de manuel gbde(4).

18.16.1.4. Problèmes de compatibilité

sysinstall(8) est incompatible avec les périphériques gbde-chiffrés. Tous les périphériques *.bde doivent être détachés du noyau avant de lancer sysinstall(8) ou ce dernier plantera durant son processus initial de recherche des périphériques. Pour détacher le périphérique chiffré utilisé dans notre exemple, utilisez la commande suivante:

# gbde detach /dev/ad4s1c

Notez également qu'étant donné que vinum(4) n'utilise pas le sous-système geom(4), vous ne pouvez utiliser gbde avec des volumes vinum.


18.16.2. Chiffrage des disques avec geli

Contribution de Daniel Gerzo.

Depuis FreeBSD 6.0, une nouvelle classe GEOM pour le chiffrage des données est disponible: geli. Cette classe est développée par Pawel Jakub Dawidek . L'outil geli est différent de gbde; il offre des fonctionnalités différentes et utilise une méthode différente pour chiffrer les données.

Les caractéristiques les plus importantes de geli(8) sont:

  • Utilisation du système crypto(9) -- quand du matériel destiné au chiffrement est disponible dans la machine, geli l'utilisera automatiquement.

  • Support de plusieurs algorithmes de chiffrement (actuellement AES, Blowfish, et 3DES).

  • Permettre le chiffrage de la partition racine. La phrase d'authentification utilisée pour accéder à la partition racine chiffrée sera demandée au démarrage du système.

  • Permettre l'emploi de deux clés indépendantes (par exemple une “clé utilisateur” et une “clé entreprise”).

  • geli est rapide--il effectue un simple chiffrement de secteur à secteur.

  • Permettre la sauvegarde et la restauration des clés principales. Quand un utilisateur doit détruire ses clés, il sera possible d'accéder à nouveau aux données en restaurant les clés à partir de la sauvegarde.

  • Permettre d'attacher un disque avec une clé aléatoire à usage unique -- utile pour les partitions de pagination et les systèmes de fichiers temporaires.

Plus de caractéristiques concernant geli peuvent être trouvées dans la page de manuel de geli(8).

Les points suivants décriront comment activer le support pour geli dans le noyau FreeBSD et expliqueront comment créer et utiliser un provider (ou partition) chiffré geli.

Afin de pouvoir employer geli, vous devez utiliser FreeBSD 6.0-RELEASE ou une version ultérieure. Les privilèges du super-utilisateur seront également nécessaire puisque il faudra effectuer des modifications au niveau du noyau.

  1. Ajouter le support geli au noyau

    Ajoutez les lignes suivantes au fichier de configuration du noyau:

    options GEOM_ELI
    device crypto

    Recompilez le noyau comme décrit dans la Chapitre 8.

    Sinon, le module geli peut être chargé au démarrage. Ajoutez la ligne suivante au fichier /boot/loader.conf:

    geom_eli_load="YES"

    Le système geli(8) devrait désormais être supporté par le noyau.

  2. Générer la clé principale

    L'exemple suivant décrira la méthode pour générer un fichier clé qui sera utilisé comme partie de la clé principale pour le provider chiffré monté sous le répertoire /private. Le fichier clé fournira des données aléatoires qui seront employées pour chiffrer la clé principale. La clé principale sera également protégée par une phrase d'authentification. La taille des secteurs du provider sera de 4Ko. De plus, sera décrit comment attacher au système le provider geli, créer un système de fichiers dessus, utiliser ce système de fichiers et enfin comment le détacher.

    Il est recommandé d'utiliser une taille de secteur plus grande (comme 4Ko) pour de meilleures performances.

    La clé principale sera protégée avec une phrase d'authentification et la source de données pour le fichier clé sera /dev/random. La taille des secteurs de /dev/da2.eli, partition que nous appelons provider, sera de 4Ko.

    # dd if=/dev/random of=/root/da2.key bs=64 count=1
    # geli init -s 4096 -K /root/da2.key /dev/da2
    Enter new passphrase:
    Reenter new passphrase:

    Il n'est pas obligatoire d'utiliser la phrase d'authentification et le fichier clé; chacune de ces méthodes de sécurisation de la clé principale peut être utilisée séparément.

    Si à la place du fichier clé un “-” est passé, l'entrée standard sera utilisée. Cet exemple montre comment on peut utiliser plus d'un fichier clé:

    # cat keyfile1 keyfile2 keyfile3 | geli init -K - /dev/da2
  3. Attacher le provider avec la clé générée

    # geli attach -k /root/da2.key /dev/da2
    Enter passphrase:

    Le nouveau périphérique sera appelé /dev/da2.eli.

    # ls /dev/da2*
    /dev/da2 /dev/da2.eli
  4. Créer le nouveau système de fichiers

    # dd if=/dev/random of=/dev/da2.eli bs=1m
    # newfs /dev/da2.eli
    # mount /dev/da2.eli /private

    Le système de fichiers chiffré devrait être maintenant visible par df(1) et disponible à l'utilisation:

    # df -H
    Filesystem Size Used Avail Capacity Mounted on
    /dev/ad0s1a 248M 89M 139M 38% /
    /devfs 1.0K 1.0K 0B 100% /dev
    /dev/ad0s1f 7.7G 2.3G 4.9G 32% /usr
    /dev/ad0s1d 989M 1.5M 909M 0% /tmp
    /dev/ad0s1e 3.9G 1.3G 2.3G 35% /var
    /dev/da2.eli 150G 4.1K 138G 0% /private
  5. Démonter et détacher le provider

    Une fois l'utilisation de la partition chiffrée achevée et que la partition /private n'est plus nécessaire, il est prudent de penser à démonter et détacher la partition geli chiffrée:

    # umount /private
    # geli detach da2.eli

Plus d'information sur l'utilisation de geli(8) peut être trouvée dans sa page de manuel.

18.16.2.1. Utiliser la procédure rc.d de geli

La commande geli est fournie avec une procédure rc.d qui peut être employée pour simplifier l'utilisation de geli. Un exemple de configuration de geli à l'aide de rc.conf(5) sera:

geli_devices="da2"
geli_da2_flags="-p -k /root/da2.key"

Ces lignes configureront /dev/da2 comme provider geli avec une clé principale /root/da2.key, de plus geli n'utilisera pas de phrase d'authentification pour attacher le provider (notez que ceci n'est utilisable que si l'option -P a été passée durant la phase geli init). Le système détachera du noyau le provider geli avant l'arrêt du système.

Plus d'information sur la configuration du système rc.d est fournie dans la section rc.d de ce Manuel.

Notes

[1]

Pour des conseils sur comment choisir une phrase d'authentification sécurisée et facile à retenir, consultez le site Web Diceware Passphrase.


18.17. Chiffrage de l'espace de pagination

Ecrit par Christian Brüffer.

Sous FreeBSD, le chiffrement de l'espace de pagination est simple à mettre en place et est possible depuis FreeBSD 5.3-RELEASE. En fonction de la version de FreeBSD utilisée, différentes options sont disponibles et la configuration peut légèrement varier. Depuis FreeBSD 6.0-RELEASE, les systèmes de chiffrage gbde(8) ou geli(8) peuvent être utilisé à cet effet. Avec les versions antérieures, seul gbde(8) est disponible. Les deux systèmes utilisent la procédure rc.d nommée encswap.

La section précédente, Chiffrer les partitions d'un disque, contient une courte explication sur les différents systèmes de chiffrage.

18.17.1. Pourquoi l'espace de pagination devrait être chiffré?

Comme pour le chiffrage des partitions d'un disque, chiffrer l'espace de pagination a pour but la protection des informations sensibles. Imaginez une application qui, par exemple, traite des mots de passe. Tant que ces mots de passe résident en mémoire tout va pour le mieux. Cependant, si le système d'exploitation commence à transférer des pages mémoires vers l'espace de pagination en vue de libérer de la mémoire pour d'autres applications, les mots de passe peuvent être écrits en clair sur les plateaux du disque et seront faciles à récupérer par une personne malveillante. Chiffrer l'espace de pagination peut être une solution contre ce scénario.

18.17.2. Préparation

Note : Pour le reste de cette section, ad0s1b sera la partition réservée à l'espace de pagination.

Jusqu'ici l'espace de pagination n'a jamais été chiffré. Il est fort possible qu'il y ait déjà des mots de passe ou toute autre donnée sensible de présents en clair sur les plateaux du disque. Afin d'y remédier, les données de la partition de pagination doivent être écrasées avec des données aléatoires:

# dd if=/dev/random of=/dev/ad0s1b bs=1m

18.17.3. Chiffrer de l'espace de pagination avec gbde(8)

Si FreeBSD 6.0-RELEASE ou une version plus récente est utilisée, le suffixe .bde doit être ajouté au nom de périphérique sur la ligne du fichier /etc/fstab correspondant à cet espace de pagination:

# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad0s1b.bde none swap sw 0 0

Pour les systèmes antérieurs à FreeBSD 6.0-RELEASE, la ligne suivante doit également être ajoutée à /etc/rc.conf:

gbde_swap_enable="YES"

18.17.4. Chiffrage de l'espace de pagination avec geli(8)

La procédure pour le chiffrage de l'espace de pagination avec geli(8) est similaire à celle pour l'utilisation de gbde(8). Le suffixe .eli doit être ajouté au nom de périphérique sur la ligne du fichier /etc/fstab correspondant à cet espace de pagination:

# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad0s1b.eli none swap sw 0 0

Par défaut, geli(8) utilise l'algorithme AES avec une longueur de clé de 256bits.

Les valeurs par défaut peuvent être modifiées en utilisant l'option geli_swap_flags dans le fichier /etc/rc.conf. La ligne suivante demande à la procédure rc.d encswap de créer des partitions de pagination en utilisant l'algorithme Blowfish avec une clé de 128 bits de longueur, une taille de secteur de 4 kilo-octets et avec l'option “detach on last close” (détacher après démontage de la partition) activée:

geli_swap_flags="-a blowfish -l 128 -s 4096 -d"

Veuillez vous référer à la description de la commande onetime dans la page de manuel geli(8) pour une liste des options possibles.

18.17.5. Vérifier que cela fonctionne

Une fois que le système a été redémarré, le fonctionnement correct de l'espace de pagination peut être vérifié en utilisant la commande swapinfo.

Si gbde(8) est utilisé:

% swapinfo
Device 1K-blocks Used Avail Capacity
/dev/ad0s1b.bde 542720 0 542720 0%

Si geli(8) est utilisé:

% swapinfo
Device 1K-blocks Used Avail Capacity
/dev/ad0s1b.eli 542720 0 542720 0%

Chiffrage & Partitions

Source : WIKI Fedora

4 Chiffrer son système après coup

Image:InProgress_tip.png Attention !
Attention : faites une sauvegarde des données contenues dans votre /home avant de mettre en place la partition chiffrée.
Toutes les données seront effacées de façon irrémédiable.

Nous allons voir étape par étape, comment chiffrer la partition /home matérialisée par le volume /dev/VG00/LV_home.

4.1 Avant tout : faite une sauvegarde de vos données

La première étape est de copier les données de la partition home montée dans /home vers la partition backup montée dans /mnt/backup.

cp -dpR /home/ /mnt/backup

Pour rappel :

  • -d : Copier les liens symboliques en tant que tels plutôt que de copier les fichiers vers lesquels ils pointent.
  • -p : Conserver le propriétaire, le groupe, les permissions d’accès et les horodatages du fichier original.
  • -R : Copier récursivement les répertoires, en préservant tout ce qui n’est pas répertoire.

4.2 Ensuite : Chiffrer sa partition /home/ (ou autre)

  • A partir de là, nous allons travailler en runlevel 1 :
telinit 1
  • Démontons la partition à chiffrer :
umount /home

Si cela ne fonctionnait pas, utilisez fuser pour trouver et tuer le processus qui bloque :

fuser -mvk /home
  • Vérifiez que /home est bien démonté :
cat /proc/mounts | grep home
  • Remplissez votre partition avec des données aléatoires :
dd if=/dev/urandom of=/dev/VG00/LV_home
Image:Information_tip.png Information : Cette procédure a pour but de détruire toutes les précédentes données (non chiffrées donc) sur le disque.

Nous attirons votre attention sur le fait que cette procédure peut prendre plusieurs heures, mais c'est impératif dans le but d'avoir la meilleure protection possible. Notre conseil : laissez tourner toute la nuit...

  • Initialisez votre partition :
cryptsetup --verbose --verify-passphrase luksFormat /dev/VG00/LV_home
  • Ouvrez le nouveau volume crypté :
cryptsetup luksOpen /dev/VG00/LV_home home
  • Vérifiez que le volume est bien ouvert :
ls -l /dev/mapper | grep home
  • Créez le système de fichier (ext3 dans notre exemple) :
mkfs.ext3 /dev/mapper/home
  • Montez le nouveau système de fichier :
mount /dev/mapper/home /home
  • Vérifiez qu'il soit bien visible :
df -h | grep home
  • Ajoutez le au fichier /etc/crypttab (à créer au besoin). C'est ce fichier qui décrit les périphériques de bloc chiffrés qui sont configurés au démarrage du système. :
home /dev/VG00/LV_home none
  • Editez votre fichier /etc/fstab, supprimez l'ancienne ligne correspondant à votre /home/ et remplacez la par :
/dev/mapper/home /home ext3 defaults 1 2
  • Vérifiez l'entrée fstab :
mount /home
  • Restaurez les contexts SELinux :
/sbin/restorecon -v -R /home
  • Redémarrez :
shutdown -r now
  • Lors du démarrage, votre ordinateur vous demandera votre mot de passe Luks.
  • Vous pouvez restaurer vos backups.

5 Aller plus loin

5.1 Chiffrage avec une clé pour utilisateur et une clé pour l'administrateur

5.1.1 Etude de cas

Imaginons que vous travaillez pour une entreprise fabricant une boisson gazeuse servant de remède lors des grandes épidémies de gastro...
Vous avez la chance d'avoir cette fameuse recette stockée sur votre ordinateur portable, que se passe-t-il si vous perdez ou si vous vous faite voler ce dernier ?

Vos concurrents mettront environ 20 secondes pour lire les données stockées sur votre disque dur, dans le pire des cas (enfin pour eux) il faudra sortir le disque dur et le monter sur une autre machine. C'est pourquoi le service informatique de votre entreprise utilise LUKS pour chiffrer la partition /home des ordinateurs portables.
LUKS : Linux Unified Key Setup offre l'avantage de définir plusieurs clés de chiffrement. Nous verrons comment définir une clé pour l'utilisateur mais aussi une clé pour l'administrateur, en effet les utilisateurs ont une fâcheuse tendance à oublier leurs mots de passe.

5.1.2 Mise en pratique

Lors de l'installation du système la partition /home a été créée sur /dev/VG00/LV_home. Le compte utilisateur n'est pas encore crée.

L'utilisateur qui pratiquera le chiffrement sera l'utilisateur admin avec les droits nécessaires attribués via sudo. De plus le $HOME de l'utilisateur admin est /root/ et non pas /home/admin.

L'utilisateur de l'ordinateur portable sera nommé user.

  • Avant toute chose configurons sudo pour notre utilisateur admin (qui a déjà la possibilité d'exécuter visudo), pour rajouter :
sudo /usr/sbin/visudo

Cmnd_Alias FORCRYPTO = /sbin/cryptsetup, /usr/bin/shred, /bin/dd
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, \
/sbin/partprobe, /bin/mount, /bin/umount, /usr/sbin/vgdisplay, \
/usr/sbin/lvdisplay, /usr/sbin/lvextend, /usr/sbin/lvresize, \
/sbin/resize2fs, /usr/sbin/lvcreate, /usr/sbin/vgcreate, \
/sbin/mke2fs, /sbin/tune2fs

admin ALL = FOCRYPTO, STORAGE
  • Démontons la partition /home et détruisons tout ce quelle contient avant d'ajouter des données aléatoire (attention opération irréversible et très longue si votre partition est grande) :
sudo /bin/umount /home
sudo /usr/bin/shred -n 5 -v /dev/VG00/LV_home
sudo /bin/dd if=/dev/urandom of=/dev/VG00/LV_home
  • Initialisons maintenant notre partition avec LUKS, nous utiliserons l'AES (-c aes-cbc-essiv:sha256) comme algorithme de chiffrement avec une clé de 256 bits, c'est aussi l'algorithme par défaut.
sudo /sbin/cryptsetup luksFormat -c  aes-cbc-essiv:sha256 --verify-passphrase --key-size 256 /dev/VG00/LV_home.

Nous pouvons alors lire l'avertissement, il faut ensuite l'approuver en tapant YES en majuscules et en fournissant une passphrase qui sera connue uniquement par l'administrateur de la machine.

WARNING!
========
This will overwrite data on /dev/sdb irrevocably.

Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.
  • Maintenant grâce au device-mapper nous pouvons "ouvrir" notre partition chiffrée, et l'associer /dev/mapper/home :
sudo /sbin/cryptsetup luksOpen /dev/VG00/LV_home home

Nous avons donc deux vues de notre périphérique :

  1. /dev/VG00/LV_home => le périphérique physique (même si c'est un Volume Logique) et qui est chiffré
  2. /dev/mapper/home => le périphérique logique non chiffré
  • Cependant l'utilisateur ne connait pas la passphrase lui permettant d'ouvrir la partition chiffrée, ajoutons donc une passphrase pour l'utilisateur :
sudo /sbin/cryptsetup luksAddKey /dev/mapper/home
  • Pour pouvoir utiliser notre partitions et stocker des données dessus, il faut créer un système de fichiers :
sudo /sbin/mke2fs -j /dev/mapper/home
  • Nous avons un système de fichier sur notre partition, nous pouvons le monter :
sudo /bin/mount /dev/mapper/home /home

A présent, il faut "automatiser" l'ouverture du volume lors du démarrage de l'ordinateur :

  • Mise à jour du /etc/fstab, où l'on remplace /dev/VG00/LV_home par /dev/mapper/home
  • Mise à jour du fichier /etc/crypttab :
sudo echo 'home    /dev/VG00/LV_home       none' >> /etc/crypttab
Image:InProgress_tip.png Attention !
Ne mettez pas la passphrase dans /etc/crypttab, sinon tout ce que vous venez de faire n'a aucune utilité.
  • Redémarrez, et lors du démarrage, le système vous demandera de tapez la passphrase pour monter le /home.
Image:InProgress_tip.png Attention !
N'oubliez pas d'ajouter votre utilisateur...

5.2 Chiffrer la Swap

Image:InProgress_tip.png Attention !
Il est nécessaire de bien connaitre les bases de votre système avant de vous lancer dans une telle opération...

Les dommages peuvent être irrécupérables en cas de "Fat Fingers Syndrom" ; si vous n'êtes pas absolument sûr de ce que vous faites, n'essayez pas de suivre ce tutoriel !!

Nous partons du principe que la partition de swap est sur un volume logique /dev/VG00/LV_swap et que le volume chiffré sera sur /dev/mapper/encrypted_swap.

  • Tout d'abord il faut identifier votre partition de swap :
$ grep swap /etc/fstab
/dev/VG00/LV_swap swap swap defaults 0 0
  • Désactivez temporairement l'utilisation de la swap :
$ su -c '/sbin/swapoff -a'
  • Nettoyez et enlevez toutes les informations possibles et imaginables de la swap :
$ su -c '/usr/bin/shred -n 5 -v /dev/VG00/LV_swap'
  • Créez le fichier /etc/cryptab qui servira à udev pour monter automatiquement la swap au démarrage sans poser de question (le mot de passe est aléatoire) :
$ su -c '/usr/bin/vim /etc/cryptab'
swap /dev/VG00/LV_swap /dev/urandom swap
  • Adaptez votre fichier /etc/fstab pour lire :
/dev/mapper/encrypted_swap swap swap defaults 0 0
à la place de :
/dev/VG00/LV_swap   swap    swap    defaults    0 0
  • Créez la partition chiffrée (en fait nous associons grâce à dm-crypt la partition /dev/VG00/LV_swap à /dev/mapper/encrypted_swap avec une clé aléatoire (-d /dev/random) :
$ su -c '/sbin/cryptsetup -d /dev/random create encrypted_swap /dev/VG00/LV_swap'
  • Ajoutez une signature swap sur notre nouveau volume :
$ su -c '/sbin/mkswap /dev/mapper/crypted_swap'
  • Activez votre swap :
$ su -c '/sbin/swapon -a'

Votre swap est maintenant chiffrée, pour comprendre ce qui se passe lors du montage jetez donc un oeil sur /etc/rc.sysinit.

6 Documents de références