Upload
ali-amaniss
View
56
Download
0
Embed Size (px)
Citation preview
Sauvegarde et cryptage des données sur disque USB externe 2013
1
Sauvegarde sur disque USB externe
Protégé par mot de passe sous Linux
Rapport préparé et réalisé par
Ali Amaniss
Stagiaire en administration de systèmes
DEC en Techniques de l’informatique
Option : Gestion de Réseaux Informatiques
Collège de Maisonneuve
Stage réalisé à NVI Solutions, Montréal
Janvier 2013
Sauvegarde et cryptage des données sur disque USB externe 2013
2
Table of matières
Introduction ................................................................................................................................... 3
Cryptage de la partition ................................................................................................................ 4
Installation du paquetage cryptsetup ........................................................................................... 4
Formatage de la partition avec cryptsetup ................................................................................... 4
Ouverture de la partition .............................................................................................................. 4
Formatage de la partition sous Linux .......................................................................................... 5
Montage de la partition ................................................................................................................ 5
Travail sur la partition ................................................................................................................. 5
Démontage de la partition ........................................................................................................... 5
Fermeture de la partition ............................................................................................................. 6
Résumé du montage et du démontage ......................................................................................... 6
Changer le mot de passe de la partition USB .............................................................................. 6
Sauvegarde ..................................................................................................................................... 7
Introduction ................................................................................................................................. 7
Installation de rsync ..................................................................................................................... 7
Sauvegarde .................................................................................................................................. 7
Sauvegarde sur la machine locale ............................................................................................ 7
Sauvegarde sur une machine distante ...................................................................................... 8
Sauvegarde sur le disque USB crypté...................................................................................... 9
Script de sauvegarde .................................................................................................................... 9
Le code du script ................................................................................................................... 10
Menu et mode d’utilisation .................................................................................................... 18
Annexes......................................................................................................................................... 20
Partition sécurisée sous Linux ................................................................................................... 20
Partition chiffrée avec cryptsetup .............................................................................................. 24
Bibliographie ................................................................................................................................ 32
Sauvegarde et cryptage des données sur disque USB externe 2013
3
Introduction
La sauvegarde des données est un processus devenu nécessaire pour leur sécurité et la
restauration en cas de besoin. Les moyens de stockage étant devenu bon marché, il est
facile de se procurer un disque dur sur lequel on peut faire ses sauvegardes facilement.
Une fois la sauvegarde faite, vous pouvez transporter et déposer votre disque USB
n’importe où et les données contenues seront protégées et en sécurité. La commande
utilisée ici pour la sauvegarde est rsync. C’est une commande qui synchronise deux
dossiers et copie les fichiers qui sont dans la source et pas dans la destination, ainsi que
les fichiers qui existent dans les deux dossiers mais qui sont modifiés dans la source.
Ce petit tutoriel a pour objectif de donner les étapes nécessaires pour crypter une partition
Linux avec mot de passe. Il utilise le module md-crypt. Ensuite, nous proposons un
script de sauvegarde de vos données sur la partition ainsi cryptée.
Il existe aussi le module truecrypt pour le même travail. Cependant md-crypt est plus
intégré au noyau Linux et il est facile d’utilisation.
Le paquetage correspondant au module md-crypt est cryptsetup qu’il faut installer
comme nous le montrerons dans la suite de ce tutoriel.
Ce petit tutoriel a pour objectif de donner les étapes nécessaires pour crypter une partition
Linux avec mot de passe et faire la sauvegarde de vos données. Pour l’encryptage des
données, nous utilisons le module md-crypt. Ensuite, nous proposons un script de
sauvegarde de vos données sur la partition ainsi cryptée.
Le script proposé permet de faire, d’une manière transparente, le montage, le démontage
du disque dur ainsi que la sauvegarde et la restauration des données.
Il existe aussi le module truecrypt pour l’encryptage d’une partition. Cependant md-
crypt est plus intégré au noyau Linux et il est facile d’utilisation.
Le paquetage correspondant au module md-crypt est cryptsetup qu’il faut installer
comme nous le montrerons dans la suite de ce tutoriel.
Il existe d’autres moyens pour faire la sauvegarde telle que la commande dump qui fait
des sauvegardes complètes, différentielles et incrémentales. Mais celle-ci fait la
sauvegarde incrémentale sur toute la partition seulement et non sur un dossier particulier.
Ce qui est un inconvénient si nous voulons sauvegarder seulement un dossier particulier.
La version de Linux que nous utilisons pour tester toutes les manipulations présentées
dans ce document est Dubian. Mais pour adapter ces manipulations autres distributions
Linux, il suffit d’utiliser les commandes correspondantes pour l’installation de paquetage
par exemple.
Sauvegarde et cryptage des données sur disque USB externe 2013
4
Cryptage de la partition
Commençons par le cryptage de la partition USB. La partition sera cryptée dans le sens
qu’il faut un mot de passe pour pouvoir la monter sous Linux. A défaut de ce mot de
passe, les données sont protégées et inaccessibles. De plus, les données sont cryptées par
cryptsetup à la volée et en toute transparence par rapport à l’utilisateur.
Installation du paquetage cryptsetup
Pour se faire il faut installer le paquetage cryptsetup avec la commande suivante :
sudo apt-get install cryptsetup
Ensuite, il faut faire une mise à jour des paquetages car des fois, il en maque certains.
sudo apt-get upgrade
Formatage de la partition avec cryptsetup
Une fois cela fait, il faut formater la partition avec la commande suivante :
cryptsetup luksFormat /dev/sdb1
/dev/sbd1 est ici juste un exemple. Il faut donner l’endroit ou se trouve votre partition.
Dans cette étape il faut donner un mot de passe qui vous permettra, dans le futur,
d’accéder à votre partition. C’est ce mot de passe qui garantit la confidentialité de vos
données. Personne ne peut accéder à votre partition pour la monter s’il n’est pas en
possession de ce mot de passe.
Ce mot de passe peut être changé au besoin. Voir la section du changement du mot de
passe plus loin dans ce document.
Ouverture de la partition
Ensuite et avant de monter votre partition, il faut d’abord l’ouvrir. Au cours de cette
ouverture, le mot de passe vous sera demandé.
cryptsetup luksOpen /dev/sbd1 usb_backup
usb_backup est un nom arbitraire qui va designer la partition à partir de cette ouverture.
Sauvegarde et cryptage des données sur disque USB externe 2013
5
Une fois la partition ouverte et avant de la monter, il faut la formater. Souvenons nous
que l’on désigne la partition à partir de son ouverture avec le nom générique :
usb_backup.
Formatage de la partition sous Linux
Pour formater la partition comme on fait ordinairement sous linux, nous lançons la
commande suivante.
mkfs -t ext3 /dev/mapper/usb_backup
Montage de la partition
Une fois, votre partition formatée, pour pouvoir l’utiliser, il faut la monter avec la
commande suivante.
mount /dev/mapper/usb_backup /usb_backup
/usb_backup (deuxième argument) étant un dossier crée à la racine pour monter la
partition. Vous pouvez créer un dossier avec un nom de votre choix si vous préférez.
Travail sur la partition
Une fois ce montage fait, on peut accéder à la partition en utilisant le nom du dossier dont
il était question ci-dessus, à savoir /sub_backup que l’on pourra appeler autrement si
l’on veut. On peut accéder à la partition avec la commande :
# cd /usb_backup
Comme exemple d’utilisation, on peut créer un dossier dans cette partition:
# mkdir dossier
Une fois que le travail fini, il faut démonter la partition et la fermer comme décrit dans
les épates suivantes. Ainsi, on protège les données qui sont dessus.
Démontage de la partition
Une fois votre travail terminé sur votre partition, il faut la démonter avant de la fermer.
Pour la démonter, on utilise la commande suivante.
umount /usb_backup
Sauvegarde et cryptage des données sur disque USB externe 2013
6
La dernière étape et de fermer votre partition. Cette opération est nécessaire pour protéger
vos données car n’importe quelle personne malveillante peut monter votre partition et
accéder à vos données.
Fermeture de la partition
Pour fermer la partition et ainsi la protéger de toute intrusion malveillante, il faut faire la
commande suivante :
cryptsetup luksClose usb_backup
Résumé du montage et du démontage
Pour revenir travailler sur votre partition, il suffit de l’ouvrir et de la monter comme dans
les étapes précédentes. Les deux commandes qui font ce travail, nous le rappelons, sont
les suivantes.
cryptsetup luksOpen /dev/sbd1 usb_backup
mount /dev/mapper/usb_backup /usb_backup
Puis, on travaille. Mis avant de partir, il faut démonter la partition et la fermer. Nous
rappelons les deux commandes qui ont cette fonction.
umount /usb_backup
cryptsetup luksClose usb_backup
Changer le mot de passe de la partition USB
Nous pouvons, pour une raison ou une autre, vouloir changer le mot de passe qui protège
la partition. Pour ce faire, il suffit de taper les commandes suivantes. Il faut en premier
modifier le mot de passe, ensuite il faut détruire l’ancien mot de passe.
cryptsetup -v luksAddKey /dev/sdb1
cryptsetup -v luksKillSlot /dev/sdb1
Sauvegarde et cryptage des données sur disque USB externe 2013
7
Sauvegarde
Introduction
Pour faire la sauvegarde de vos données sur la partition ainsi protégée par mot de passe,
nous utiliserons l’utilitaire rsync. Cet utilitaire parcourt le répertoire à sauvegarder et ne
copie sur la partition cible que les fichiers qui ont été modifiés. Ceux qui n’ont reçu
aucune modification à partir de la dernière sauvegarde ne sont pas copiés. Cela convient
lorsqu’on a de très grandes quantités de données à sauvegarder et/ou que les sauvegardes
des mêmes données sont fréquentes.
En fait, l’utilitaire rsync permet de synchroniser deux dossiers (sur la machine locale ou
entre la machine locale et une machine distante) et copie, selon les modifications qui ont
été faites précédemment, les fichiers nécessaires afin de rendre les deux dossiers
identiques.
Il existe bien sûr d’autres moyens tels que la commande dump qui fait des sauvegardes
complètes, incrémentales et différentielles. Mais ici, nous nous intéresserons à la
commande rsync.
Installation de rsync
Commencer par installer le paquetage rsync si ce n’est déjà fait :
sudo apt-get install rsync
Une fois fait, vérifiez que vous avez accès à la commande rsync en tapant à la ligne de
commande:
rsync
Sauvegarde
La sauvegarde des données peut se faire entre deux dossiers d’une machine locale ou
entre un dossier de la machine locale et un dossier d’une machine distante.
Sauvegarde sur la machine locale
Pour synchroniser un dossier local avec un autre dossier local, il suffit par exemple de
taper la commande suivante.
Sauvegarde et cryptage des données sur disque USB externe 2013
8
rsync -avrtpl --progress --del /dossier/ /backup
Cette commande permet de copier les fichiers du répertoire /dossier/ (qui ont été
modifiés) vers le dossier /backup/ sur la même machine en supposant que les deux
dossiers se trouvent à la racine.
Les Options :
-a : équivalent à -rlptgoD. C'est un moyen rapide de dire que vous voulez la récursion et
de préserver pratiquement tout.
-v : plus loquace.
-r : parcours le dossier indiqué et tous ses sous-dossiers.
-t : préserve les dates.
-p : provoque la mise à jour des permissions sur la destination pour qu'elles soient
identiques aux permissions sur la source.
-l : copie les liens symboliques comme liens symboliques.
-progress : montre l'avancement pendant le transfert.
--del : permet de supprimer les fichiers sur "destination" qui n'existent plus sur "source".
Sauvegarde sur une machine distante
Pour sauvegarder un dossier local sur un dossier d’une machine distante la procédure est
la même sauf qu’il faut ajouter l’adresse IP de la machine distante.
rsync -avrtpl --progress --del /dossier/ 192.168.40.34:/backup
Il se pourrait que l’on vous demande le mot de passe de l’utilisateur root de la machine
distante. Il est possible de le donner interactivement ou de le passer par un fichier.
Bien sûr, si les fichiers à sauvegarder sont la machine distante et que l’ont veut les
sauvegarder sur la machine locale, il suffit d’inverser l’ordre des deux machines et ainsi
donner la commande suivant.
rsync -avrtpl --progress --del/backup 192.168.40.35 :/dossier
Sauvegarde et cryptage des données sur disque USB externe 2013
9
Sauvegarde sur le disque USB crypté
Afin de sauvegarder les données de la machine locale sur le disque USB crypté ci-dessus,
il suffit de le connecter, l’ouvrir et le monter avant de lancer la commande rsync dessus.
Pour l’ouverture et le montage, on lance les commandes suivantes.
cryptsetup luksOpen /dev/sbd1 usb_backup
mount /dev/mapper/usb_backup /usb_backup
Ensuite on lance la commande de sauvegarde rsync.
rsync -avrtpl --progress --del /dossier/ /usb_backup/dossier _`date +%d_%m_%Y`/
Ainsi les données seront stockées dans le dossier :
/usb_backup/dossier_`date +%d_%m_%Y`
du disque USB externe. On ajoute la date du jour au nom du dossier afin de savoir à quelle date
la sauvegarde a été faite, mais cela n’est pas obligatoire.
Une fois le transfert de données terminé, il faut démonter et fermer la partition avant de
déconnecter le disque USB.
umount /usb_backup
cryptsetup luksClose usb_backup
Script de sauvegarde
Si vous ne voulez pas vous souvenir de toutes ces manipulations, il suffit d’utiliser un
script après avoir connecté votre disque USB externe. Écrivez ce script dans un fichier,
disons sauvegarde.sh.
Donnez les autorisations d’exécution à ce script avec la commande :
chmod +x sauvegarde.sh
Ensuite, lancer le comme suit :
./sauvegarde.sh
Sauvegarde et cryptage des données sur disque USB externe 2013
10
Le code du script
Nous avons écrit un script qui permet de rendre transparent toutes les manipulations
concernant la sauvegarde des données sur disque USB externe. Ce script permet de
monter, de démonter le disque dur. Il permet également de faire la sauvegarde ou la
restauration dans disque USB déjà monté, de changer le mot de passe, de changer la
partition de montage. Le script affiche un menu qui permet de faire toutes ces
manipulations.
Bien sûr, les sauvegardes et les restaurations qui se font dans le script sont adaptées aux
besoins de chacun. Il faut donc changer le script au niveau des commandes rsync afin de
l’adapter à d’autres sauvegardes. Nous n’avons pas mis dans le menu une option qui
permettrait de changer les dossiers sauvegardés. Mais cet ajout peut se faire aussi pour
mieux gérer n’importe quelle sauvegarde. Il suffirait de changer de dossier pour changer
de sauvegarde.
Avant d’expliquer le menu du script, nous donnons d’abord son contenu de son code dans
les pages suivantes.
#########################################
## The backup and restore bash script. ##
## Written on the 01/17/2013. ##
## NVI solutions ##
#########################################
choice="";
usb_device="/dev/sdb1";
function verifier_le_montage()
{
if grep -q usb_backup /proc/mounts ; then
mounted=1;
else mounted=0;
fi
}
function password_change()
{
typeset -u response;
read -p "Are you sure to want to change password ? (y/n)
" response;
if [ "$response" = "Y" ]; then
{
echo "Changing password...."
cryptsetup -v luksAddKey $usb_device;
Sauvegarde et cryptage des données sur disque USB externe 2013
11
echo "Erasing the old password......";
cryptsetup -v luksKillSlot $usb_device;
}
fi
}
function menu()
{
clear;
echo "----------------------------------------------";
echo "+ Welcome to the Backup System on USB Device +";
echo "----------------------------------------------";
echo "";
echo "NVI Solutions, Copyright 2013.";
echo "All Rights Reserved."
echo "";
echo "------------------------Menu-------------------";
echo "General";
echo " d) Current USB Device name (/dev/xxx/)";
echo " c) Change USB Device name (/dev/xxx/)";
echo " p) Change password";
echo "";
echo "Backup and Restore";
echo " m) Mount USB Device";
echo " u) Umount USB Device";
echo "";
echo " b) Backup to USB device";
echo " r) Restore from USB device";
echo "";
echo " B) Mount, Backup to USB device and Umount";
echo " R) Mount, Restore from USB device and Umount";
echo "";
echo " q) Quit";
echo "------------------------------------------------";
read -p "Give your choice: " choice;
}
function monter()
{
if [ $mounted -eq 0 ]; then
{
if [ -d "/usb_backup" ]; then
existe=1;
else existe=0;
fi
Sauvegarde et cryptage des données sur disque USB externe 2013
12
if [ $existe -eq 0 ]; then
mkdir /usb_backup/;
fi
cryptsetup luksOpen $usb_device usb_backup;
mount /dev/mapper/usb_backup /usb_backup;
mounted=1;
echo "The device '$usb_device' is mounted..."
read -p "Hit return key to continue...";
}
else
{
echo "The USB device '$usb_device' is already mounted";
read -p "Hit return key to continue...";
}
fi
}
function demonter()
{
if [ $mounted -eq 1 ]; then
{
umount /usb_backup;
cryptsetup luksClose usb_backup;
mounted=0;
echo "The USB device '$usb_device' is umounted...";
read -p "Hit return key to continue...";
}
else
{
echo "The USB device '$usb_device' is alreday
umounted...";
read -p "Hit return key to continue...";
}
fi
}
function small_backup()
{
if [ $mounted -eq 1 ]; then
{
typeset -u response;
read -p "Are you sure to want to backup ? (y/n) "
response;
if [ "$response" = "Y" ]; then
Sauvegarde et cryptage des données sur disque USB externe 2013
13
{
rsync -avrtpl --progress --del
/backup/ActiveDirectory/Backup.bkf
/usb_backup/nvi_backup/ActiveDirectory/;
rsync -avrtpl --progress --del
/backup/Exchange/Backup.bkf
/usb_backup/nvi_backup/Exchange/;
rsync -avrtpl --progress --del
/backup/rsnapshot/hourly.0/
/usb_backup/nvi_backup/rsnapshot/;
### Update the date.txt file for the backup date
date_backup=`date +%m/%d/%Y`;
message="The backup is finished on "$date_backup" !!";
echo $message >
/usb_backup/nvi_backup/backup_date.txt;
echo "The backup is made...";
read -p "Hit return key to continue...";
}
else
read -p "Hit the return key to continue...";
fi
}
else
{
echo "The USB device '$usb_device' is not mounted...Mount
it first...";
read -p "Hit return key to continue...";
}
fi
}
function big_backup()
{
typeset -u response;
read -p "Are you sure to want to backup ? (y/n) "
response;
if [ "$response" = "Y" ]; then
{
if [ $mounted -eq 0 ]; then
{
### Mount the USB device
cryptsetup luksOpen $usb_device usb_backup;
mount /dev/mapper/usb_backup /usb_backup;
Sauvegarde et cryptage des données sur disque USB externe 2013
14
mounted=1;
}
fi
echo "The USB device '$usb_device' is mounted...";
### Make the backup
echo "Making bakcup...";
rsync -avrtpl --progress --del
/backup/ActiveDirectory/Backup.bkf
/usb_backup/nvi_backup/ActiveDirectory/
rsync -avrtpl --progress --del
/backup/Exchange/Backup.bkf
/usb_backup/nvi_backup/Exchange/
rsync -avrtpl --progress --del
/backup/rsnapshot/hourly.0/
/usb_backup/nvi_backup/rsnapshot/
### Update the date.txt file for the backup date
date_backup=`date +%m/%d/%Y`;
message="The backup is finished on "$date_backup" !!";
echo $message > /usb_backup/nvi_backup/backup_date.txt;
### Umount the USB device
umount /usb_backup;
cryptsetup luksClose usb_backup;
mounted=0;
### Final message on the output screen
echo $message;
read -p "Hit return key to continue....";
}
else read -p "Hit return key to continue...";
fi
}
function small_restore()
{
if [ $mounted -eq 1 ]; then
{
typeset -u response;
read -p "Are you sure to want to restore from USB device
? (y/n) " response;
if [ "$response" = "Y" ]; then
Sauvegarde et cryptage des données sur disque USB externe 2013
15
{
echo "Making restore...";
rsync -avrtpl --progress --del
/usb_backup/nvi_backup/ActiveDirectory/
/backup/ActiveDirectory/;
rsync -avrtpl --progress --del
/usb_backup/nvi_backup/Exchange/ /backup/Exchange/;
rsync -avrtpl --progress --del
/usb_backup/nvi_backup/rsnapshot/
/backup/rsnapshot/hourly.0;
echo "The restore is finished...";
read -p "Hit return key to continue...";
}
else
read -p "Hit the return key to continue...";
fi
}
else
{
echo "The USB device '$usb_device' is not mounted...Mount
it first...";
read -p "Hit return key to continue...";
}
fi
}
function big_restore()
{
typeset -u response;
read -p "Are you sure to want to restore from USB device
? (y/n) " response;
if [ "$response" = "Y" ]; then
{
if [ $mounted -eq 0 ]; then
{
### Mount the USB device
cryptsetup luksOpen $usb_device usb_backup;
mount /dev/mapper/usb_backup /usb_backup;
mounted=1;
}
fi
echo "The USB device '$usb_device' is mounted...";
### Make the backup
Sauvegarde et cryptage des données sur disque USB externe 2013
16
echo "Making restore...";
rsync -avrtpl --progress --del
/usb_backup/nvi_backup/ActiveDirectory/
/backup/ActiveDirectory/;
rsync -avrtpl --progress --del
/usb_backup/nvi_backup/Exchange/ /backup/Exchange/;
rsync -avrtpl --progress --del
/usb_backup/nvi_backup/rsnapshot/
/backup/rsnapshot/hourly.0;
### Update the date.txt file for the backup date
message="The restore is finished !!";
### Umount the USB device
umount /usb_backup;
cryptsetup luksClose usb_backup;
mounted=0;
### Final message on the output screen
echo $message;
read -p "Hit return key to continue....";
}
else read -p "Hit return key to continue...";
fi
}
function choix()
{
menu; # make a choice from the menu
case $choice in
d*) echo "The current USB device is '$usb_device'";
echo "";
read -p "Hit return key to continue....";
choix;;
c*) read -p "New USB Device name : " usb_device;
choix;;
p*) password_change; choix;;
m*) monter; choix;;
u*) demonter; choix;;
b*) small_backup; choix;;
r*) small_restore; choix;;
B*) big_backup; choix;;
Sauvegarde et cryptage des données sur disque USB externe 2013
17
R*) big_restore; choix;;
q*) exit;;
Q*) exit;;
*) read -p "Bad choice. Hit return key to continue..."
choix;;
esac
}
verifier_le_montage;
choix;
Sauvegarde et cryptage des données sur disque USB externe 2013
18
Menu et mode d’utilisation
Dans cette section, nous dérivons le fonctionnement du script. Lors du lancement du
script, le menu suivant s’affiche.
---------------------------------------------------------------
+ Welcome to the Backup System on USB Device +
---------------------------------------------------------------
NVI Solutions, Copyright 2013.
All Rights Reserved.
------------------------Menu--------------------------------
General
d) Current USB Device name (/dev/xxx/)
c) Change USB Device name (/dev/xxx/)
p) Change password
Mount and Umount USB Device
m) Mount USB Device
u) Umount USB Device
Backup and Restore
b) Backup to USB device
r) Restore from USB device
B) Mount, Backup to USB device and Umount
R) Mount, Restore from USB device and Umount
q) Quit
-------------------------------------------------------------------
Give your choice:
Nous décrivons les options proposées par le script:
d : donne le nom du disque dur USB à monter.
c : permet de changer le nom du disque dur à monter.
p : permet de changer le mot de passe qui protège le disque dur.
m : permet de monter la partition sans faire de sauvegarde ni de restauration.
u : de démonter la partition si elle est déjà montée.
b : permet de faire la sauvegarde d’une partition déjà montée.
r : permet de faire la restauration des données à partir d’une partition déjà montée.
B : permet de monter une partition, de sauvegarder et de démonter la partition.
R : permet de monter une partition, de restaurer les données et de démonter la partition.
Sauvegarde et cryptage des données sur disque USB externe 2013
19
q : permet de quitter le script.
Remarque : toutes ces manipulations ont été testées avec succès sur une machine Dubian
avec un disque dur USB externe de plusieurs téraoctets.
Sauvegarde et cryptage des données sur disque USB externe 2013
20
Annexes
Partition sécurisée sous Linux
(Source)
Nous allons utiliser dm-crypt et non pas son concurrent direct truecrypt pour protéger une
partition sous Linux. Pourquoi retenir dm-crypt ? Car ce dernier est simple d’usage et
bien intégré au noyau Linux ce dernier aspect est également un inconvénient notamment
si vous souhaitez pourvoir lire vos données sous divers OS. Installation
Sous debian, un seul package suffit.
{geshibot lang=”bash” head=”installer cryptsetup/dm-crypt”} apt-get install cryptsetup
{/geshibot}
Mise en œuvre.
Pour illustrer la mise en œuvre de cette technique de cryptage nous considérons au travers
de cet exemple que nous souhaitons sécuriser la partition /dev/hda6. Attention toutes les
données présentes sur la partition en question seront perdues ! L’ensemble de la
configuration se réalise au travers de la commande cryptsetup.
Il nous faut travailler sous le compte root.
Étape 1: Formater votre partition au format cryptsetup
Pour cela utiliser la commande :
{geshibot lang=”bash” head=”Formater une partition en cryptsetup”} cryptsetup
luksFormat /dev/hda6
WARNING!
This will overwrite data on /dev/hda6 irrevocably.
Are you sure? (Type uppercase yes): YES Enter LUKS passphrase: *** Verify
passphrase: *** Command successful. {/geshibot}
Étape 2 : accéder à une partition sécurisée
Cette partition est maintenant au format cryptsetup et elle est fermée par un mot de passe
(LUKS passphrase). Avant de pouvoir l’utiliser, il nous faut l’ouvrir :
Sauvegarde et cryptage des données sur disque USB externe 2013
21
{geshibot lang=”bash” head=”Ouvrir une partition”} cryptsetup luksOpen /dev/hda6
crypt_hda6
Enter LUKS passphrase: *** key slot 0 unlocked. Command successful. {/geshibot}
Cette commande mérite quelques explications sur les paramètres passés : - luksOpen
indique que l’on souhaite ouvrir une partition, - /dev/hda6 indique quel partition physique
on souhaite ouvrir, - crypt_hda6 donne un nom logique (de mapping) à la partition
ouverte.
Après cette commande dm-crypt associe à la partition physique /dev/hda6 sa version
accessible (ouverte) via le device logique /dev/mapper/crypt_hda6. Du point de vue du
système /dev/mapper/crypt_hda6 est une partition comme les autres mise à part que dm-
crypt se charge de crypter/décrypter toutes opérations E/S. schématiquement
E/S ===> /dev/mapper/crypt_hda6 ===> dm-crypt (cryptage/decryptage) ====>
/dev/hda6
A partir de maintenant on utilise plus que /dev/mapper/crypt_hda6.
Étape 3 : Formatage OS de votre partition sécurisée
Quand on vous le dit que l’on utilise plus que /dev/mapper/crypt_hda6 et de façon
standard.
Formater en ext3 la partition:
mkfs -t ext3 /dev/mapper/crypt_hda6
Résultat du formatage:
mke2fs 1.41.3 (12-Oct-2008)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
4612096 inodes, 18432442 blocks
921622 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
563 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632,
2654208,
4096000, 7962624, 11239424
Writing inode tables: done
Creating journal (32768 blocks): done
Sauvegarde et cryptage des données sur disque USB externe 2013
22
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
Étape 4 : Monter la partition
Là, rien que très classique mount. Monter la partition:
mkdir /mnt/partition_securise
mount /dev/mapper/crypt_hda6 /mnt/partition_securise
Étape 5 : Démonter et fermer la partition
La commande classique umount. Démonter la partition:
umount /mnt/partition_securise
Mais votre partition est restée ouverte, une autre personne passant sur votre PC peut fort
bien réaliser un mount sans avoir rien d’autre à faire. Pour verrouiller votre partition il
faut la fermer via cette commande:
cryptsetup luksClose crypt_hda6
A partir de ce moment là le device /dev/mapper/crypte_hda6 n’existe plus et les données
stockées sur /dev/hda6 sont totalement inaccessibles. Surtout ne perdez pas votre mot de
passe car il n’y a pas moyen de récupérer les données. Autres éléments.
Monter automatiquement une partition de type cryptsetup
Cela dépend des distributions mais sous debian et à priori sous ubuntu tout se passe dans
le fichier de configuration /etc/crypttab Si vous placer cette ligne (la seconde) dans ce
fichier de configuration:
# <target name> <source device> <key file>
<options>
crypt_hda6 /dev/hda6 none luks
Lors du prochain reboot il vous sera demandé un mot de passe au moment où le système
doit accéder à la partition pour son montage.
Ne pas oublier de mettre à jour votre fichier /etc/fstab pour le montage automatique de la
partition lors du boot.
Il existe bien d’autres possibilités mais là je vous laisse regarder la doc.
man cryptsetup,
Sauvegarde et cryptage des données sur disque USB externe 2013
23
man crypttab
Du style stocker son mot de passe sur une clé USB, etc.
Sauvegarde et cryptage des données sur disque USB externe 2013
24
Partition chiffrée avec cryptsetup
(Source)
Afin de protéger au mieux vos données personnelles, il peut être nécessaire de chiffrer
vos partitions utilisateur. En effet, si via le système il est impossible d’accéder aux
fichiers qui ne vous appartiennent pas, un simple passage sur un livecd permet d’accéder
à n’importe quel fichier de votre système. Le chiffrement de partition permet d’éviter ça.
Ubuntu intègre en standard les outils nécessaires à une gestion simple de votre sécurité.
Installation
Installer cryptsetup
ou
Pour l'installation, lancez Synaptic. Recherchez «cryptsetup», cochez la case
correspondante et validez le tout (bouton « Appliquer ») pour l'installer.
Si nécessaire charger les modules « aes-i586 », « dm_mod » et « dm_crypt ». Au besoin,
les ajouter à la liste de /etc/modules (cf. infra Référence).
Applications
Chiffrer une partition
Créer un conteneur pour vos données : une partition ou un fichier contenant votre
système de fichier.
Les données sont chiffrées à la volée, tout est transparent pour l'utilisateur, mais
cependant il y a un coût machine pour le chiffrement qui est négligeable, tant que la
fonction première de votre machine n'est pas serveur de fichiers.
Initialiser la partition
Exemple sur une partition libre /dev/hda7 :
sudo cryptsetup luksFormat -c aes -h sha256 /dev/hda7
ou avec un cryptage plus fort :
sudo cryptsetup luksFormat -c aes-xts-plain -s 512 /dev/hda7
On invoque cette commande pour formater la partition au type LUKS (initialiser la
partition LUKS et définir la clé initiale). Le chiffrage sera de type AES avec un
Sauvegarde et cryptage des données sur disque USB externe 2013
25
algorithme de hachage SHA256. Vous allez taper votre phrase de chiffrage qui va
permettre de créer un conteneur standard chiffré à l'aide de votre phrase.
Le conteneur chiffré de manière standard va stocker la clé de chiffrage maître qui servira
à ouvrir votre volume sécurisé. Il est possible d'ajouter jusqu'à 8 clefs supplémentaires
dans des "slots", qui déverrouillent l'accès à la clef maître. Vous pouvez ainsi avec cette
méthode avoir plusieurs utilisateurs qui vont chacun ouvrir le conteneur chiffré avec leur
clef, et il vous sera possible de révoquer les clés éventuellement compromises.
Pour ajouter une clé d'accès au conteneur chiffré précédent :
sudo cryptsetup luksAddKey /dev/hda7
Pour voir l'état du conteneur chiffré et les "slots" utilisés :
sudo cryptsetup luksDump /dev/hda7
Pour révoquer une clé contenue dans un "slot" :
sudo cryptsetup luksKillSlot /dev/hda7 <numero_de_slot>
Montage manuel et formatage
Ouverture et formatage en ext3 de la partition chiffrée. L'appellation du volume est ici
home.
sudo cryptsetup luksOpen /dev/hda7 home
sudo mkfs.ext3 /dev/mapper/home
Puis montage de la partition :
sudo mount -t ext3 /dev/mapper/home /mnt/
Puis démontage et fermeture du volume chiffré :
sudo umount /mnt
sudo cryptsetup luksClose home
Aparté sur la transformation de fichiers en volumes
Pour générer un fichier de nom big de 10 Mo :
dd if=/dev/urandom bs=1M count=10 of=big
Pour éviter de dévoiler des informations, cette commande remplit le fichier avec du
contenu aléatoire (/dev/urandom/). Cette opération est horriblement lente (quelque
MiB/s). Utilisez Truecrypt pour générer un volume dans un fichier, la génération du
fichier est beaucoup plus rapide et continuez ensuite normalement ce tutoriel.
Sauvegarde et cryptage des données sur disque USB externe 2013
26
Pour transformer le fichier en volume (sur Dapper, remplacer /dev/loop0 par /dev/loop/0)
:
sudo losetup /dev/loop0 big
Pour déconnecter le volume du fichier (sur Dapper, remplacer /dev/loop0 par
/dev/loop/0) :
sudo losetup -d /dev/loop0
Ces informations vous permettront d'utiliser dm-crypt sur des systèmes de fichiers
embarqués dans des fichiers.
Montage automatique
Depuis Dapper, Ubuntu intègre la gestion des volumes chiffrée LUKS en standard, ce
qui permet de gérer de manière automatique le montage et le démontage de vos volumes
(partitions) sécurisées. La configuration des paramètres du volume chiffré est dans le
fichier /etc/crypttab et le montage du volume est de manière classique dans /etc/fstab.
Un exemple de chiffrement du dossier /home:
Modifier le fichier /etc/crypttab :
# <target name> <source device> <key file> <options>
home /dev/hda7 none luks
Modifier /etc/fstab pour le volume qui nous intéresse :
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/home /home ext3 defaults 0 1
La clé d'ouverture du volume chiffré vous sera demandée au démarrage de la machine si
votre partition est montée automatiquement (voir fstab).
Attention, si une ligne est déjà présente pour le montage de la partition qui héberge le
système de fichier chiffré (/dev/hda7 dans l'exemple ci-dessus), il faut la commenter (en
ajoutant un # comme premier caractère) pour éviter un message d'erreur au démarrage.
Ouverture automatique du conteneur chiffré au démarrage à l'aide d'un support
amovible
On peut grâce à LUKS monter automatiquement les partitions chiffrées au démarrage
sans mot de passe à taper. Ceci est possible par l'intermédiaire d'une clé USB ou d'une
carte SD ou MS :
Sauvegarde et cryptage des données sur disque USB externe 2013
27
http://web.archive.org/web/20100110234521/http://petaramesh.org/post/2007/11/29/Une-
cle-de-contact-pour-votre-portable-chiffre
Suivre la procédure indiquée plus haut, mais modifier le fichier /etc/crypttab :
# <target name> <source device> <key file> <options>
home /dev/hda7 /dev/sda:/keyfile:1
luks,keyscript=/lib/cryptsetup/scripts/passdev
home /dev/hda7 none luks
De cette manière, le système va tenter de déchiffrer la partition /dev/hda7 au moyen du
fichier clé "keyfile" se trouvant sur le périphérique /dev/sda (en FAT par exemple). Le
"1" représente le temps d'attente avant de demander le mot de passe si le fichier clé n'est
pas trouvé.
ou
Pour les versions plus récentes d'Ubuntu (10.04 et plus) : http://wejn.org/how-to-make-
passwordless-cryptsetup.html#28bd9ec7b2f9ea74ea0499586bde727c
Ouverture et montage automatique de la partition chiffrée à l'ouverture de session,
sans support amovible ni passphrase
Les techniques exposées plus haut offrent un haut niveau de sécurité pour peu que la
passphrase de LUKS ait été bien choisie. Cependant, elles sont également assez lourdes,
dans la mesure où elles nécessitent que l'utilisateur rentre à chaque démarrage sa
passphrase (ou qu'il porte sur lui en permanence le support amovible permettant
l'ouverture du conteneur chiffré). La méthode proposée ici va permettre d'ouvrir
automatiquement le conteneur chiffré et de monter la partition chiffrée au démarrage de
la session, sans que la passphrase ne soit saisie. La partition chiffrée n'est donc plus
protégée que par le mot de passe d'ouverture de session.
La passphrase de la partition cryptée et le mot de passe associé au compte doivent être
les mêmes (PAM ne fait que "passer" le mot de passe de session pour le montage de la
partition), cela a donc des implications lorsque le mot de passe de l'utilisateur doit être
changé : il faut au préalable rajouter une passphrase (identique au nouveau mot de passe)
dans un nouveau "slot" et une fois que cela est validé, supprimer l'ancienne passphrase.
Le niveau de sécurité est donc plus bas, mais le chiffrement devient parfaitement
transparent pour l'utilisateur. Cette solution convient donc bien si vous souhaitez
simplement protéger vos données personnelles en cas de vol de votre machine par un
quidam quelconque, mais peut-être pas si vous avez des documents vraiment
confidentiels à protéger.
Nous allons utiliser PAM, utilitaire habituellement utilisé pour le montage automatique
de partitions sur des postes multi-utilisateurs.
Sauvegarde et cryptage des données sur disque USB externe 2013
28
La situation est la suivante : la partition /dev/sda2 est notre partition cryptée. Elle doit
être montée automatiquement au point /mnt/cryptodisk. Les opérations suivantes ont
donc été effectuées au préalable :
#Création du containeur chiffré. Attention, la partition ne doit pas
être montée. De plus, toute donnée présente sur cette partition sera
perdue :
sudo cryptsetup luksFormat /dev/sda2
#Ouverture du containeur nouvellement créé, à qui on donne le nom de
"cryptodisk":
sudo cryptsetup luksOpen /dev/sda2 cryptodisk
#Création du système de fichier ext3 sur cette partition chiffrée :
sudo mkfs.ext3 /dev/mapper/cryptodisk
#Création du point de montage :
sudo mkdir /mnt/cryptodisk
#Définition du point de montage: Dans le fichier /etc/fstab, notez
l'option
#"noauto" qui permet de faire apparaître la partition dans le fichier
fstab
#sans pour autant la monter automatiquement au démarrage
/dev/mapper/cryptodisk /mnt/cryptodisk ext3
defaults,noauto 0 0
#Et on s'arrête là. Ne RIEN ajouter dans le fichier /etc/cryptab
Notre partition chiffrée est à présent créée, formatée, et un point de montage a été défini.
Il ne reste plus qu'à indiquer à PAM de la monter automatiquement à chaque ouverture de
session (sans demande de la passphrase donc).
#Installation de la librairie :
sudo apt-get install libpam-mount
Indication à PAM de la partition à monter : Éditer le fichier
/etc/security/pam_mount.conf.xml. Au début du fichier, après la première balise <pam-
mount>, ajouter la ligne suivante :
<volume user="*" mountpoint="/mnt/cryptodisk" path="/dev/sda2"
fstype="crypt" />
La partition /dev/sda2 de type "crypt" (partition cryptée) sera montée à l'ouverture de
session sans demande de la phrase-pass sur le point de montage /mnt/cryptodisk, et ce
quel que soit l'utilisateur qui se connecte (et dont le mot de passe de session correspond à
une passphrase de la partition).
Et pour finir, il suffit d'indiquer à gdm (dans le cas de Gnome) ou kdm (pour KDE)
d'appeler PAM. Ouvrir ainsi dans le cas de Gnome le fichier /etc/pam.d/gdm, et ajouter à
la fin de ce fichier la ligne
Sauvegarde et cryptage des données sur disque USB externe 2013
29
@include common-pammount
Remarque : ceci n'est plus utile depuis Jaunty.
Et voilà ! Il ne vous reste plus qu'à redémarrer votre machine, et à l'ouverture de session
la partition chiffrée sera ouverte et montée automatiquement, sans que la passphrase ne
vous soit demandée. Bien entendu, si vous avez au préalable désactivé l'authentification
pour l'ouverture de la session, cela ne sert pas à grand chose d'avoir une partition chiffrée
(car alors l'authentification étant désactivée, la session est ouverte automatiquement à
chaque démarrage et la partition chiffrée est également ouverte et montée
automatiquement et sans passphrase à chaque démarrage).
Remarque: méthode testée et approuvée sous Ubuntu 10.04
Réglage de la priorité d'exécution
Par défaut le niveau de priorité du démon de chiffrage est trop élevé et peut induire des
ralentissements gênants. Vous pouvez modifier cette priorité à l'aide de la commande
renice :
sudo renice 10 `pgrep kcryptd`
Pour exécuter cette commande à chaque démarrage, il faut la placer dans le fichier
/etc/rc.local avant la ligne exit 0 sans sudo car c'est le système avec les droits
administrateur qui l'exécutera.
#!/bin/sh -e
#
renice 10 `pgrep kcryptd`
exit 0
Chiffrer la swap
Il peut être utile de chiffrer la swap si vous voulez chiffrer votre disque sans LVM.
Créer une partition de base
Pour cela, il faut créer une partition de swap classique.
Je ne suis pas sûr que ce soit nécessaire que la partition soit une swap, mais lorsque je l'ai
fait, c'en était une et ça marchait. Donc si quelqu'un pouvait préciser …
crypttab
J'ai pris la commande dans le crypttab de la page du manuel. Il faut donc ajouter dans
/etc/crypttab :
Sauvegarde et cryptage des données sur disque USB externe 2013
30
cryptoswap /dev/sdXX /dev/urandom cipher=aes-cbc-
essiv:sha256,hash=ripemd160,size=256,swap
Où sdXX est le nom de votre swap. Vous pouvez l'obtenir en faisant
sudo blkid
Ou en regardant sur gparted ou l'utilitaire de disques. Ceci va créer le système
/dev/mapper/cryptoswap.
fstab
Il faut maintenant monter ce système dans /etc/fstab :
/dev/mapper/cryptoswap none swap sw 0 0
Et voilà, le tour est joué, il ne reste plus qu'à redémarrer. La swap sera alors montée et
chiffrée par une clé aléatoire.
Conclusion
Le nouveau système de gestion des volumes chiffrés est très bien implémenté dans
Dapper. Il permet notamment de sécuriser votre /home sans manipulation complexe autre
que de renseigner la passphrase lors du démarrage.
Spécificité Edgy
Le fait de chiffrer votre dossier /home (par exemple) nécessite de taper la clé d'ouverture
du volume chiffré lors de la séquence de démarrage de l'ordinateur, mais sous Edgy le
système de boot n'est plus séquentiel comme sur Dapper, ce qui entraîne pour l'heure que
le lancement de Xorg (le serveur graphique) n'attendra pas que vous ayez tapé votre clé
d'ouverture du volume.
Une des solutions pour l'heure est d'installer sysvinit avec Synaptic au lieu d'Upstart (le
nouveau système de démarrage, intégré dans Edgy).
Sous Windows
Grâce au logiciel FreeOTFE, il est possible de monter de façon non permanente une
partition LUKS encryptée par Cryptsetup sous Linux à partir de votre système Windows.
Pour monter et utiliser le même type de partition que celle décrite dans ce wiki, voici les
étapes :
1. Télécharger FreeOTFE ici
Sauvegarde et cryptage des données sur disque USB externe 2013
31
2. Extraire les fichiers de l'archive dans un dossier et ouvrir FreeOTFE.exe
3. Lorsqu'on vous demande si vous voulez démarrer FreeOTFE en portable mode, dites
oui. Si vous voulez utiliser FreeOTFE régulièrement afin de monter des volumes cryptés
sous Windows, vous pouvez cliquer sur non et activer de façon permanente tous les
pilotes de cryptage un par un.
4. Cliquez ensuite sur File / Linux volume / Mount partition
5. Choisissez la partition qui est encryptée sur votre disque dur
6. Dans la grande case, entrez votre clé secrète, puis cliquez sur Ok
7. Si vous avez choisi la bonne partition et la bonne clé, le programme détectera
l'encryptage correspondant et vous offrira une liste des pilotes pouvant monter le volume.
Faites votre choix.
8. Si tout s'est bien passé, vous avez un nouveau lecteur dans votre poste de travail !
Notes importantes
Ce volume ne survivra pas à un redémarrage, il faudra tout reprendre de zéro à chaque
fois.
Si vous fermez FreeOTFE alors qu'il est en mode portable, vous devez lui spécifier de ne
pas désactiver les pilotes d'encryptage afin de ne pas perdre l'usage de votre partition.
Avant de fermer votre ordinateur, il est recommandé de démonter la partition à l'aide de
FreeOTFE et de lui permettre de désactiver tous les pilotes à sa fermeture.
Si votre système de fichier est ext2 ou ext3, Windows ne sera pas capable de lire le
contenu de votre partition, sauf si vous installez le Ext2 IFS For Windows. Attention
toutefois, ce pilote pour Windows ne prend pas en charge les droits d'accès et la
journalisation. Pour du partage entre Windows et Linux, le Fat32 est plus conseillée.
Liens
Une bonne référence : https://wiki.ubuntu.com/EncryptedFilesystemHowto
Un 'howto' expliquant étape par étape comment mettre en œuvre LUKS pour
construire un système sûr: A startup key to protect my data
Tutoriel d'installation d'une Ubuntu utilisant cryptsetup
Sauvegarde et cryptage des données sur disque USB externe 2013
32
Bibliographie
1. Cryptographic key recovery from Linux memory dumps
2. Encrypted File System Howto (dm-crypt)
3. Partition chiffrée avec Cryptsetup
4. Le chiffrement de disque sous linux : Vrai ou faux sentiment de sécurité ?
5. Disk Encryption on Linux
6. Chiffrement des portables
7. Recommandations pour la protection des données et le chiffrement
8. Chiffrage transparent des données sous Linux
9. Besoins en matière de chiffrement et recommandations