Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
autohebergement:chiffrement_des_disques_et_raid [2019/11/24 12:03] eorn créée |
autohebergement:chiffrement_des_disques_et_raid [2021/08/16 14:13] (Version actuelle) |
||
---|---|---|---|
Ligne 12: | Ligne 12: | ||
Schématiquement : | Schématiquement : | ||
- | | Hard drives | /dev/sda (1 To) | /dev/sdb (1 To) | /dev/sdc (2 To) | /dev/sdd (2 To) | | + | | Hard drives | /dev/sda (1 To) | /dev/sdb (1 To) | /dev/sdc (2 To) | /dev/sde (2 To) | |
| Partitions | /dev/sda1 | /dev/sdb1 | /dev/sdc1 | /dev/sdd1 | | | Partitions | /dev/sda1 | /dev/sdb1 | /dev/sdc1 | /dev/sdd1 | | ||
| RAID arrays | /dev/md0 (1 To) || /dev/md1 (2 To) || | | RAID arrays | /dev/md0 (1 To) || /dev/md1 (2 To) || | ||
| Point de montage | /data || /cloud || | | Point de montage | /data || /cloud || | ||
+ | |||
+ | === Création de l'array RAID === | ||
+ | Source : [[https://wiki.archlinux.org/index.php/RAID|Arch wiki]] | ||
+ | |||
+ | Supprimer les anciennes infos RAID : | ||
+ | <code bash> | ||
+ | mdadm --misc --zero-superblock /dev/<drive or partition> | ||
+ | </code> | ||
+ | |||
+ | Création des partitions : | ||
+ | <code bash> | ||
+ | fdisk … | ||
+ | </code> | ||
+ | |||
+ | Création des arrays RAID : | ||
+ | <code bash> | ||
+ | mdadm --create --verbose --level=1 --metadata=1.2 --raid-devices=2 /dev/md/raidCloud /dev/sdc1 /dev/sde1 | ||
+ | mdadm --create --verbose --level=1 --metadata=1.2 --raid-devices=2 /dev/md/raidData /dev/sda1 /dev/sdb1 | ||
+ | </code> | ||
+ | |||
+ | On met à jour la configuration de *mdadm* : | ||
+ | <code bash> | ||
+ | mdadm --detail --scan >> /etc/mdadm.conf | ||
+ | </code> | ||
+ | |||
+ | Formatage du système de fichier des RAID : | ||
+ | <code bash> | ||
+ | mkfs.ext4 -v -L dataraid /dev/md/raidData | ||
+ | mkfs.ext4 -v -L cloudraid /dev/md/raidCloud | ||
+ | </code> | ||
+ | |||
+ | **Scrubbing** : c'est bien de vérifier de temps en temps l'état du RAID et résoudre les erreurs. Pour lancer un *scrub* : | ||
+ | <code bash> | ||
+ | echo check > /sy/block/mdX/md/sync_action | ||
+ | </code> | ||
+ | |||
+ | On peut ensuite voir le statut de l'opération avec : | ||
+ | <code bash> | ||
+ | cat /proc/mdstat | ||
+ | </code> | ||
+ | |||
+ | Pour arrêter un *scrub* : | ||
+ | <code bash> | ||
+ | echo idle > /sys/block/mdX/md/sync_action | ||
+ | </code> | ||
+ | |||
+ | Quand le *scrub* est fini, on peut voir le nombre de blocks problématiques (s'il y en a) : | ||
+ | <code bash> | ||
+ | cat /sys/block/mdX/md/mismatch_cnt | ||
+ | </code> | ||
+ | |||
+ | S'il y a des gros problèmes de disques : [[https://wiki.archlinux.org/index.php/RAID#Removing_devices_from_an_array|Arch wiki : removing devices from an array]]. | ||
+ | |||
+ | |||
+ | === Chiffrement avec LUKS === | ||
+ | Préparation des block devices : | ||
+ | |||
+ | <code bash> | ||
+ | # data | ||
+ | cryptsetup open --type plain /dev/md/raidData container --key-file /dev/random | ||
+ | dd if=/dev/zero of=/dev/mapper/container bs=1M status=progress | ||
+ | cryptsetup close container | ||
+ | |||
+ | # cloud | ||
+ | cryptsetup open --type plain /dev/md/raidCloud container --key-file /dev/random | ||
+ | dd if=/dev/zero of=/dev/mapper/container bs=1M status=progress | ||
+ | cryptsetup close container | ||
+ | </code> | ||
+ | |||
+ | |||
+ | Chiffrement : | ||
+ | <code bash> | ||
+ | # data | ||
+ | cryptsetup -y -v luksFormat /dev/md/raidData | ||
+ | cryptsetup open /dev/md/raidData cryptdata | ||
+ | mkfs.ext4 /dev/mapper/cryptdata | ||
+ | mkdir /data | ||
+ | mount /dev/mapper/cryptdata /data | ||
+ | |||
+ | # cloud | ||
+ | cryptsetup -y -v luksFormat /dev/md/raidCloud | ||
+ | cryptsetup open /dev/md/raidCloud cryptcloud | ||
+ | mkfs.ext4 /dev/mapper/cryptcloud | ||
+ | mkdir /cloud | ||
+ | mount /dev/mapper/cryptcloud /cloud | ||
+ | </code> | ||
+ | |||
+ | |||
+ | **Configuration des fichiers de clé** (cf [[https://wiki.archlinux.org/index.php/Dm-crypt/Device_encryption#Keyfiles|Arch wiki]]) : | ||
+ | |||
+ | Création des fichiers : | ||
+ | <code bash> | ||
+ | dd bs=512 count=4 if=/dev/random of=/etc/luks-keys/cryptdata | ||
+ | dd bs=512 count=4 if=/dev/random of=/etc/luks-keys/cryptcloud | ||
+ | </code> | ||
+ | |||
+ | Défendre l'accès de ces fichiers : | ||
+ | <code bash> | ||
+ | chmod 600 /etc/luks-keys/cryptdata | ||
+ | chmod 600 /etc/luks-keys/cryptcloud | ||
+ | chmod -R 600 /etc/luks-keys/ | ||
+ | </code> | ||
+ | |||
+ | Configurer LUKS pour utiliser un fichier de clé : | ||
+ | <code bash> | ||
+ | cryptsetup luksAddKey /dev/md/raidData /etc/luks-keys/cryptdata | ||
+ | cryptsetup luksAddKey /dev/md/raidCloud /etc/luks-keys/cryptcloud | ||
+ | </code> | ||
+ | |||
+ | Déchiffrer et monter automatiquement les disques au démarrage, il faut modifier deux fichiers. | ||
+ | |||
+ | **/etc/crypttab** : | ||
+ | <code bash> | ||
+ | cryptdata UUID=XXX /etc/luks-keys/cryptdata | ||
+ | cryptcloud UUID=XXX /etc/luks-keys/cryptcloud | ||
+ | </code> | ||
+ | |||
+ | Pour avoir les [[https://wiki.archlinux.org/index.php/Persistent_block_device_naming#by-uuid|UUID]] en question : | ||
+ | <code bash> | ||
+ | ls -l /dev/disk/by-uuid | ||
+ | </code> | ||
+ | |||
+ | **/etc/fstab** : | ||
+ | <code bash> | ||
+ | /dev/mapper/cryptdata /data ext4 rw,relatime 0 2 | ||
+ | /dev/mapper/cryptcloud /cloud ext4 rw,relatime 0 2 | ||
+ | </code> | ||
+ | |||
+ | Pas besoin d'utiliser de UUID ici, vu que lors du déchiffrement des disques on associe des noms. |