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