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. | ||