===== Chiffrement des disques et RAID ===== J'ai suivi ce [[https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_an_entire_system#LUKS_on_software_RAID|tuto sur le wiki de Archlinux]]. J'ai deux disques de 2 To et deux disques de 1 To. L'idée est de joindre ces disques deux par deux en **RAID1**. Pas la peine d'utiliser de volumes LVM, ça complique inutilement pour le moment. Un de ces volumes en RAID servira au stockage pour NextCloud, l'autre au stockage des données du reste des applications. Et on chiffre tout ça avec LUKS. Schématiquement : | 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 | | RAID arrays | /dev/md0 (1 To) || /dev/md1 (2 To) || | 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 : mdadm --misc --zero-superblock /dev/ Création des partitions : fdisk … Création des arrays RAID : 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 On met à jour la configuration de *mdadm* : mdadm --detail --scan >> /etc/mdadm.conf Formatage du système de fichier des RAID : mkfs.ext4 -v -L dataraid /dev/md/raidData mkfs.ext4 -v -L cloudraid /dev/md/raidCloud **Scrubbing** : c'est bien de vérifier de temps en temps l'état du RAID et résoudre les erreurs. Pour lancer un *scrub* : echo check > /sy/block/mdX/md/sync_action On peut ensuite voir le statut de l'opération avec : cat /proc/mdstat Pour arrêter un *scrub* : echo idle > /sys/block/mdX/md/sync_action Quand le *scrub* est fini, on peut voir le nombre de blocks problématiques (s'il y en a) : cat /sys/block/mdX/md/mismatch_cnt 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 : # 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 Chiffrement : # 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 **Configuration des fichiers de clé** (cf [[https://wiki.archlinux.org/index.php/Dm-crypt/Device_encryption#Keyfiles|Arch wiki]]) : Création des fichiers : 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 Défendre l'accès de ces fichiers : chmod 600 /etc/luks-keys/cryptdata chmod 600 /etc/luks-keys/cryptcloud chmod -R 600 /etc/luks-keys/ Configurer LUKS pour utiliser un fichier de clé : cryptsetup luksAddKey /dev/md/raidData /etc/luks-keys/cryptdata cryptsetup luksAddKey /dev/md/raidCloud /etc/luks-keys/cryptcloud Déchiffrer et monter automatiquement les disques au démarrage, il faut modifier deux fichiers. **/etc/crypttab** : cryptdata UUID=XXX /etc/luks-keys/cryptdata cryptcloud UUID=XXX /etc/luks-keys/cryptcloud Pour avoir les [[https://wiki.archlinux.org/index.php/Persistent_block_device_naming#by-uuid|UUID]] en question : ls -l /dev/disk/by-uuid **/etc/fstab** : /dev/mapper/cryptdata /data ext4 rw,relatime 0 2 /dev/mapper/cryptcloud /cloud ext4 rw,relatime 0 2 Pas besoin d'utiliser de UUID ici, vu que lors du déchiffrement des disques on associe des noms.