Comment créer un système de fichiers crypté sur un volume de stockage en bloc DigitalOcean

introduction

DigitalOcean Les volumes sont des périphériques de stockage en bloc évolutifs, basés sur SSD. Les volumes vous permettent de créer et d’augmenter la capacité de stockage de votre infrastructure sans avoir à redimensionner vos gouttelettes.

Les volumes sont chiffrés au repos, ce qui signifie que les données d’un volume ne sont pas lisibles en dehors de son cluster de stockage. Lorsque vous attachez un volume à un Droplet, un dispositif de stockage en bloc déchiffré est présenté à Droplet et toutes les données sont transmises sur des réseaux isolés.

Pour plus de sécurité, vous pouvez également créer un système de fichiers sur un disque crypté https://gitlab.com/cryptsetup/cryptsetup/blob/master/README.md[LUKS de votre volume. Cela signifie que le disque devra être déchiffré par le système d’exploitation de votre Droplet afin de pouvoir lire les données.

Ce tutoriel explique comment:

  • Créez un disque crypté protégé par mot de passe sur votre volume contenant un système de fichiers.

  • Montez manuellement le système de fichiers chiffré pour l’utiliser, puis démontez-le et fixez-le à nouveau lorsque vous avez terminé.

  • Montez automatiquement le système de fichiers au démarrage de Droplet.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de:

  • Un Volume attaché à un https: //www.digitalocean. com / communauté / tutoriels / comment-créer-votre-premier-digitalocean-droplet [Droplet].

Étape 1 - Création du disque crypté

+ cryptsetup + est un utilitaire utilisé pour gérer les volumes LUKS en plus d’autres formats cryptés. Pour commencer, utilisez + cryptsetup + pour initialiser un disque chiffré sur votre volume.

sudo cryptsetup -y -v luksFormat /dev/disk/by-id/scsi-0DO_Volume_

Assurez-vous de remplacer ++ par https://www.digitalocean.com/community/tutorials/how-to-partition-and-format-digitalocean-block-storage-volumes-in-linux#working-with-volumes -on-digitalocean [le nom de votre volume]. L’indicateur + -y + vous obligera à saisir votre phrase secrète deux fois lorsque vous êtes invité à la créer. L’indicateur + -v + ajoute une sortie lisible par l’homme supplémentaire pour vérifier le succès de la commande.

La sortie vous demandera de confirmer en écrasant les données sur le volume. Tapez + YES en majuscules, puis appuyez sur` + ENTER` pour continuer.

OutputWARNING!
========
This will overwrite data on /dev/disk/by-id/scsi-0DO_Volume_ irrevocably.

Are you sure? (Type uppercase yes):

Ensuite, la sortie vous invitera à créer une phrase secrète pour le disque crypté. Entrez une phrase secrète unique forte et vérifiez-la en la saisissant une seconde fois. Cette phrase secrète * n’est pas récupérable *, conservez-la donc enregistrée.

Output. . .
Enter passphrase:
Verify passphrase:
Command successful.

Si vous en avez besoin, vous pouvez modifier cette phrase secrète à l’avenir avec la commande + cryptsetup luksChangeKey +. Vous pouvez également ajouter jusqu’à 8 phrases secrètes supplémentaires par périphérique avec + cryptsetup luksAddKey +.

À ce stade, votre disque est créé et crypté. Ensuite, décryptez-le et mappez-le en https://www.digitalocean.com/community/tutorials/an-inintroduction-to-storage-terminology-and-concepts-in-linux#how-linux-manages-storage-devices [label] pour faciliter le référencement. Ici, nous l’appelons + secure-volume +, mais vous pouvez l’étiqueter avec tout ce que vous voulez.

sudo cryptsetup luksOpen /dev/disk/by-id/scsi-0DO_Volume_

Vous serez invité à entrer la phrase secrète. Une fois que vous l’avez entré, le volume sera désormais mappé sur + / dev / mapper / secure-volume +.

Pour vous assurer que tout fonctionne, vérifiez les détails du disque crypté.

cryptsetup status

Vous verrez une sortie comme celle-ci indiquant l’étiquette et le type de volume.

Output/dev/mapper/ is active.
 type:    LUKS1
 cipher:  aes-xts-plain64
 keysize: 256 bits
 device:  /dev/sda
 offset:  4096 sectors
 size:    209711104 sectors
 mode:    read/write

À ce stade, vous disposez d’un disque crypté protégé par une phrase secrète. L’étape suivante consiste à créer un système de fichiers sur ce disque afin que le système d’exploitation puisse l’utiliser pour stocker des fichiers.

Étape 2 - Création et montage du système de fichiers

Voyons d’abord l’espace disque disponible sur le Droplet.

df -h

Vous verrez une sortie similaire à celle-ci, en fonction de votre configuration Droplet:

OutputFilesystem      Size  Used Avail Use% Mounted on
udev            2.0G     0  2.0G   0% /dev
tmpfs           396M  5.6M  390M   2% /run
/dev/vda1        78G  877M   77G   2% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/vda15      105M  3.4M  101M   4% /boot/efi
tmpfs           396M     0  396M   0% /run/user/1000

À l’heure actuelle, + / dev / mapper / + ne figure pas dans cette liste car le volume n’est pas encore accessible à la droplet. Pour le rendre accessible, nous devons créer et monter le système de fichiers.

Utilisez l’utilitaire + mkfs.xfs + ( m a k e f ile s ystem) pour créer un https://en.wikipedia.org/wiki/ Système de fichiers XFS [XFS] sur le volume.

sudo mkfs.xfs /dev/mapper/

