Archlinux “Cryptage complet des disques”

Références

En cherchant des informations sur la façon de chiffrer le disque dur de mon ordinateur portable, il est dit que la partition sur laquelle /boot réside doit rester non chiffrée,
GRUB est capable de gérer la cryptographie, car il peut être mis en place avec un hachage mot de passe.
GRUB peut charger les modules crypto.mod, cryptodisk.mod et même luks.mod!
Ce guide sur la la configuration d’un système Arch Linux chiffré fournit les instructions sur la façon de crypter complètement un système, y compris /boot

ATTENTION !!! Tout chiffrer pose 2 problèmes :

  • Le clavier GRUB est qwerty , ce qui rend compliqué la saisie de la phrase mot de passe (je n’ai pas réussi à passer la saisie en FR)
  • On saisie 2 fois la phrase mot de passe , sur le grub bios puis sur le menu grub

Essais effectués sur une machine virtuelle , BOOT NON CHIFFRE

Nom virtuel : archyan
RAM : 1024Mo
HDD fixe: 30Go
Réseau : Accès par pont
Processeur : 2
Carte mère : Optical+ Disque dur
             Activer EFI
Stockage optical : archlinux-2016.08.01-dual.iso (pour l'installation)
root ytreu49
yarch yarch49
machine : archyan
ATTENTION : générer mkinitcpio 

Archlinux ,installation de base

Boot sur image archlinux-2016.08.01-dual.iso

loadkeys fr-pc

Si vous utilisez la wifi uniquement

wifi-menu

Effacement du disque

Exécuter lsblk pour trouver le disque primaire (ici /dev/sda):

shred --verbose --random-source=/dev/urandom --iterations=3 /dev/sda

ATTENTION !!! opération très longue ,fonction de la taille du disque (>30 mn pour 30GB)

Partionnement

En ligne de commande

# Remove partitions
sgdisk --zap-all /dev/sda
# Create GUID Partition Table
sgdisk --mbrtogpt /dev/sda
# Create BIOS boot partition (1M)
sgdisk --new 1::+1M --typecode 1:ef02 --change-name 1:"BIOS boot partition" /dev/sda
# Create EFI System partition (50M)
sgdisk --new 2::+50M --typecode 2:ef00 --change-name 2:"EFI System" /dev/sda
# Create linux boot partition (512M)
sgdisk --new 3::+512M --typecode 2:8300 --change-name 3:"Linux boot partition" /dev/sda
# Create linux lvm 100%free
sgdisk --new 4::: --typecode 4:8e00 --change-name 4:"Linux lvm partition" /dev/sda
# Create hybrid MBR
sgdisk --hybrid 1:2:3 /dev/sda

Chiffrer le disque

cryptsetup --verbose --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 5000 --use-random luksFormat /dev/sda4
-> saisir YES en majuscule 
-> entrer une phrase mot de passe "huit novembre 2016" par exemple

cryptsetup luksOpen /dev/sda4 cryptroot
-> saisir la phrase mot de passe

Création des volumes LVM

pvcreate /dev/mapper/cryptroot
vgcreate vg /dev/mapper/cryptroot
lvcreate -L 4G vg -n swap
lvcreate -L 15G vg -n root
lvcreate -l +100%FREE vg -n home
# Type de fichier
mkswap -L swap /dev/mapper/vg-swap
mkfs.ext4 /dev/mapper/vg-root
mkfs.ext4 /dev/mapper/vg-home
mkfs.ext2 /dev/sda3	# linux boot

Installation de base

Activation swap ,permet de vérifier la fonction mais n’est pas utile lors de l’installation

swapon /dev/mapper/vg-swap

Points de montage

mount /dev/mapper/vg-root /mnt  
mkdir /mnt/{boot,home}  
mount /dev/mapper/vg-home /mnt/home
mount /dev/sda3 /mnt/boot

passer la commande suivante avant la première ligne pacstrap :

export LANG=C

installation de base

pacstrap /mnt base base-devel
# avec efi
pacstrap /mnt base base-devel grub-efi-x86_64 git efibootmgr dialog
# avec efi et wifi
pacstrap /mnt base base-devel grub-efi-x86_64 git efibootmgr dialog wpa_supplicant

générer le fichier /etc/fstab qui liste les partitions présentes avec les UUID des partitions

# générer le fstab
genfstab -U -p /mnt >> /mnt/etc/fstab
# ajout dossier temporaire /tmp sur ram
nano /mnt/etc/fstab
# ajouter la ligne suivante au fichier fstab
tmpfs	/tmp	tmpfs	defaults,noatime,mode=1777	0	0
# Change relatime on all non-boot partitions to noatime (reduces wear if using an SSD)

Passage en chroot

arch-chroot /mnt

Clavier en mode texte

nano /etc/vconsole.conf

Ajouter

KEYMAP=fr-latin9
FONT=lat9w-16

Localisation

nano /etc/locale.conf

Ajouter

LANG=fr_FR.UTF-8
LC_COLLATE=C

Il faut supprimer le # au début de la ligne fr_FR.UTF-8 UTF-8 dans le fichier /etc/locale.gen

sed -i 's/#fr_FR.UTF-8 UTF-8/fr_FR.UTF-8 UTF-8/g' /etc/locale.gen

puis générer:

locale-gen

spécifier la locale pour la session courante

export LANG=fr_FR.UTF-8

fuseau horaire de Paris

ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime

on a une machine en mono-démarrage sur Archlinux, et on peut demander à ce que l’heure appliquée soit UTC

hwclock --systohc --utc

mot de passe root

passwd root

Ajouter un utilisateur et son mot de passe

useradd -m -g users -G wheel,games,power,optical,storage,scanner,lp,audio,video -s /bin/bash archuser
passwd archuser

Installer et configurer GRUB

pacman -S sudo grub os-prober

Modifier sudoers pour accès sudo sans mot de passe à l’utilisateur archuser

echo "archuser     ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

# ou avec : 
EDITOR=nano visudo
#décommenter la ligne 
%wheel ALL=(ALL) ALL

on veut avoir accès à l’outil yaourt, il faut modifier /etc/pacman.conf

nano /etc/pacman.conf

et ajouter ceci à la fin du fichier

[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch

Une fois yaourt installé, on peut enlever sans aucun risque les lignes en question.

pacman -Syy && pacman -S yaourt

réseau networkmanager et openssh

pacman -S networkmanager openssh
systemctl enable NetworkManager  
systemctl enable sshd.socket

Modifier la configuration GRUB pour la prise en charge du chiffrement

nano /etc/default/grub

Ajouter

#GRUB_ENABLE_CRYPTODISK=y
GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda4:cryptroot"

modifier le fichier /etc/mkinitcpio.conf

nano /etc/mkinitcpio.conf

et ajouter encrypt lvm2 entre block et filesystems dans les HOOKS
puis exécuter mkinitcpio qui est un script shell utilisé pour créer un environnement qui se chargé en premier en mémoire :

mkinitcpio -p linux

Installer grub et son fichier de configuration:

grub-install --recheck /dev/sda
grub-mkconfig --output /boot/grub/grub.cfg

On peut maintenant quitter tout, démonter proprement les partitions et redémarrer.

exit
umount -R /mnt
reboot
# oter la clé USB

Archlinux post-installation

On se connecte en utilisateur

Multimédia

Les outils en place, on lance alsamixer , pour configurer le niveau sonore de Master
Sauvegarder le paramétrage précédent , on exécute sudo alsactl store
installer l’ensemble des greffons gstreamer qui donneront accès aux fichiers multimédias

sudo pacman -S gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav

Xorg

Ordinateur portable avec pavé tactile , on installe xf86-input-libinput
Carte graphique Intel , on installe xf86-video-intel

sudo pacman -S xorg-server xorg-xinit xorg-xmessage xorg-utils xorg-server-utils xorg-apps xf86-input-mouse xf86-input-keyboard xdg-user-dirs xf86-input-libinput xf86-video-intel

Installation virtuelle

sudo pacman -S xorg-server xorg-xinit xorg-xmessage xorg-utils xorg-server-utils xorg-apps xf86-input-mouse xf86-input-keyboard xdg-user-dirs xf86-input-libinput  virtualbox-guest-modules-arch virtualbox-guest-utils
# activer et démarrer le service vboxservice :
sudo systemctl enable vboxservice
sudo systemctl start vboxservice
# Vous pouvez charger les modules manuellement :
sudo modprobe -a vboxguest vboxsf vboxvideo

installation des polices.

sudo pacman -S xorg-fonts-type1 artwiz-fonts font-bh-ttf \
          font-bitstream-speedo gsfonts sdl_ttf ttf-bitstream-vera \
          ttf-cheapskate ttf-liberation ttf-dejavu \
          ttf-freefont ttf-arphic-uming ttf-baekmuk # Polices pour sites multilingue

Pour avoir le bon agencement clavier dès la saisie du premier caractère du mot de passe, il faut entrer la commande suivant avant de lancer pour la première fois lightdm :

sudo localectl set-x11-keymap fr

Configuration du clavier pour GRUB

Par défaut, GRUB utilise un clavier qwerty. Pour que GRUB utilise une autre configuration de clavier, il va falloir générer un fichier de configuration et l’ajouter à GRUB.
Générez un nouveau fichier de configuration clavier

Récupérez le script ckbcomp disponible dans AUR

yaourt -S ckbcomp

et exécutez la commande :

sudo grub-kbdcomp -o /boot/grub/fr.gkb fr

Inclure la nouvelle configuration de clavier dans GRUB

Créer ou modifier le fichier suivant /etc/grub.d/50_keyboard

#!/bin/sh
exec tail -n +3 $0
# Clavier fr
insmod keylayouts
keymap /boot/grub/fr.gkb

Le rendre exécutable

sudo chmod +x /etc/grub.d/50_keyboard

Ajouter dans le fichier /etc/default/grub

GRUB_TERMINAL_INPUT=console
GRUB_TERMINAL_INPUT=at_keyboard

Reconstruire GRUB

sudo grub-mkconfig -o /boot/grub/grub.cfg