GNU/Linux >> Tutoriels Linux >  >> Linux

Configuration de LUKS :Configuration de la clé unifiée Linux

Selon Wikipedia, Linux Unified Key Setup (LUKS) est une spécification de chiffrement de disque créée par Clemens Fruhwirth en 2004 et était initialement destinée à Linux. LUKS utilise le chiffrement du mappeur de périphérique (dm-crypt ) en tant que module du noyau pour gérer le chiffrement au niveau du périphérique bloc.

Il existe différents outils frontaux développés pour chiffrer les partitions Linux, qu'il s'agisse de partitions simples ou de volumes logiques (LV). Dans ce didacticiel, nous allons explorer ces outils et montrer comment configurer le chiffrement de disque. J'ai créé un disque de 10 Go (/dev/vdb ) à utiliser pendant ce didacticiel.

Installation des outils

Commençons par installer les outils appropriés pour configurer le chiffrement :

dnf install -y cryptsetup parted

Le cryptsetup le paquet fournit le cryptsetup commande, que nous utiliserons pour configurer le chiffrement, tandis que la commande parted package fournit le parted commande de configuration de la partition.

Création de la partition

Exécution de lsblk La commande affiche votre configuration actuelle :

[root@rhel8 ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0            11:0    1 1024M  0 rom  
vda           252:0    0   30G  0 disk 
├─vda1        252:1    0    1G  0 part /boot
└─vda2        252:2    0   29G  0 part 
  ├─rhel-root 253:0    0 26.9G  0 lvm  /
  └─rhel-swap 253:1    0  2.1G  0 lvm  [SWAP]
vdb           252:16   0   10G  0 disk 

Nous pouvons chiffrer un périphérique de bloc entier comme /dev/vdb , mais la création d'une partition offre plus de flexibilité car nous pouvons ajouter d'autres partitions ultérieurement.

Maintenant, nous exécutons les commandes suivantes pour créer une partition à chiffrer :

[root@rhel8 ~]# parted /dev/vdb mklabel msdos
Information: You may need to update /etc/fstab.

[root@rhel8 ~]# parted /dev/vdb -s "mkpart primary 2048s -1"
[root@rhel8 ~]# parted /dev/vdb align-check optimal 1
1 aligned

Lors de l'exécution de lsblk encore une fois, nous voyons que le dev/vdb1 partition a été ajoutée :

[root@rhel8 ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0            11:0    1 1024M  0 rom  
vda           252:0    0   30G  0 disk 
├─vda1        252:1    0    1G  0 part /boot
└─vda2        252:2    0   29G  0 part 
  ├─rhel-root 253:0    0 26.9G  0 lvm  /
  └─rhel-swap 253:1    0  2.1G  0 lvm  [SWAP]
vdb           252:16   0   10G  0 disk 
└─vdb1        252:17   0   10G  0 part 

Formater le volume avec LUKS

Le processus suivant chiffre dev/vdb1 . Pour continuer, vous devez saisir YES en majuscules et indiquez le mot de passe deux fois :

[root@rhel8 ~]# cryptsetup -y -v luksFormat /dev/vdb1 

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

Are you sure? (Type uppercase yes): YES
Enter passphrase for /dev/vdb1: 
Verify passphrase: 
Key slot 0 created.
Command successful.

Ensuite, nous avons besoin d'une cible pour ouvrir le volume chiffré. J'ai utilisé mybackup comme cible, mais cette cible peut porter n'importe quel nom :

[root@rhel8 ~]# cryptsetup -v luksOpen /dev/vdb1 mybackup
Enter passphrase for /dev/vdb1: 
Key slot 0 unlocked.
Command successful.

Exécution de lsblk encore une fois, nous voyons :

[root@rhel8 ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sr0            11:0    1 1024M  0 rom   
vda           252:0    0   30G  0 disk  
├─vda1        252:1    0    1G  0 part  /boot
└─vda2        252:2    0   29G  0 part  
  ├─rhel-root 253:0    0 26.9G  0 lvm   /
  └─rhel-swap 253:1    0  2.1G  0 lvm   [SWAP]
vdb           252:16   0   10G  0 disk  
└─vdb1        252:17   0   10G  0 part  

└─mybackup 253:2 0 10G 0 crypt

Nous pouvons également voir le mybackup mappage du volume chiffré :

[root@rhel8 ~]# ls -l /dev/mapper/mybackup 
lrwxrwxrwx. 1 root root 7 Sep 16 16:10 /dev/mapper/mybackup -> ../dm-2

Créer un système de fichiers

Puisque nous pouvons maintenant accéder au volume chiffré, nous devons le formater avant de pouvoir y stocker des données. Vous pouvez choisir entre différents types de système de fichiers, comme xfs (par défaut sur Red Hat Enterprise Linux 8), ext3, ext4, etc. Par souci de simplicité, nous utiliserons xfs comme type de système de fichiers :

[root@rhel8 ~]# mkfs.xfs /dev/mapper/mybackup

meta-data=/dev/mapper/mybackup   isize=512    agcount=4, agsize=654720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=2618880, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

Création du point de montage et du répertoire

Pour écrire des données sur le système de fichiers chiffré, nous devons d'abord le monter. J'ai choisi /mnt/my_encrypted_backup être le point de montage de mes données :

[root@rhel8 ~]# mkdir -p /mnt/my_encrypted_backup

Ensuite, nous exécutons le mount commande :

[root@rhel8 ~]# mount -v /dev/mapper/mybackup /mnt/my_encrypted_backup/

mount: /mnt/my_encrypted_backup does not contain SELinux labels.
       You just mounted an file system that supports labels which does not
       contain labels, onto an SELinux box. It is likely that confined
       applications will generate AVC messages and not be allowed access to
       this file system.  For more details see restorecon(8) and mount(8).
mount: /dev/mapper/mybackup mounted on /mnt/my_encrypted_backup.

Ici, nous obtenons un avertissement Security-Enhanced Linux (SELinux). Nous devons réétiqueter le contexte de sécurité SELinux du point de montage :

[root@rhel8 ~]# restorecon -vvRF /mnt/my_encrypted_backup/

Relabeled /mnt/my_encrypted_backup from system_u:object_r:unlabeled_t:s0 to system_u:object_r:mnt_t:s0

Exécution du mount commande montre à nouveau que l'avertissement a disparu :

[root@rhel8 ~]# mount -v -o remount /mnt/my_encrypted_backup/
mount: /dev/mapper/mybackup mounted on /mnt/my_encrypted_backup.

Exécution de lsblk produit à nouveau la sortie suivante :

[root@rhel8 ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sr0            11:0    1 1024M  0 rom   
vda           252:0    0   30G  0 disk  
├─vda1        252:1    0    1G  0 part  /boot
└─vda2        252:2    0   29G  0 part  
  ├─rhel-root 253:0    0 26.9G  0 lvm   /
  └─rhel-swap 253:1    0  2.1G  0 lvm   [SWAP]
vdb           252:16   0   10G  0 disk  
└─vdb1        252:17   0   10G  0 part  
  └─mybackup  253:2    0   10G  0 crypt /mnt/my_encrypted_backup

Récupération des détails LUKS

Nous pouvons maintenant vider les informations d'en-tête LUKS, la section de segment de données, les emplacements de clé utilisés, etc. :

[root@rhel8 ~]# cryptsetup luksDump /dev/vdb1 
LUKS header information
Version:       	2
Epoch:         	3
Metadata area: 	12288 bytes
[……]
	Digest:     49 5a 68 e9 b6 66 50 2d c8 22 8e b9 d5 fd 2c af 
	            23 b7 47 f3 2f 62 ee 6a b8 7c 93 8f 19 fe d8 3c 

Ajout d'un fichier clé et montage automatique

Le montage automatique du système de fichiers crypté LUKS a des implications sur la sécurité. Pour les utilisateurs d'ordinateurs portables, ce n'est pas un choix judicieux. Si votre appareil est volé, vos données stockées dans la partition chiffrée le sont également.

Indépendamment de l'implication de sécurité mentionnée ci-dessus, voici comment configurer le montage automatique. Tout d'abord, créez le répertoire approprié pour stocker le fichier clé :

[root@rhel8 ~]# mkdir /etc/luks-keys/; dd if=/dev/random of=/etc/luks-keys/mybackup_key bs=32 count=1
[root@rhel8 ~]#

Ensuite, ajoutez la clé en utilisant le cryptsetup utilitaire :

[root@rhel8 ~]# cryptsetup luksAddKey /dev/vdb1 /etc/luks-keys/mybackup_key
Enter any existing passphrase: 
[root@rhel8 ~]# 

Ensuite, nous devons restaurer le contexte SELinux :

[root@rhel8 ~]# restorecon -vvRF /etc/luks-keys

Relabeled /etc/luks-keys from unconfined_u:object_r:etc_t:s0 to system_u:object_r:etc_t:s0
Relabeled /etc/luks-keys/mybackup_key from unconfined_u:object_r:etc_t:s0 to system_u:object_r:etc_t:s0

Auparavant, nous ouvrions le système de fichiers chiffré et le montions manuellement. Maintenant, nous devons voir si nous pouvons faire la même chose avec l'automatisation. Puisque notre système de fichiers est déjà monté, nous devons d'abord umount (démonter) :

[root@rhel8 ~]# umount /mnt/my_encrypted_backup 
[root@rhel8 ~]# cryptsetup -v luksClose mybackup
Command successful.

Essayons d'ouvrir la partition chiffrée via la ligne de commande en utilisant le fichier comme clé :

[root@rhel8 ~]# cryptsetup -v luksOpen /dev/vdb1 mybackup --key-file=/etc/luks-keys/mybackup_key

Key slot 1 unlocked.
Command successful.

Ensuite, nous devons configurer /etc/crypttab et /etc/fstab pour monter le disque au démarrage. Nous avons d'abord besoin de l'UUID pour /dev/vdb1 (pas /dev/mapper/mybackup ), qui peut être récupéré comme suit :

[root@rhel8 ~]# blkid /dev/vdb1

/dev/vdb1: UUID="46f89586-f802-44f1-aded-f80b16821189" TYPE="crypto_LUKS" PARTUUID="f92dbe33-01"  

Entrez maintenant la ligne suivante dans /etc/crypttab afin que nous puissions ouvrir automatiquement notre système de fichiers chiffré :

mybackup   UUID=46f89586-f802-44f1-aded-f80b16821189 /etc/luks-keys/mybackup_key luks

Avec tout cela, nous pouvons maintenant configurer /etc/fstab . Ajoutez la ligne suivante (en gras) à ce fichier :

[root@rhel8 ~]# vi /_etc_/fstab

#

# /etc/fstab
# Created by anaconda on Thu Aug  8 06:21:57 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/rhel-root   /                       xfs     defaults        0 0
[...]
**/dev/mapper/mybackup /mnt/my_encrypted_backup xfs defaults 0 0**

Et, enfin, nous pouvons tester pour voir si le montage automatique fonctionne sans redémarrer la machine, en utilisant mount -a :

[root@rhel8 ~]# mount -av

/                        : ignored
/boot                    : already mounted
swap                     : ignored
/mnt/my_encrypted_backup : successfully mounted

Dans ce cas, /mnt/my_encrypted_backup a été monté avec succès. Maintenant, redémarrez le système et assurez-vous que le montage automatique fonctionne également au redémarrage.

Réflexions finales

Il existe d'autres options qui peuvent être fournies à cryptsetup , et chacun a des compromis en matière de vitesse et de système de fichiers plus sécurisé. Explorez les options et choisissez ce qui convient le mieux à votre situation.


Linux
  1. Créer un coffre-fort de fichiers chiffré sous Linux

  2. Configuration du stockage local sous Linux avec Stratis

  3. Surveillance de la sécurité sous Linux avec Tripwire

  4. Linux - Utilisation de l'espace avant la 1ère partition de la clé USB en tant que clé Luks ?

  5. Configurer le serveur OpenVPN sur Rocky Linux 8

Comment configurer le dernier Oracle OpenJDK sous Linux

Configurer l'environnement de développement WordPress local sous Linux

Comment configurer SFTP chrooté sous Linux

Installer et configurer Jenkins sous Linux

Comment créer une phrase de passe de clé SSH sous Linux

Comment configurer WireGuard VPN sur Linux