web-dev-qa-db-fra.com

Comment installer Ubuntu avec le cryptage de disque et la mise en cache SSD

J'utilise Ubuntu dans un environnement d'entreprise et notre politique de sécurité stipule que nous devons utiliser le chiffrement intégral du disque.

J'ai aussi un ordinateur portable avec un SSD mSATA de 32 Go et 750 Go de rouille en rotation. Mon installation actuelle utilise bcache pour en tirer parti, installée à l'aide de cette procédure . Cela donne un coup de pouce de performance très bienvenu sans que je me soucie de remplir le disque SSD.

Ce sera une question de prime. La prime sera attribuée pour:

  • Une méthode claire et fiable pour effectuer une nouvelle installation d’Ubuntu
    • Toute libération est acceptable mais 15.04 (Vivid) ira bien
  • Le système de fichiers entier sera crypté
    • Dans ce cas, la préférence consiste à utiliser la case correspondante dans le programme d'installation par défaut d'Ubiquity (cryptage dm-crypt).
  • Le système de fichiers sera mis en cache sur un SSD
    • De préférence, la méthode du noyau dm-cache/lvmcache voir ici pour la méthode permettant de le faire avec Debian Jessie
    • Le cache doit également être sécurisé (c'est-à-dire chiffré)
    • Il doit y avoir une explication claire de la raison pour laquelle le cache est également crypté

J'ai déjà essayé la méthode pour Debian Jessie ci-dessus, mais elle refuse de démarrer pour moi. Je n'ai pas encore essayé la méthode décrite dans les commentaires ici .

Les solutions publiées seront testées sur une VirtualBox VM avec deux disques virtuels vierges et une version de publication du bureau 15.04 (version AMD64). Bounty va à la première solution que j’adopte pour réinstaller mon matériel actuel.

S'il vous plaît écrivez votre solution comme si elle allait dans le wiki de la communauté.


J'ai octroyé cette prime. Je pense qu'il existe toujours un potentiel pour une solution "LUKS-on-LVM" qui associe la facilité de la réponse approuvée à ne disposer que d'un mot de passe et à n'utiliser que des composants device-mapper.

10
Adrian

LVM sur LUKS sur bcache

Ici le jeu de la poupée russe est un peu plus profond avec 3 piles/couches ...

Mon idée initiale sur cette question était d’utiliser une installation Ubuntu par défaut avec LVM sur LUKS et de la convertir en un bcache dispositif de support avec blocs mais cela n’a pas fonctionné pour moi lors de mon test avec LVM.

De plus, le programme d’installation d’ubuntu ( ubiquity ) est trop limité pour être installé à l’intérieur d’un périphérique bcache préparé à l’avance (au moins avec LUKS le LVM), nous avons donc recours à une méthode permettant de faire les choses manuellement.

Démarrez sur le live CD/USB et choisissez "Try Ubuntu" et ouvrez un terminal

Pré-installer

Sudo -i
# Define some variable to avoid confusion and error
luks_part=/dev/sda3
boot=/dev/sda2                    # boot partition
caching_bcache=/dev/sdb           # SSD or partition in SSD

# Do secure erase of encrypted backing and caching device (see Notes [1])
dd if=/dev/urandom of=$luks_part || dd if=/dev/urandom of=$caching_bcache
# Go and grab some coffe, this will take a while...

apt-get install bcache-tools
# Setup bcache caching and backing devices
make-bcache -C $caching_bcache -B $luks_part
# (Optional) Tweak bcache
echo writeback > /sys/block/bcache0/bcache/cache_mode

# Below we now create manually what ubiquity should have done for us
# Setup LUKS device on bcache device
cryptsetup --key-size 512 luksFormat /dev/bcache0
cryptsetup luksOpen /dev/bcache0 crypted

# Setup LVM on LUKS
# You can skip that part if you don't want to use a swap
# or don't want to use multiple partition. Use /dev/mapper/crypted
# as you root latter on
pvcreate  /dev/mapper/crypted
vgcreate vg /dev/mapper/crypted
lvcreate -L 1G vg -n swap
lvcreate -l 100%FREE vg -n root

Installation

Laissez le terminal ouvert et lancez maintenant l'installation. Choisissez "Quelque chose d'autre" lors du partitionnement et spécifiez

  • votre partition de démarrage (/dev/sda2)
  • votre partition racine (/dev/mapper/vg-root)
  • votre échange (/dev/mapper/vg-swap)

et cochez la case pour formater vos partitions

À la fin de l'installation, ne redémarrez pas mais cliquez simplement sur "Continuer à essayer ubuntu"

Post-installation

Dans notre terminal ouvert

# Install bcache-tools to add bcache module to initramfs
mount /dev/mapper/vg-root /mnt
mount $boot /mnt/boot
mount -o bind /sys /mnt/sys
mount -o bind /proc /mnt/proc
mount -o bind /dev /mnt/dev
chroot /mnt
# To get apt-get running in the chroot
echo 'nameserver 8.8.8.8' > /run/resolvconf/resolv.conf
apt-get install bcache-tools

# Create /etc/crypttab to add crypted bcached partition
echo "crypted UUID=`blkid -o value /dev/bcache0|head -1` none luks" > /etc/crypttab

exit
sync
umount /mnt/sys
umount /mnt/proc
umount /mnt/dev
umount /mnt/boot
umount /mnt
vgchange -an /dev/mapper/crypted
cryptsetup luksClose crypted
sync

# Reboot & enjoy

Il existe un bogue connu de redémarrage d'Ubuntu 15.04 provenant de Live CD/USB, vous devrez donc forcer le redémarrage/l'arrêt.

Vérifier

Une fois démarré, vous pouvez vérifier que /dev/bcache0 est en fait une partition LUKS avec

if Sudo cryptsetup isLuks /dev/bcache0; then \
    echo "crypted";\
    else echo "unencrypted";\
fi

En effet, il s’agit du cache de votre partition LUKS et vous accédez désormais à vos données via le périphérique /dev/bcache0 et jamais depuis le périphérique de sauvegarde d’origine (/dev/sda3 ici).

Références

http://bcache.evilpiepirate.org/

https://wiki.archlinux.org/index.php/Bcache

https://wiki.archlinux.org/index.php/Dm-crypt

bcache-status n'est pas encore officiellement fusionné dans bcache-tools. Vous pouvez l'avoir ici: https://Gist.github.com/djwong/6343451

[1] Il pourrait y avoir de meilleures façons de faire this essuyer

7
solsTiCe

LVM sur LUKS + LUKS/dm-cache

Le programme d’installation Ubuntu utilise la configuration LVM on LUKS pour le chiffrement intégral de son disque.

Si vous souhaitez également utiliser dm-cache/lvmcache pour améliorer les performances, vous devez placer votre pool de cache dans un volume chiffré afin de préserver la sécurité de vos données.

Les étapes sont

  • Créer un volume LUKS sur le périphérique de bloc cible
  • Étendre le groupe de volumes par défaut avec le nouveau volume LUKS chiffré
  • Créez les métadonnées de cache et les volumes de données dans le nouveau volume LUKS
  • Les lier ensemble comme un pool de cache
  • Lier ce pool de cache au volume racine
  • Assurez-vous que le nouveau volume chiffré peut être monté au démarrage en l'ajoutant à /etc/crypttab
  • Assurez-vous que votre environnement d'initialisation prend en charge dm-cache.

Le script ci-dessous fournit un exemple et ajoutera un pool de cache chiffré à un système de fichiers racine existant. Il a été conçu pour les systèmes ayant utilisé l’option de chiffrement de disque par défaut dans le programme d’installation d’Ubuntu - c’est-à-dire; Disque entier partitionné et crypté, pas de partitions personnalisées, etc.

Veuillez noter que ce script contient très peu de validation ou de programmation défensive. Si cela détruit votre système de travail, c'est votre responsabilité.

Appelez ainsi:

# 1   2          3           4     5    6
Sudo bash lvmcryptocache /dev/sdb 32M 1968M
  1. Besoin de racine pour travailler
  2. lancer le script en bash
  3. le nom du script
  4. le périphérique de bloc que vous souhaitez utiliser (testé uniquement avec le disque entier)
  5. la taille des métadonnées
  6. la taille des données de cache

Les paramètres de taille sont par défaut exprimés en Mo: vous aurez besoin d’un ratio espace de métadonnées de 1: 1 000 sur espace de cache (par exemple, si votre disque de cache est de 180 Go, vous avez besoin de 180 Mo d’espace de métadonnées et de 179820 Mo d’espace de données. métadonnées un peu plus prudentes, il y a une limite inférieure pour les métadonnées de 8M.)

Vous serez invité à entrer un mot de passe pour votre volume de cache. Vous serez invité à entrer les mots de passe pour LES DEUX de vos disques lors du démarrage.

Références


 #!/bin/bash 
 # 
 # lvmcryptocache 
 # 
 # Ajoutez un pool de cache LVM et attachez-le au volume racine 
 # Y compris le cryptage LUKS 
 # Supposons que vous utilisez une configuration "tout à la racine" 
 # Si ce n'est pas le cas, adaptez-le si vous aimez 
 # 
 # Script sous licence GPL3 ou version ultérieure 
 # © Adrian Wilkins Mai 2015 
 # 
 # Indiquez le nom du périphérique de disque que vous utilisez en tant que cache 
 # Cela devrait idéalement être totalement vierge, alors exécutez 
 # 
 # Jj si =/dev/zéro sur =/dev/$ {DISK} 
 # 
 # Plus pendant un court instant, la table de partition est détruite 
 
 CACHE_DISK = 1 $ 
 META_SIZE = 2 $ 
 DATA_SIZE = 3 $ 
 
 DISK_NAME = $ (nom de base $ CACHE_DISK) 
 
 CRYPT_VOLUME = $ {DISK_NAME} _crypt 
 CACHE_PV =/dev/mapper/$ {CRYPT_VOLUME} 
 
 # Créer un volume LUKS sur le disque brut 
 
 Cryptsetup luksFormat $ CACHE_DISK 
 Cryptsetup open --type luks $ CACHE_DISK $ CRYPT_VOLUME 
 
 #. A commencé à essayer une nd travailler sur la taille du disque, mais c'est complexe 
 # Essayez si vous voulez, je n'arrêtais pas de manquer d'étendue 
 # 
 # DISK_SIZE = $ (fdisk -l | grep "Disque $ {CACHE_DISK}" | awk '{print $ 5}') 
 # 
 # META_SIZE = $ ((DISK_SIZE/1000)) 
 # META_SIZE = $ ((META_SIZE + 512)) 
 # MOD = $ ((META_SIZE% 512)) 
 # MOD_OFFSET = $ ((512 - MOD)) 
 # META_SIZE = $ ((META_SIZE + 512)) 
 # META_SIZE = $ ((META_SIZE + MOD_OFFSET)) 
 # 
 # DATA_SIZE = $ ((DISK_SIZE - META_SIZE)) 
 # 
 
 #. nouveau PV dans le volume chiffré 
 
 pvcreate $ CACHE_PV 
 vgextend ubuntu-vg $ CACHE_PV 
 lvcreate -L $ {META_SIZE} -n cachemeta ubuntu-vg $ CACHEP. .____.] lvcreate -L $ {DATA_SIZE} -n cachedata ubuntu-vg $ CACHE_PV 
 lvconvert - type de cache-pool --poolmetadata ubuntu-vg/cachemeta - cachemode writeethrough ubuntu-vg/cachedata - oui 
 lvconvert --type cache --cachepool ubuntu-vg/cachedata ubuntu-vg/root 
 
 # Ajoutez maintenant l’UUID du pool de cache PHYSICAL DRIVE (/ dev/sdb ) à /etc/crypttab
