===== Protection des données stockées CLI Linux ===== {{:systeme:linux_logo.jpeg?nolink&100 |}}J'ai déjà parlé d'outils qui permette de protéger vos données [[news:proteger-ces-donnees-avec-5-outils-de-chiffrement-sur-linux|ici]], Je voudrai faire un petit complément d'information.\\ Pourquoi, protéger vos données me rediriez-vous?\\ On peut mettre des droits particulier, sur nos fichiers et répertoires.\\ Les permissions standard sur le système de fichiers permettent de se protéger des accès inopportuns.\\ Un problème demeure toutefois, quiconque a un accès direct au disque dur depuis un système d'exploitation tiers, en remontant le disque dans une nouvelle machine par exemple ou plus simplement en démarrant sur un live-cd, peut accéder aux données en court-circuitant toutes les permissions en place sur les fichiers.\\ je vais cette fois vous proposez de le faire à différent niveaux fichiers, disque ou partition et filesystem.\\ ~~READMORE~~ ==== 1. Protection au niveau fichier ==== La solution la plus simple et la plus souple pour protéger un fichier sensible est de le chiffrer directement : un nouveau fichier chiffré est donc généré, à la place ou en plus du fichier d'origine.\\ Bon, j'avoue que cette parti je l'ai déjà abordé, je vais juste ajouté un outils en plus ''crypt'' (certes archaïque).\\ Penser a installer ''dmcrypt '':\\ Alors, pour commencer il nous faut un fichier non chiffré.\\ ~# echo ksh veux dire korn shell > public On chiffre le contenu du fichier public et on envoie le résultat vers un fichier secret.\\ Notez les redirections d'entrées et de sorties standard. ~# crypt < public > secret Unix crypt(1) emulation program using mcrypt(1). Use crypt -h for more help. Enter the passphrase (maximum of 512 characters) Please use a combination of upper and lower case letters and numbers. Enter passphrase: Enter passphrase: Stdin was encrypted. On supprime le fichier non chiffré et on vérifie le caractère impénétrable du fichier protégé. ~# rm public ~# file secret secret: data ~# cat secret ▒▒▒?]▒.▒)▒▒19▒▒▒[▒L▒▒ On déchiffre le contenu du fichier ''secret'' pour retrouvé le contenu en claire: ~# crypt < secret Unix crypt(1) emulation program using mcrypt(1). Use crypt -h for more help. Enter the passphrase (maximum of 512 characters) Please use a combination of upper and lower case letters and numbers. Enter passphrase: Enter passphrase: ksh veux dire korn shell Stdin was encrypted. l’inconvénient de cette méthode est que l'utilisateur est obliger de déchiffrer manuellement le fichier à chaque fois qu'il veut consulter ou modifier les données.\\ Sans oublier de le chiffrer à nouveau ensuite. ==== 2. Protection au niveau disque ou partition ==== une autres solution est de gérer le chiffrage directement au niveau des blocs du disque.\\ Les accès au disque sont chiffrés au plus près du matérielle, le filesystem ordinaire utilisé provoque l'écriture des blocs de données qui sont alors chiffrés par le mécanisme de protection du disque.\\ L'accès est transparent pour l'utilisateur, il enregistre un fichier sur son disque protégé et le système se charge de chiffrer les blocs au moment de leur écriture et de les déchiffrer à la volée lors de leur lecture. On chiffre la totalité d'une ou de plusieurs partitions physiques ou logiques, mais en laissant toujours non chiffrée la partition hébergeant le noyau, Si vous voulez amorcer votre système. Je vais utilisé l'outil ''cryptsetup'', j'ai préparé la partition ''sdb1'' qu'on ne peut pas lire normalement.\\ === 2.1. Préparation de la partition ''sdb1'' : === ~# cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 /dev/sdb1 On invoque cette commande pour formater la partition au type LUKS (initialiser la partition LUKS et définir la clé initiale).\\ Le conteneur chiffré de manière standard va stocker la clé de chiffrement maître qui servira à ouvrir votre volume chiffré.\\ 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. ~# mount /dev/sdb1 /mnt mount : unknown filesystem type 'crypto_LUKS' === 2.2. Montage manuel et formatage === On crée un fichier spécial de type bloc à partir de la partition chiffrée.\\ Il est nécessaire pour cela de renseigner la clé de chiffrement.\\ Ouverture et formatage en ext4 de la partition chiffrée.\\ L'appellation du volume est ici ''perso'' cryptsetup luksOpen /dev/sdb1 perso Entrez la phrase de passe pour /dev/sdb1 : Formatage de la partition en ''ext4'' : mkfs.ext4 /dev/mapper/perso Puis montage de la partition : mount -t ext4 /dev/mapper/perso /mnt/ Le filesystem monté de type ordinaire, ne permet pas de savoir qu'on est sur un support physique chiffré.\\ Démontage et fermeture du volume chiffré : umount /mnt cryptsetup luksClose perso ==== 3. Protection au niveau filesystem ==== Le meilleur compromis entre souplesse et efficacité sera apporté par le chiffrement au niveau du filesystem.\\ On pourra limiter les données chiffrées à celles contenu dans un filesystem monté, ce qui, du point de vue de l'utilisateur, reviendra à disposer d'un répertoire chiffré.\\ La plupart des distributions Linux courantes proposent aujourd'hui de chiffrer le répertoire utilisateur ''home''. La simplicité de mise en œuvre et d'exploitation des solutions de chiffrement au niveau filesystem justifie également leur popularité grandissante. Nous aborderons cette technologie par la solution la plus répandue ''ecryptfs''. Le principe est d'exploiter un répertoire généralement caché, généralement, pour y stocker les données chiffrés.\\ Ce répertoire sera monté comme un filesystem ''ecryptfs'', le répertoire chiffré reste consultable, mais évidement sans intérêt sous sa forme direct.\\ Toute opération de montage ecryptfs doit être validé par un mot de passe. Il faut installer le package ''ecryptfs-utils'' Dans un premiers temps nous allons créer un répertoire de données : ~# mkdir .perso perso Puis montage ecryptfs, vous devrez répondre à quelques question : ~# mount -t ecryptfs .perso /mnt Select key type to use for newly created files: 1) tspi 2) passphrase Selection: 2 Passphrase: 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]: 2 Select key bytes: 1) 16 2) 32 3) 56 Selection [16]: 3 Enable plaintext passthrough (y/n) [n]: Enable filename encryption (y/n) [n]: Attempting to mount with the following options: ecryptfs_unlink_sigs ecryptfs_key_bytes=56 ecryptfs_cipher=blowfish ecryptfs_sig=53013ee4f02a1993 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 [53013ee4f02a1993] to [/home/test/.ecryptfs/sig-cache.txt] in order to avoid this warning in the future (yes/no)? : no Not adding sig to user sig cache file; continuing with mount. Mounted eCryptfs Exploitation du filesystem : ~# cd /mnt ~# echo test > test ~# cat test test Démontage et essai de visualisation : ~# umount /mnt ~# cd .perso ~# ls -l total 12 -rw-r--r-- 1 test test 12288 nov. 7 22:34 test ~# file test test: data ~# cat test x▒?▒!8 ͱ@@▒ =▒▒ r▒▒▒▒f▒▒3▒\▒/▒^▒▒▒▒0Pr!▒Z▒6^▒{M/▒CE▒d9▒▒▒/5e}▒▒%▒▒pҙ▒▒?▒▒�▒ r▒▒=▒▒▒▒U▒^N[▒▒▒▒▒▒▒j▒▒>▒KzS8p▒I3▒l▒D▒▒V(;▒▒▒>�>▒MlI▒Sm$@H▒ӔXu▒^▒▒r,&▒▒p鄙▒▒4▒4i▒▒y▒}▒V5S⿕cX▒▒G▒▒d▒8[yu} C+5▒%[▒5▒▒NU▒tRrϱ#▒▒;▒bo]J▒4▒$▒S▒▒▒'▒7▒j▒▒yK▒▒▒▒▒▒▒<▒▒▒G\▒k▒r source : [[http://doc.ubuntu-fr.org/cryptsetup|ubuntu-fr.org]]