GNU/Linux >> Tutoriels Linux >  >> Debian

Comment chiffrer des répertoires/partitions avec eCryptfs sur Debian 8 (Jessie)

eCryptfs est un système de fichiers cryptographiques empilés de classe entreprise conforme à POSIX pour Linux. Vous pouvez l'utiliser pour chiffrer des partitions ainsi que des répertoires qui n'utilisent pas de partition propre, quel que soit le système de fichiers sous-jacent, le type de partition, etc. Ce tutoriel montre comment utiliser eCryptfs pour chiffrer un répertoire sur Debian Jessie.

1 Remarque préliminaire

Dans ce didacticiel, je chiffrerai mon répertoire personnel, /home/falko/, qui se trouve sur la partition / (c'est-à-dire que /home/falko/ est un répertoire ordinaire et n'utilise pas sa propre partition).

2 Installer eCryptfs

eCryptfs peut facilement être installé comme suit :

apt-get -y install ecryptfs-utils

3 Chiffrer un répertoire

Je vais maintenant chiffrer mon répertoire personnel /home/falko/. Comme il y a déjà des fichiers (non cryptés) dans ce répertoire, je dois en faire une sauvegarde afin de pouvoir les restaurer ultérieurement dans le répertoire /home/falko/ alors crypté (sinon ces fichiers ne peuvent pas être consultés/lus tant que le répertoire est crypté):

cp -pfr /home/falko/ /tmp/

Je peux maintenant chiffrer le répertoire /home/falko/ en le montant avec le type de système de fichiers ecryptfs :

mount -t ecryptfs /home/falko /home/falko

Lorsque vous faites cela pour la première fois, vous devrez répondre à quelques questions :

[email protected]:/tmp# mount -t ecryptfs /home/falko /home/falko
Select key type to use for newly created files:
1) tspi
2) passphrase
Selection: <-- 2
Passphrase: <-- Enter a secure password
Select cipher:
1) aes: blocksize = 16; min keysize = 16; max keysize = 32
2) blowfish: blocksize = 8; min keysize = 16; max keysize = 56
3) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24
4) twofish: blocksize = 16; min keysize = 16; max keysize = 32
5) cast6: blocksize = 16; min keysize = 16; max keysize = 32
6) cast5: blocksize = 8; min keysize = 5; max keysize = 16
Selection [aes]: <-- Press ENTER
Select key bytes:
1) 16
2) 32
3) 24
Selection [16]: <-- Press ENTER
Enable plaintext passthrough (y/n) [n]: <-- Press ENTER
Enable filename encryption (y/n) [n]: <-- Press ENTER
Attempting to mount with the following options:
ecryptfs_unlink_sigs
ecryptfs_key_bytes=16
ecryptfs_cipher=aes
ecryptfs_sig=bd28c38da9fc938b
WARNING: Based on the contents of [/root/.ecryptfs/sig-cache.txt],
it looks like you have never mounted with this key
before. This could mean that you have typed your
passphrase wrong.
Would you like to proceed with the mount (yes/no)? : <-- yes
Would you like to append sig [bd28c38da9fc938b] to
[/root/.ecryptfs/sig-cache.txt]
in order to avoid this warning in the future (yes/no)? : <-- yes
Successfully appended new sig to user sig cache file
Mounted eCryptfs
[email protected]:/home/administrator#

Jetez un oeil à la sortie de

mount

et vous devriez voir que /home/falko/ est maintenant crypté :

Restaurons notre sauvegarde dans le répertoire désormais chiffré /home/falko/ et supprimons ensuite la sauvegarde :

cp -pfr /tmp/falko/ /home/
rm -fr /tmp/falko/

À des fins de test, copions un autre fichier, par ex. /etc/hosts, vers /home/falko/ pour vérifier s'il est vraiment crypté :

cp /etc/hosts /home/falko

Alors que /home/falko/ est monté avec le type de système de fichiers ecryptfs, il devrait être possible de lire le contenu de /home/falko/hosts :

cat /home/falko/hosts

Démontez maintenant /home/falko/...

umount /home/falko

... et réessayez de lire /home/falko/hosts, et vous devriez obtenir des informations cryptées :

cat /home/falko/hosts

 

4 Comment monter automatiquement une partition chiffrée au démarrage

Bien sûr, nous ne voulons pas monter /home/falko/ manuellement à chaque fois - ce serait mieux s'il pouvait être monté automatiquement au démarrage. Pour ce faire, nous avons besoin d'un fichier de phrase secrète, et pour des raisons de sécurité, je souhaite que ce fichier de phrase secrète soit situé sur une clé USB.

