====== Crypter partition pour bacula ====== Pré-requis: **''/dev/xvdb1''** est une partition quelconque. # aptitude install cryptsetup Formater (la 1er fois): # cryptsetup luksFormat /dev/xvdb1 Voir les "slots" utilisés (jusqu'a 8 mots de passe possible): # cryptsetup luksDump /dev/xvdb1 Ajouter un mot de passe: # cryptsetup luksAddKey /dev/xvdb1 Dechiffrer la partition: (un mot de passe est demandé) # cryptsetup luksOpen /dev/xvdb1 disk Preparer le systeme de fichier: # mkfs.ext3 /dev/mapper Mounter la partition: # mount /dev/mapper/disk /mnt/disk Et voila. Demonter: # umount /mnt/disk Fermer le dechiffrage: # cryptsetup luksClose disk ===== Autres méthodes ===== ==== simple ==== Ouvrir et monter: # echo -n | cryptsetup luksOpen /dev/xvdb1 DISK -d - && mount /dev/mapper/DISK /mnt/DISK Demonter: # umount /mnt/DISK && cryptsetup luksClose DISK Vérifier le mountage: # cat /proc/mounts | egrep -q "^/dev/mapper/DISK" ; echo $? Retourne "0" si monté. ==== ssh ==== FIXME ====== Crypter une partition ====== Il existe plusieurs méthode, mais la plus souple semble celle avec ''LUKS'' : la gestion des clés est plus pratique. ===== prérequis ===== Verifier qu'on a ''dm-crypt'' $ /sbin/modinfo dm-crypt filename: /lib/modules/2.6.22-3-686/kernel/drivers/md/dm-crypt.ko ... ... Si nécessaire: # aptitude install dmsetup cryptsetup # cryptsetup luksFormat /dev/xvdb1 ===== partition loop ===== ==== Creer image disk crypté ==== Creer image:\\ ''disk-crypt.bin'' de 1 Go: # dd if=/dev/zero of=./disk-crypt.bin bs=1024k count=1024 Mounter avec ''losetup'': # losetup /dev/loop0 ./disk-crypt.bin (A la fin, pour demounter, il faudra faire: ''losetup -d /dev/loop0'' ) Formater pour le cryptage: # cryptsetup luksFormat /dev/loop0 WARNING! ======== This will overwrite data on /dev/loop0 irrevocably. Are you sure? (Type uppercase yes): YES Enter LUKS passphrase: Verify passphrase: Command successful. ATTENTION: la ''passphrase'' est votre code secret !\\ Il s'agit d'une passphrase (code secret) parmi 8 possibles: voir plus loin comment créer d'autres clés. ==== Monter l'image disk crypté ==== Mapper (en ouvrant) la partition crypté: # cryptsetup luksOpen /dev/loop0 Enter LUKS passphrase: key slot 0 unlocked. Command successful. C'est mappé là: # ls /dev/mapper/ -lrt total 0 crw-rw---- 1 root root 10, 63 2008-01-13 12:05 control brw-rw---- 1 root disk 254, 0 2008-01-13 22:20 Formater la couche crypté de la partition en ext3: # mkfs.ext3 /dev/mapper/ mke2fs 1.40.3 (05-Dec-2007) Étiquette de système de fichiers= Type de système d'exploitation : Linux ... ... Mounter la partition crypté: # mount /dev/mapper/ /mnt/crypt/ Et l'utiliser... # mkdir /mnt/crypt/document_secret # chown thierry: /mnt/crypt/document_secret/ Voila, "''thierry''" peut maintenant écrire et lire des documents secrets:\\ Sans la "''passphrase''", il n'est plus possible de lire le contenu de l'image disk ''disk-crypt.bin''. ==== Demonter (le loop) ==== D'abord démonter l'image disk mappé. # mount | grep mapper /dev/mapper/ on /mnt/crypt type ext3 (rw) Demontons donc: # umount /mnt/crypt Fermer la partition ''Luks'': # cryptsetup luksClose Liberer le périphérique ''loop'': # losetup -d /dev/loop0 Ouf! C'est fini :-P ===== clé USB ===== ==== Brancher ==== # tail -f /var/log/syslog Jan 13 23:20:05 k8 kernel: sd 7:0:0:0: [sdd] Attached SCSI removable disk Jan 13 23:20:05 k8 kernel: sd 7:0:0:0: Attached scsi generic sg4 type 0 === by-id === On peut aussi faire la même chose, sans savoir où est la clé USB, en utilisant le chemin "''by-id''": # ls /dev/disk/by-id/ ... ... usb-LEXAR_JD_FIREFLY_106A6604070202310707-0:0 usb-LEXAR_JD_FIREFLY_106A6604070202310707-0:0-part1 ==== Creer ==== # cryptsetup luksFormat /dev/sdd1 WARNING! ======== This will overwrite data on /dev/sdd1 irrevocably. Are you sure? (Type uppercase yes): YES Enter LUKS passphrase: Verify passphrase: Command successful. ==== Ouvrir ==== # cryptsetup luksOpen /dev/sdd1 cle_usb Enter LUKS passphrase: key slot 0 unlocked. Command successful. Verifions: # ls /dev/mapper/ cle_usb control === by-id === Ca marche aussi comme ça: # cryptsetup luksOpen /dev/disk/by-id/usb-LEXAR_JD_FIREFLY_106A6604070202310707-0\:0-part1 cle_usb Et on se moque de la place la clé dans le nommage "''/dev/sd...''" ==== Formater ==== # mke2fs /dev/mapper/cle_usb mke2fs 1.40.3 (05-Dec-2007) Étiquette de système de fichiers= Type de système d'exploitation : Linux ... ... ==== Mounter ==== # mount /dev/mapper/cle_usb /mnt/crypt/ ==== Lire et Ecrire ==== etc... ==== Demounter et fermer ==== # umount /mnt/crypt # cryptsetup luksClose cle_usb Et voila. ==== Un peu plus loin ==== Partitionner la clé en 2 : cryptée et non cryptée. # sfdisk -d /dev/disk/by-id/usb-LEXAR_JD_FIREFLY_106A6604070202310707-0\:0 # partition table of /dev/disk/by-id/usb-LEXAR_JD_FIREFLY_106A6604070202310707-0:0 unit: sectors /dev/disk/by-id/usb-LEXAR_JD_FIREFLY_106A6604070202310707-0:0-part1 : start= 32, size= 7831520, Id= c, bootable /dev/disk/by-id/usb-LEXAR_JD_FIREFLY_106A6604070202310707-0:0-part2 : start= 0, size= 0, Id= 0 /dev/disk/by-id/usb-LEXAR_JD_FIREFLY_106A6604070202310707-0:0-part3 : start= 0, size= 0, Id= 0 /dev/disk/by-id/usb-LEXAR_JD_FIREFLY_106A6604070202310707-0:0-part4 : start= 0, size= 0, Id= 0 On prend "''cfdisk''" et on partitionne en 2 parties... et on a alors: # sfdisk -d /dev/disk/by-id/usb-LEXAR_JD_FIREFLY_106A6604070202310707-0\:0 # partition table of /dev/disk/by-id/usb-LEXAR_JD_FIREFLY_106A6604070202310707-0:0 unit: sectors /dev/disk/by-id/usb-LEXAR_JD_FIREFLY_106A6604070202310707-0:0-part1 : start= 32, size= 3905248, Id= c, bootable /dev/disk/by-id/usb-LEXAR_JD_FIREFLY_106A6604070202310707-0:0-part2 : start= 3905280, size= 3953664, Id=83 /dev/disk/by-id/usb-LEXAR_JD_FIREFLY_106A6604070202310707-0:0-part3 : start= 0, size= 0, Id= 0 /dev/disk/by-id/usb-LEXAR_JD_FIREFLY_106A6604070202310707-0:0-part4 : start= 0, size= 0, Id= 0 === Formater pour Crypter === # cryptsetup luksFormat /dev/disk/by-id/usb-LEXAR_JD_FIREFLY_106A6604070202310707-0:0-part2 "''/dev/mapper/cle_usb''" existe maintenant... # mke2fs /dev/mapper/cle_usb Accessoirement, formatter aussi la partition non crypté: # mkfs.vfat /dev/disk/by-id/usb-LEXAR_JD_FIREFLY_106A6604070202310707-0\:0-part1 === Mounter et Lire/Ecrire === Si le cryptage n'est pas déjà ouvert: # cryptsetup luksOpen /dev/disk/by-id/usb-LEXAR_JD_FIREFLY_106A6604070202310707-0:0-part2 cle_usb Et puis: # mount /dev/mapper/cle_usb /mnt/crypt/ # chown thierry: /mnt/crypt/. # su thierry $ touch /mnt/crypt/hello.txt $ ls -lart /mnt/crypt/ total 24 drwxr-xr-x 8 root root 4096 2008-01-13 22:23 .. drwx------ 2 root root 16384 2008-02-18 15:54 lost+found -rw-r--r-- 1 thierry thierry 0 2008-02-18 15:57 hello.txt drwxr-xr-x 3 thierry thierry 4096 2008-02-18 15:57 . Ok, ca marche ! :!: l'opération est simplifié sous X, car 1 fois le cryptage en place, un "popup" propose d'explorer (en mountant) la partition détecté. === Demonter === # umount /mnt/crypt/ # cryptsetup luksClose cle_usb ===== Autres commandes ===== ==== Voir ==== Voir l'etat du disk crypto: (on reprend de l'exemple ''loop'' ci-dessus) # cryptsetup luksDump /dev/loop0 LUKS header information for /dev/loop0 Version: 1 Cipher name: aes Cipher mode: cbc-essiv:sha256 Hash spec: sha1 Payload offset: 1032 MK bits: 128 MK digest: 2c 68 bd d4 a2 c7 d4 45 fe b2 3c fb ba 6b cc 71 f1 6a 0d de MK salt: c9 ba 57 c7 98 af 19 34 91 2e da 1a 9f 0c f9 e5 b8 07 75 cd fa 5e 23 c0 df 43 3d d5 4d 5d eb 18 MK iterations: 10 UUID: bc75820a-108d-465d-9f89-e5c234b3687a Key Slot 0: ENABLED Iterations: 148684 Salt: 25 19 93 22 b1 7e 0b 8e b1 d1 e8 2c 73 94 53 47 28 31 39 71 f7 66 73 52 8a d3 f2 70 d6 4e d1 9f Key material offset: 8 AF stripes: 4000 Key Slot 1: DISABLED Key Slot 2: DISABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED ==== Gestion des clés ==== On peut ajouter 7 clés (en plus de la clé initialement créé). L'ensemble des clés ont des droits identiques.\\ La commande ''luksDump'' (vu ci-dessus) permet d'avoir l'etat des attributions de clés. === Ajouter === # cryptsetup luksAddKey /dev/loop0 Enter any LUKS passphrase: key slot 0 unlocked. Enter new passphrase for key slot: xxxxxxx Verify passphrase: xxxxxxx Command successful. === Supprimer ==== # cryptsetup luksDelKey /dev/loop0 Enter any remaining LUKS passphrase: key slot 0 unlocked. Command successful. ===== Automount ===== En jouant avec **''/etc/crypttab''** , on peut monter, dés le boot, des partitions cryptés (sans oublier de modifier **''/etc/fstab''** en conséquence). ==== Clé dans fichier ==== Lorsqu'on veut que **''cryptsetup''** trouve tout seul les clés. On créé un fichier comme cela:\\ (par exemple) # cd /root # mkdir crypt # cd crypt Et puis: # echo -n "mot_de_passe" >> fichier.key # chmod 400 fichier.key Le **''echo -n''** permet de creer le fichier __sans__ retour chariot a la fin.\\ J'en ai bavé avec ''vi'' avant de comprendre qu'il fouttait toujours un "''\n''" a la fin ! Et puis: # cryptsetup luksOpen -d /root/cryptkey/fichier.key /dev/sdb1 sdhc key slot 0 unlocked. Command successful. Si vous avez "**Command failed: No key available with this passphrase.**" , alors c'est ce **#*!@** de "''\n''" qui est sans doute là ! Et enfin:\\ Dans **''/etc/crypttab''** : # sdhc /dev/sdb1 /root/crypt/fichier.key luks Et dans **''/etc/fstab''** : .. .. /dev/mapper/sdhc /mnt/sdhc vfat defaults,noatime,uid=1000,gid=1000 0 2 ====== Crypter Root ====== Pour un eeePC, on montre comment crypter "''/''" (sauf "''/boot''"). Cela fonctionne pour les dérivés de Debian testé. Le cryptage doit être fait au moment de l'installation de Linux.\\ Il n'y a pas de manière simple aprés l'installation.