Ben en fait j'ai tout crypté sauf boot, et j'ai eu du mal avec les explications données sur le site anglais... surtout pour un newbie et parce que la "short version" (version courte) donnée à la fin est erronée ou pas assez bien ficelée pour un novice... j'ai dû recommencer tout plusieurs fois! et j'ai quelques commentaires à faire! Voici de mémoire ce que j'ai fait!
J'ai téléchargé archlinux core 64 bits et l'ai copié sur une clé usb, et j'ai booté mon nouveau laptop avec.
j'ai utilisé dd ou autre, j'ai oublié (cf tutos).
J'ai partitionné le disque de 250 Go avec le résultat suivant:
Code : Tout sélectionner
#fdisk
/dev/sda1 # partition de boot (taille d'une clé USB de 64Mo)
/dev/sda2 # partition pour un autre linux (ubuntu) (taille d'une clé USB de 16Go: sauvegardes dessus)
/dev/sda3 # # partition de swap pour l'autre linux (ubuntu) (4 Go)
/dev/sda4 # partition étendue...
/dev/sda5 # partition destinée au lvm
J'ai effacé aléatoirement mon disque:
Code : Tout sélectionner
cryptsetup -d /dev/random -c aes-xts-plain -s 512 create lvm /dev/sda5
dd if=/dev/urandom of=/dev/mapper/lvm
cryptsetup remove lvm
Je n'ai jamais utilisé /dev/random, bien trop lent! il y a aussi "badblocks" ou un truc qui s'appellerai frandom (plus rapide et avec barre de progression), mais je suis allé au plus simple.
J'ai créé un fichier de clé sur une clé USB montée pour l'occasion dans /root du système de fichier lancé par la clé conteant archlinux core:
Code : Tout sélectionner
mkdir /root/key
mount /dev/sdb1 /root/key
dd if=/dev/urandom of=/root/key/mykeyfile bs=512 count=1 # ou l'inverse bs=1 et count=512
Code : Tout sélectionner
lvm pvcreate /dev/sda5 # volume physique sur sda5
lvm vgcreate lvm /dev/sda5 # groupe de volume n'incluant que sda5 et s'appelant "lvm"
lvm lvcreate -C y -L 16G -n root lvm # volume racine "/" (alias root) de 16Go; (taille d'une clé USB)
# -C y c 'est pour que ce soit sur une zone contigue...
lvm lvcreate -L 4G -n swap lvm # volume de /swap (échange) de 4Go
lvm lvcreate -L 4G -n tmp lvm # volume de /tmp de 4Go
lvm lvcreate -L 4G -n var lvm # volume de /var de 4Go
lvm lvcreate -L 16 Go -n home lvm # volume de /home de 16Go (taille d'une clé USB).
Code : Tout sélectionner
# pvdisplay -c
/dev/sda5:lvm:405368082:-1:8:8:-1:4096:49483:39243:10240:fszL6x-7Cfo-S5tp-c3mu-fjFe-We05-Mwf1tC
# vgdisplay -c
lvm:r/w:772:-1:0:4:4:-1:0:1:1:202682368:4096:49483:10240:39243:qiEoTd-OcxQ-6kIc-ws9e-8hLe-DPFW-wN6bsI
# lvdisplay -c
/dev/lvm/root:lvm:3:1:-1:1:33554432:4096:-1:2:-1:254:0
/dev/lvm/swap:lvm:3:1:-1:1:8388608:1024:-1:2:-1:254:1
/dev/lvm/tmp:lvm:3:1:-1:1:8388608:1024:-1:2:-1:254:2
/dev/lvm/home:lvm:3:1:-1:1:33554432:4096:-1:2:-1:254:3
Code : Tout sélectionner
lvm vgchange -ay
Code : Tout sélectionner
cryptsetup luksFormat -c aes-xts-plain -s 512 /dev/lvm/root /root/key/mykeyfile
cryptsetup luksOpen /dev/mapper/lvm-root root /root/key/mykeyfile
Je n'ai pas fait ça, j'ai laissé le soin à /arch/setup de le faire (ou plutôt il me force à le refaire, donc inutilie de le faire 2 fois):
Code : Tout sélectionner
#mkreiserfs /dev/mapper/root
#mount /dev/mapper/root /mnt
J'ai ajouté un phrase de passe clé puisque les partitions cryptées avec "luks" peuvent en avoir jusqu'à 8, et on peut ajouter ou révoquer une ou plusieurs clés quand on veut: c'est plus prudent en cas de perte de la clé USB...
Code : Tout sélectionner
# cryptsetup luksAddKey /dev/mapper/root --key-file /root/key/mykeyfile --key-slot 1
(--key-file donne la clé d'accès permettant de s'authentifier avant de créer la nouvelle clé! --key-slot permet de l'ajouter dans le "slot" que l'on veut (il y en a 8, donc de 0 à 7).
Là je me suis perdu, et je n'ai finalement pas fait ça du tout :
Code : Tout sélectionner
# dd if=/dev/zero of=/dev/sda1 bs=1M # effacement comme pour toute à l'heure
# mkreiserfs /dev/sda1
# mkdir /mnt/boot
# mount /dev/sda1 /mnt/boot
# mkdir -p -m 700 /mnt/etc/luks-keys
# dd if=/dev/urandom of=/mnt/etc/luks-keys/home bs=1 count=512
# /arch/setup
Car au cours de mes essais, ça n'allait pas: l'installeur d'arch formate systématiquement les partitions et n'y garde donc pas ce qui s'y trouve. En fait je crois que j'ai utilisé deux écrans en mode console: un pour /arch/setup ou je l'ai laissé formater et monter /dev/mapper/root sur /mnt et /dev/boot sur /mnt/boot: une fois que ça c'est fait, c'est bon, il accepte de passer à la suite (installer les paquets et me laisser le configurer). puis ensuite dans l'autre écran j'ai fait les manips d'au dessus, et l'installeur a "cru" que tout allait bien et était bien monté.
J'ai donc fait ça:
Code : Tout sélectionner
# /arch/setup
J'ai créé une clé différente pour chaque volume, stockée dans le futur /etc :
Code : Tout sélectionner
# mkdir -p -m 700 /mnt/etc/luks-keys
# dd if=/dev/urandom of=/mnt/etc/luks-keys/home bs=1 count=512
# dd if=/dev/urandom of=/mnt/etc/luks-keys/swap bs=1 count=512
# dd if=/dev/urandom of=/mnt/etc/luks-keys/tmp bs=1 count=512
J'ai donc fait ça (et idem pour "swap" et "tmp"):
Code : Tout sélectionner
# cryptsetup luksFormat -c aes-xts-plain -s 512 /dev/lvm/home /mnt/etc/luks-keys/home
# cryptsetup luksOpen /dev/mapper/lvm-home home --key-file /mnt/etc/luks-keys/home
# mkreiserfs /dev/mapper/home
# mkdir /mnt/home
# mount /dev/mapper/home /mnt/home
# cryptsetup luksAddKey /dev/mapper/home --key-file /mnt/etc/luks-keys/home
Je suis repassé ici à la console où s'exécute "/arch/setup" et j'ai repris à l'étape où j'en était: j'ai choisi et installé mes paquets, puis suis passé à la configuration:
/etc/rc.conf
Code : Tout sélectionner
USELVM="yes"
Code : Tout sélectionner
MODULES="reiserfs"
HOOKS="base resume udev autodetect pata scsi sata usb lvm2 encrypt filesystems usbinput keymap"
Là j'ai oublié de créer les fichiers spécifiques à la swap pour le support "suspend-to-disk" (cf plus bas). C'est mieux de les créer à cette étape, en utilisant la console en ligne de commande, puis en repassant à celle de /arch/setup. Mais ça marche quand même. J'ai réédité ce post et les ai rajoutés ici pour plus de clarté, mais non testé lors de mon installation, puisqu'oubliés! (ils sont créés dans /mnt car la racine du futur système de fichier a été montée dans /mnt par /arch/Setup).
/mnt/lib/initcpio/hooks/openswap
Code : Tout sélectionner
# vim: set ft=sh:
run_hook ()
{
cryptsetup luksOpen /dev/mapper/swap swap -d /etc/luks-keys/swap
}
Code : Tout sélectionner
# vim: set ft=sh:
install ()
{
MODULES=""
BINARIES=""
add_file "/etc/luks-keys/swap"
FILES=""
SCRIPT="openswap"
}
help ()
{
cat<<HELPEOF
This opens the swap encrypted partition /dev/<device> in /dev/mapper/swapDevice
HELPEOF
}
Là retour à la console de /arch/setup :
/etc/fstab
Code : Tout sélectionner
#
# /etc/fstab: static file system information
#
# <file system> <dir> <type> <options> <dump> <pass>
none /dev/pts devpts defaults 0 0
none /dev/shm tmpfs defaults 0 0
#/dev/cdrom /media/cd auto ro,user,noauto,unhide 0 0
#/dev/dvd /media/dvd auto ro,user,noauto,unhide 0 0
#/dev/fd0 /media/fl auto user,noauto 0 0
/dev/mapper/home /home reiserfs defaults 0 1
/dev/mapper/root / reiserfs defaults 0 1
/dev/mapper/swap swap swap defaults 0 0
/dev/mapper/tmp /tmp reiserfs defaults 0 1
/dev/sda1 /boot reiserfs defaults 0 2
Code : Tout sélectionner
home /dev/lvm/home /etc/luks-keys/home
swap /dev/lvm/swap /etc/luks-keys/swap
tmp /dev/lvm/tmp /etc/luks-keys/tmp
Code : Tout sélectionner
# general configuration:
timeout 5
default 0
color light-blue/black light-cyan/blue
splashimage=/boot/splash.xpm.gz
# (0) Arch Linux
title Arch Linux
root (hd0,0)
kernel /vmlinuz26 cryptdevice=/dev/lvm/root:root cryptkey=/dev/sdb1:ext3:/mykeyfile root=/dev/mapper/root ro vga=792
initrd /kernel26.img
# () Arch Linux Fallback
title Arch Linux
root (hd0,0)
kernel /vmlinuz26 cryptdevice=/dev/lvm/root:root cryptkey=/dev/sdb1:ext3:/mykeyfile root=/dev/mapper/root ro vga=792
initrd /kernel26-fallback.img
Ou sinon utiliser la phrase de passe de secours, que j'ai appelée "key" pour les test... à révoquer ensuite absolument pour une autre phrase de passe bien plus solide (cryptsetup luksDelKey ou luksKillSlot)! La clé usb permet d'éviter que le lancement de linux s'arrête pour demander d'entrer la clé!
Il me reste les étapes suivantes:
- faire une sauvegardes des "cryptheaders" sur quelque chose de sûr car si ces zones du disque dur sont endommagées... bonjour les dégâts!
- effacer et remplacer les phrases de passe manuelles pour l'instant très faibles car nommés "key".
- regarder du côté de la "swap" avec suspend-to-disk support, mais ça peut être fait ensuite: seul l'action sur la partition racine / doit être faite avant l'installation.
- voir pour stocker la clé plus discrétement sur la clé USB entre le MBR et la première partition de la clé... si c'est vraiment utile.
Quelques remarques:
- à quoi ça sert de crypter le disque aléatoirement avant d'installer tout ça, mystère... étape à ne pas refaire si la suite est foirée: j'ai simplement rebooté et tout recommencé sans refaire cette étape...
- le maillon faible, c'est la clé USB: il ne faut pas la perdre, sinon gare! ou bien avoir une très bonne phrase de passe en prime, et ne pas l'oublier...
- attention si une ou d'autres clés USB sont présentes: elles peuvent être reconnues comme /dev/sdb1 à la place de la clé qui contient le fichier de mot de passe... et ça démarrera en demandant une phrase de passe! donc il faut les enlever avant de démarrer!
- au niveau performances, je ne sais pas l'effet, mais il est clair que les commandes dans / doivent être décryptées avant exécution...
- là c'est luks qui est mis par dessus lvm, et sur chaque volume logique, qui a chacun sa clé de cryptage, et j'aurai pu n'utiliser que la clé de root pour tout le monde
- je n'ai pas essayé l'inverse: "lvm over luks": cryptage au niveau volume physique ou groupe de volumes, qui serait éventuellement préférable... et personne ne verrait où sont réellement les volumes logiques voir le groupe de volumes...
- tout passe par /dev/mapper deux fois: lvm puis luks...
- celui qui trouve la clé de root trouve toutes les autres clés dans /etc/luks-keys/...
- au cryptage global de home, il aurait été préférable un cryptage par utilisateur présent dans /home...
- grub et boot : ils ne sont pas cryptés, il faut verrouiller l'accès au fichier menu.lst (cf tuto sur grub)... ou premettre à grub de trouver où sont ses fichiers au démarrage, ainsi que vmlinuz et initrd, mais si leur adresse sur le disque est cryptée... dur dur!
- j'ai des volumes logiques dont je pourrais changer la taille, et cryptés!
Bibliographie: le tutoriel du wiki anglais: http://wiki.archlinux.org/index.php/LUKS et les tutoriels du wiki d'archlinux.fr sur lvm et l'installation ont été mes amis lors de l'installation!