19.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.

19.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.

19.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

19.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"

19.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.

19.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%

Ce document, ainsi que d'autres peut être téléchargé sur ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.

Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.