DISK_UUID=$(ls -al/dev/disk/by-uuid/| grep $ NOM_DISK | Awk '{print $ 9}') 
 echo "$ {CRYPT_VOL UME} UUID = $ {DISK_UUID} aucunement luks, ignorez le type ">> /etc/crypttab[.____. LOGH. ] HOOK = $ (tempfile) 
 # Ajoutez un script hook à initramfs pour ajouter les outils et modules appropriés 
 
 Echo "#!/Bin/sh"> $ HOOK 
 echo "PREREQ =" lvm2 "" >> $ HOOK 
 echo "prereqs ()" >> $ HOOK 
 echo "{" >> $ HOOK 
 echo " echo\"$ PREREQ \" ">> $ HOOK 
 echo"} ">> $ HOOK 
 echo" case $ 1 dans ">> $ HOOK 
 echo" prereqs) " >> $ HOOK 
 Echo "prereqs" >> $ HOOK 
 Echo "sortie 0" >> $ HOOK 
 Echo ";;" >> $ HOOK 
 Echo "esac" >> $ HOOK 
 Echo "si [! -X/usr/sbin/cache_check]; alors" >> $ HOOK 
 Echo " exit 0 ">> $ $ HOOK 
 echo" fi ">> $ HOOK 
 echo"./usr/share/initramfs-tools/hook-functions ">> $ HOOK 
 echo "copy_exec/usr/sbin/cache_check" >> $ HOOK 
 echo "manual_add_modules dm_cache dm_cache_mq dm_persistent_data dm_bufio" >> $ HOOK 
. 
. /hooks/lvmcache
chmod + x /etc/initramfs-tools/hooks/lvmcache[.____. strangeecho "dm_cache" >> /etc/initramfs-tools/modules
 echo "dm_cache_mq" >> /etc/initramfs-tools/modules
echo "dm_persistent_data" >> /etc/initramfs-tools/modules
echo "dm_persistent_data" >> /etc/initramfs-tools/modules
echo "dm_bufio" >>/etc/initramfs- outils/modules 
 
 # Mise à jour initramfs 
 
 update-initramfs -u 
 
 echo Maintenant redémarrez! 
4
Adrian