raid5-luks-lvm-configuration.md 8.8 KB

Mise en place d'un RAID5 avec LUKS et LVM sous Linux

Le plan

  • installer un raid5
  • installer les partitions
    • une partition pour grub de 1Mo
    • une partition pour le déchiffrement de 511Mo
    • une seule partition pour Proxmox en ext4 (même si ZFS est recommandé, il a plus d'overhead, voir Annexes)
  • chiffrer avec luks
    • il semble que le meilleur algo de chiffrement soit aes-cbc (moins bon en écriture que aes-xts mais meilleur en lecture)
  • Installer Debian

Contexte : RAID5 avec 3 disques de 2 To

Vous souhaitez configurer un RAID5 sur un serveur Linux, avec un chiffrement LUKS, une gestion par LVM et un système de fichiers ext4. Voici les détails et la procédure complète pour atteindre cet objectif.


1. RAID : Partitionner ou non les disques ?

Faut-il partitionner les disques avant de configurer le RAID ?

Non, il n'est pas nécessaire de partitionner les disques. Voici pourquoi :

  • RAID 5 fonctionne mieux avec des disques utilisés dans leur totalité, sans partitionnement, ce qui simplifie la gestion et optimise les performances.
  • LUKS et LVM offrent toute la flexibilité nécessaire sans qu’il soit nécessaire de partitionner.
  • Ajouter des partitions pourrait compliquer la configuration et n’apporterait aucun avantage significatif en termes de sécurité ou de performances.

Pourquoi cette approche est optimale ?

  • Simplicité d’administration.
  • Performances maximales.
  • Réduction des risques d’erreurs.

Benchmark

Voir: https://forum.proxmox.com/threads/adding-full-disk-encryption-to-proxmox.137051/

# cryptsetup benchmark
# Tests are approximate using memory only (no storage IO).
PBKDF2-sha1      1232169 iterations per second for 256-bit key
PBKDF2-sha256    1661768 iterations per second for 256-bit key
PBKDF2-sha512    1209430 iterations per second for 256-bit key
PBKDF2-ripemd160  742617 iterations per second for 256-bit key
PBKDF2-whirlpool  469792 iterations per second for 256-bit key
argon2i       7 iterations, 1048576 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
argon2id      6 iterations, 1048576 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
#     Algorithm |       Key |      Encryption |      Decryption
        aes-cbc        128b       629.9 MiB/s      2288.7 MiB/s
    serpent-cbc        128b        90.4 MiB/s       319.0 MiB/s
    twofish-cbc        128b       199.1 MiB/s       377.3 MiB/s
        aes-cbc        256b       474.5 MiB/s      1721.4 MiB/s
    serpent-cbc        256b        91.0 MiB/s       319.8 MiB/s
    twofish-cbc        256b       200.6 MiB/s       377.0 MiB/s
        aes-xts        256b      1959.3 MiB/s      1952.9 MiB/s
    serpent-xts        256b       312.3 MiB/s       301.9 MiB/s
    twofish-xts        256b       347.3 MiB/s       353.8 MiB/s
        aes-xts        512b      1538.7 MiB/s      1523.3 MiB/s
    serpent-xts        512b       317.4 MiB/s       302.0 MiB/s
    twofish-xts        512b       352.9 MiB/s       354.8 MiB/s

Capacité CPU

Voir : https://www.cyberciti.biz/faq/linux-xen-vmware-kvm-intel-vt-amd-v-support/

less /etc/cpuinfo 

Vérifier si aes est présent (chiffrement)

Vérifier si lm (64 bits)

Vérifier si vmx (Intel) ou svm (AMD) sont activés

Ou

# lscpu | grep VT
Virtualization:      VT-x

2. Configuration complète : RAID → LUKS → LVM → ext4

Étape 0: système de boot

  1. Réservez une petite partition (généralement 1 Go) sur chaque disque pour /boot. • Exemple : partitionnez /dev/sd[b-d] en deux : • Une partition de 1 Go pour /boot (ex. /dev/sdb1, /dev/sdc1, /dev/sdd1). • Le reste du disque pour le RAID5.
  2. Configurez /boot avec RAID1 pour la redondance :

sudo mdadm --create --verbose /dev/md1 --level=1 --raid-devices=3 /dev/sd[b-d]1

• RAID1 garantit que même si un disque tombe en panne, le système peut toujours démarrer.

  1. Formatez la partition RAID1 en ext4 :

sudo mkfs.ext4 /dev/md1

  1. Montez cette partition comme /boot :

  2. Installer le système de démarrage (voir kimsufi.md)

Étape 1 : Créer le RAID 5

sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sd[b-d]
  • Laissez le RAID se synchroniser après la création.

Étape 2 : Ajouter le chiffrement LUKS

  1. Initialiser le chiffrement LUKS sur le RAID :

    sudo cryptsetup luksFormat /dev/md0
    
  2. Ouvrir le conteneur chiffré :

    sudo cryptsetup open /dev/md0 raid_crypt
    

Étape 3 : Configurer LVM

  1. Initialiser LVM sur le conteneur LUKS :

    sudo pvcreate /dev/mapper/raid_crypt
    sudo vgcreate vg_raid /dev/mapper/raid_crypt
    
  2. Créer des volumes logiques :

    sudo lvcreate -L 1.5T -n lv_root vg_raid
    sudo lvcreate -L 500G -n lv_home vg_raid
    

Étape 4 : Formater et monter les volumes

  1. Formater en ext4 :

    sudo mkfs.ext4 /dev/vg_raid/lv_root
    sudo mkfs.ext4 /dev/vg_raid/lv_home
    
  2. Monter les volumes :

    sudo mount /dev/vg_raid/lv_root /mnt
    sudo mkdir /mnt/home
    sudo mount /dev/vg_raid/lv_home /mnt/home
    
  3. Ajouter les entrées dans /etc/fstab pour un montage automatique au démarrage.


3. Vérification de la prise en charge AES-NI

Les extensions AES-NI permettent d’accélérer le chiffrement et le déchiffrement des données avec LUKS.

Méthode 1 : Vérification via /proc/cpuinfo

cat /proc/cpuinfo | grep -i aes
  • Si aes apparaît dans les flags, AES-NI est pris en charge.

Méthode 2 : Utiliser lscpu

lscpu | grep -i aes
  • Une ligne avec AES : Supported confirme la prise en charge.

Méthode 3 : Outil cpuid

  1. Installer l’outil :

    sudo apt install cpuid  # Pour Debian/Ubuntu
    sudo dnf install cpuid  # Pour Fedora/CentOS
    
  2. Vérifier la prise en charge AES :

    cpuid | grep -i aes
    

Méthode 4 : Vérification avec dmesg

dmesg | grep -i aes
  • Si AES-NI est actif, le noyau Linux le mentionnera.

Importance d’AES-NI

AES-NI améliore considérablement les performances pour le chiffrement de données, notamment pour LUKS, SSL/TLS, et les systèmes chiffrés. Si AES-NI n’est pas disponible, le chiffrement sera réalisé en mode logiciel, ce qui est moins performant.

Annexes

Ressources RAID