Une fois le système de fichiers créé, vous pouvez https://www.digitalocean.com/community/tutorials/how-to-partition-and-format-digitalocean-block-storage-volumes-in-linux#mounting-the-filesystems [mount], ce qui signifie que vous devez le mettre à la disposition du système d’exploitation de votre Droplet.

Créez un point de montage, à l’endroit où le système de fichiers sera attaché. Une bonne recommandation pour un point de montage est un répertoire vide dans le répertoire + / mnt +, nous allons donc utiliser + / mnt / +.

sudo mkdir /mnt/

Puis montez le système de fichiers.

sudo mount /dev/mapper/ /mnt/

Pour vous assurer que cela a fonctionné, vérifiez à nouveau l’espace disque disponible sur votre Droplet.

df -h

Vous verrez maintenant + / dev / mapper / + dans la liste.

OutputFilesystem                 Size  Used Avail Use% Mounted on
udev                       2.0G     0  2.0G   0% /dev
tmpfs                      396M  5.6M  390M   2% /run
/dev/vda1                   78G  877M   77G   2% /
tmpfs                      2.0G     0  2.0G   0% /dev/shm
tmpfs                      5.0M     0  5.0M   0% /run/lock
tmpfs                      2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/vda15                 105M  3.4M  101M   4% /boot/efi
tmpfs                      396M     0  396M   0% /run/user/1000

Cela signifie que votre système de fichiers crypté est attaché et disponible pour utilisation.

Lorsque vous n’avez plus besoin d’accéder aux données du volume, vous pouvez démonter le système de fichiers et verrouiller le disque crypté.

sudo umount /mnt/
sudo cryptsetup luksClose

Vous pouvez vérifier avec + df -h + que le système de fichiers n’est plus disponible. Afin de rendre les données du volume accessibles à nouveau, vous devez suivre les étapes pour ouvrir le disque (+ cryptsetup luksOpen …​ +), créer un point de montage et monter le système de fichiers.

Pour éviter de suivre ce processus manuel chaque fois que vous souhaitez utiliser le volume, vous pouvez plutôt configurer le système de fichiers pour qu’il se monte automatiquement au démarrage de votre Droplet.

Étape 3 - Montage automatique du système de fichiers au démarrage

Le disque crypté peut avoir jusqu’à 8 phrases secrètes. Au cours de cette dernière étape, nous allons créer une clé et l’ajouter sous forme de phrase secrète, puis utiliser cette clé pour configurer le volume à déchiffrer et monter au fur et à mesure que le Droplet s’amorce.

Créez un fichier de clé sur + / root / .secure_key +. Cette commande créera un fichier de 4 Ko avec un contenu aléatoire:

sudo dd if=/dev/urandom of=/root/.secure-key  bs=1024 count=4

Ajustez les autorisations de ce fichier de clé pour qu’il ne soit lisible que par l’utilisateur * root *.

sudo chmod 0400 /root/.secure-key

Ajoutez ensuite la clé en tant que phrase secrète pour le disque chiffré.

cryptsetup luksAddKey /dev/disk/by-id/scsi-0DO_Volume_ /root/.secure-key

Vous serez invité à entrer une phrase secrète. Vous pouvez entrer celui que vous avez défini lors de la création du disque crypté.

+ / etc / crypttab + est un fichier de configuration qui définit les disques chiffrés à configurer au démarrage du système. Ouvrez ce fichier avec + nano + ou votre éditeur de texte préféré.

sudo nano /etc/crypttab

Ajoutez la ligne suivante au bas du fichier pour mapper le volume au démarrage.

/ etc / crypttab

. . .
/dev/disk/by-id/scsi-0DO_Volume_ /root/.secure-key  luks

Le format des lignes dans + / etc / crypttab + est + nom_périphérique chemin_périphérique options_papier +. Ici, le nom du périphérique est + secure-volume + (ou le nom que vous avez choisi à la place), le chemin est + / dev / disk / by-id / +, le fichier de clé est ce que nous venons de créer à + ​​/ root / .secure_key + `, et les options spécifient le chiffrement + luks + `.

Enregistrez et fermez le fichier.

+ / etc / fstab + est un fichier de configuration pour automatiser le montage. Ouvrez ce fichier pour le modifier.

sudo nano /etc/fstab

Ajoutez la ligne suivante au bas du fichier pour monter automatiquement le disque au démarrage.

/ etc / fstab

. . .
/dev/mapper/ /mnt/ xfs  defaults,nofail 0 0

Les trois premiers arguments des lignes dans + / etc / fstab + sont toujours + chemin_périphérique point_montage_fichier_système_fichier +. Ici, nous avons les mêmes chemin d’accès et point de montage qu’à l’étape 2 et nous spécifions le système de fichiers XFS. Vous pouvez en savoir plus sur les autres champs dans la page de manuel de + fstab + (+ man fstab +).

Enregistrez et fermez le fichier. Votre système de fichiers chiffré est maintenant configuré pour monter automatiquement lorsque votre Droplet démarre. Vous pouvez tester cela en redémarrant votre Droplet, mais soyez prudent avec tous les services en cours d’exécution.

Conclusion

Par défaut, les volumes DigitalOcean sont chiffrés lorsqu’ils ne sont pas attachés à un droplet. Dans ce didacticiel, vous avez ajouté une couche de sécurité supplémentaire en plaçant un système de fichiers dans un disque chiffré sur un volume. Vous pouvez créer un disque chiffré, y ajouter des phrases secrètes et le monter manuellement ou automatiquement afin de pouvoir être utilisé dans le droplet.

Pour en savoir plus sur les volumes de stockage de blocs DigitalOcean, consultez la série Mise en route de DigitalOcean Block Storage.

Related