Créer un conteneur chiffré

L’idée ici est de créer un fichier n’importe où sur le disque. Se fichier pourra être monté comme une partition et contiendra des données chiffrées.

Création du fichier

Attention, c’est ici que l’on détermine la taille du fichier et c’est pas facile à changer par la suite

dd if=/dev/urandom of=testfile bs=1M count=5000

Ici on a un fichier de 5 Go.

Création de la partition

On va ensuite monter ce ficheir comme une partition grâce à losetup

# losetup -f
/dev/loop0

# losetup /dev/loop0 testfile

Attention, la commande suivante efface tout ce qui se trouve dans le fichier :

# cryptsetup luksFormat /dev/loop0

Répondre YES puis saisir le mot de passe du volume.

# cryptsetup luksOpen /dev/loop0 testfs
# mkfs.ext4 /dev/mapper/testfs

A ce stade, la partition est créée. Il ne reste plus qu’à la monter avec :

# mount -o rw /dev/mapper/testfs /media/testfs

Après le redémarrage

Le conteneur ne reste monté que le temps d’un démarrage si vous ne le démontez pas entre temps. Après un redémarrage, pour monté/démonter un conteneur voici un script qui permet de le faire en automatique :

#!/usr/bin/env bash
###################################
# Montage de containeur chiffré
#
#	$1 = fichier containeur à monter
#

if [[ $(/usr/bin/id -u) -ne 0 ]]; then
    echo "Doit être lancé en tant que ROOT"
    exit
fi

mntrep=$1
mntfile=${mntrep##*/}
mntrep="/media/$mntfile"

mount|grep -q $mntfile

if [ $? == 1 ]
then 
	loopdev=$(losetup -f)
	losetup $loopdev $1
	cryptsetup luksOpen $loopdev $mntfile
	mkdir $mntrep
	mount -o rw /dev/mapper/$mntfile $mntrep
	chmod 777 $mntrep
	echo "Partition cryptfs monté !"
else 
	umount $mntrep
	rm -Rf $mntrep
	cryptsetup luksClose /dev/mapper/$mntfile
	output=$(losetup -a | grep $mntfile)
	for LINE in ${output} ; do
		echo ${LINE}
		losetupres=${LINE}
		loopdev=${losetupres%%:*}
		losetup -d $loopdev
	done 

	echo "Partition cryptfs démonté !"
fi

Trucs & Astuces