Branchez une clé USB et lancez

fdisk -l

pour connaître son nom d'appareil et son type de système de fichiers :

[email protected]:~# fdisk -l

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00035e35

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        3793    30461952   83  Linux
/dev/sda2            3793        3917      992257    5  Extended
/dev/sda5            3793        3917      992256   82  Linux swap / Solaris

Disk /dev/sdb: 8086 MB, 8086617600 bytes
255 heads, 63 sectors/track, 983 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000e439f

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         983     7895916    b  W95 FAT32
[email protected]:~#

Dans mon cas, le nom du périphérique est /dev/sdb1, et il utilise un système de fichiers FAT32.

Montons la clé USB sur /mnt/usb :

mkdir /mnt/usb
mount /dev/sdb1 /mnt/usb

Jetez un oeil à la sortie de

mount

... et vous devriez voir qu'il a été monté avec le type de système de fichiers vfat (FAT32) - nous aurons besoin de ces informations plus tard pour notre fichier /etc/fstab :

[email protected]:~# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=124251,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,relatime,size=202132k,mode=755)
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=23,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
rpc_pipefs on /run/rpc_pipefs type rpc_pipefs (rw,relatime)
/dev/sdb1 on /mnt/usb type vfat (rw)
[email protected]:~#

Examinez maintenant le contenu de /root/.ecryptfs/sig-cache.txt :

cat /root/.ecryptfs/sig-cache.txt
bd28c38da9fc938b

Nous avons besoin de cette signature pour le fichier /root/.ecryptfsrc que nous créons comme suit :

nano /root/.ecryptfsrc

Assurez-vous d'utiliser la signature du fichier /root/.ecryptfs/sig-cache.txt dans la ligne ecryptfs_sig :

key=passphrase:passphrase_passwd_file=/mnt/usb/passwd_file.txt
ecryptfs_sig=bd28c38da9fc938b
ecryptfs_cipher=aes
ecryptfs_key_bytes=16
ecryptfs_passthrough=n
ecryptfs_enable_filename_crypto=n

Nous créons maintenant le fichier de phrase secrète sur notre clé USB :

nano /mnt/usb/passwd_file.txt
passphrase_passwd=some_passphrase

Assurez-vous d'utiliser la phrase secrète correcte, c'est-à-dire la phrase secrète que vous utiliseriez si vous montiez le répertoire manuellement.

Ouvrez ensuite /etc/fstab...

nano /etc/fstab

... et ajoutez les deux lignes suivantes (assurez-vous d'utiliser le bon type de système de fichiers pour votre clé USB - vfat dans mon cas) :

[...]
/dev/sdb1       /mnt/usb        vfat    ro      0 0
/home/falko /home/falko ecryptfs defaults 0 0

(Il est important que la ligne de la clé USB vienne avant la ligne de la partition chiffrée car la clé USB doit être montée avant que la partition chiffrée ne puisse être montée !)

Redémarrez ensuite le système :

reboot

Si tout se passe bien, votre partition cryptée devrait être automatiquement montée après le redémarrage. Cependant, il est possible que votre système ne puisse pas monter votre clé USB lors du démarrage, ce qui signifie que votre partition chiffrée ne peut pas non plus être montée. Si cela se produit, éditez /etc/rc.local (ce script est exécuté à la fin du processus de démarrage)...

nano /etc/rc.local

... et ajoutez la ligne /bin/mount -a avant la ligne exit 0 :

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/bin/mount -a
exit 0

Cela (re-)montera toutes les partitions (y compris votre clé USB et la partition chiffrée) à la fin du processus de démarrage.

  • eCryptfs :https://launchpad.net/ecryptfs
  • Debian :http://www.debian.org/

Debian
  1. Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

  2. Debian – Déplacer /var, /home vers une partition séparée ?

  3. Comment changer les points de montage ?

  4. Quand dois-je utiliser /dev/shm/ et quand dois-je utiliser /tmp/?

  5. Pourquoi les répertoires /home, /usr, /var, etc. ont-ils tous le même numéro d'inode (2) ?

Comment chiffrer des répertoires avec eCryptfs sur Ubuntu 16.04

Comment chiffrer vos données avec EncFS sur Debian 8 (Jessie)

Comment rechercher vos fichiers ou répertoires avec la commande Find sous Linux

Comment chiffrer des partitions Linux avec VeraCrypt sur Debian 10

Comprendre les fichiers /proc/mounts, /etc/mtab et /proc/partitions

Les sites Web doivent-ils vivre dans /var/ ou /usr/ selon l'utilisation recommandée ?