Как установить Ubuntu и с шифрованием диска И С кэшированием SSD

Я использую Ubuntu в корпоративной среде, и наша политика безопасности указывает, что мы должны использовать полное шифрование диска.

Я также получил ноутбук с mSATA SSD на 32 ГБ и 750 ГБ вращающейся ржавчины. Моя текущая установка использует bcache для усиления этого, установленное использование этой процедуры. Это обеспечивает очень желанное повышение производительности без меня имеющий необходимость волноваться о заполнении SSD.

Это будет bountied вопросом. Щедрость будет награждена за:

  • Четкий, надежный метод выполнения новой установки Ubuntu
    • Любой выпуск приемлем, но 15.04 (Яркий) будет прекрасен
  • Вся файловая система будет зашифрована
    • Предпочтение здесь состоит в том, чтобы использовать соответствующий флажок в программе установщика Повсеместности по умолчанию (шифрование dm-склепа)
  • Файловая система будет кэшироваться на SSD
    • Для предпочтения dm-кэш ядра / lvmcache метод видит здесь, чтобы метод сделал это с Debian Jessie
    • Кэш должен также быть защищен (т.е. зашифрован),
    • Должно быть четкое объяснение относительно того, почему кэш также шифруется

Уже попробовали метод за Debian Jessie выше, но он отказывается загружаться для меня. До сих пор не попробовали метод, описанный в комментариях здесь.

Отправленные решения будут протестированы на VirtualBox VM с двумя пустыми виртуальными дисками и копией выпуска 15,04 рабочих столов (amd64 выпуск). Щедрость переходит к первому решению, которое я принимаю для переустановки моих фактических аппаратных средств.

Запишите свое решение, как будто оно входило в общественную Wiki.


Я наградил щедрость - я думаю, что там является все еще потенциальным для "LUKS-on-LVM" решения, которое комбинирует простоту утвержденного ответа только в наличии одного пароля только с использованием компонентов картопостроителя устройства.

10
задан 18 May 2015 в 00:43

2 ответа

LVM на LUKS на bcache

Здесь российская игра куклы немного глубже с 3 стеками/слоями...

Моя начальная идея об этом вопросе состояла в том, чтобы использовать установку Ubuntu по умолчанию с LVM на LUKS и преобразовать его в bcache отступающее устройство с блоками, но это не работало на меня на моем тесте с LVM.

Кроме того, установщик человечности (повсеместность) слишком ограничен для установки в bcache устройстве, подготовленном заранее (по крайней мере, с LUKS на LVM), таким образом, мы нейтрализация к методу выполнения вещей вручную.

Начальная загрузка в живой CD/USB и выбирает "Try Ubuntu" и открывает терминал

Предварительно установить

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

Установка

Сохраните терминал открытым и теперь выполните установку. Выберите "Something else" при разделении и укажите

  • Ваш раздел начальной загрузки (/dev/sda2)
  • Ваш корневой раздел (/dev/mapper/vg-root)
  • Ваша подкачка (/dev/mapper/vg-swap)

и проверьте флажок для форматирования разделов

В конце установки не перезагружайте, но просто нажимайте "Continue trying ubuntu"

Постустановка

В нашем открытом терминале

# 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

Существует известная ошибка перезагрузки Ubuntu 15.04 с Живого CD/USB, таким образом, Вам, возможно, придется вызвать перезагрузку/завершение работы

Проверить

После того, как загруженный, можно проверить это /dev/bcache0 на самом деле раздел LUKS с

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

Это вызвано тем, что это - кэш Вашего раздела LUKS, и Вы теперь получаете доступ к своим данным через устройство /dev/bcache0 и никогда от исходного устройства поддержки (/dev/sda3 здесь)

Ссылки

http://bcache.evilpiepirate.org/

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

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

bcache-состояние официально не объединяется в bcache-инструменты, еще. У Вас может быть он здесь: https://gist.github.com/djwong/6343451

[1] Могли бы быть лучшие способы сделать это стирание

7
ответ дан 23 November 2019 в 04:32

LVM на LUKS + LUKS/dm-cache

Установщик Ubuntu использует LVM на конфигурации LUKS, поскольку это - полное шифрование диска.

Если Вы захотите также использовать dm-кэш / lvmcache для повышения производительности, то необходимо будет поместить объединение кэша в зашифрованный том для поддержания безопасности данных.

Шаги

  • Создайте объем LUKS на целевом блочном устройстве
  • Расширитесь группа объема по умолчанию с новым зашифровала объем LUKS
  • Создайте метаданные кэша и объемы данных в новом объеме LUKS
  • Свяжите их как пул кэша
  • Свяжите этот пул кэша с корневым объемом
  • Удостоверьтесь, что новый зашифрованный том может быть смонтирован при начальной загрузке путем добавления его к /etc/crypttab
  • Удостоверьтесь, что Ваша загрузочная среда поддерживает dm-кэш

Сценарий ниже обеспечивает пример и добавит зашифрованный пул кэша к существующей корневой файловой системе. Это было разработано для систем, которые использовали опцию шифрования диска по умолчанию в установщике Ubuntu - т.е.; целый диск разделен и зашифрованный, никакие пользовательские разделы и т.д.

Обратите внимание на то, что существует очень мало проверки или безопасного программирования в этом сценарии. Если это уничтожает Вашу рабочую систему, которая является Вашей ответственностью.

Звоните таким образом:

# 1   2          3           4     5    6
sudo bash lvmcryptocache /dev/sdb 32M 1968M
  1. Потребности базируются для работы
  2. запустите скрипт в ударе
  3. название сценария
  4. блочное устройство Вы хотите использовать (только протестированный с целым диском)
  5. размер метаданных
  6. размер данных кэша

Параметры размера находятся по умолчанию в МБ: Вам будет нужно отношение 1:1000 пространство метаданных для кэширования пространства (например, если диск кэша составляет 180 ГБ, Вам нужны 180 МБ пространства метаданных и 179820 МБ пространства данных - можно хотеть округлить в большую сторону метаданные немного, чтобы быть осторожными. Существует нижний предел для метаданных 8M.)

Вам предложат пароль для Вашего объема кэша - Вам предложат пароли для ОБОИХ из Ваших дисков во время начальной загрузки.

Ссылки


#!/bin/bash
#
# lvmcryptocache
#
# Add an LVM cache pool on and attach it to the root volume
# Including LUKS encryption
# Assumes you are using an "all on root" setup
# If you are not, adapt it if you like
#
# Script licensed GPL3 or later
# © Adrian Wilkins May 2015
#
# Pass the name of the disk device you are using as a cache
# This should ideally be totally blank, so run
#
# dd if=/dev/zero of=/dev/${DISK}
#
# over it for a short while to nuke the partition table

CACHE_DISK=$1
META_SIZE=$2
DATA_SIZE=$3

DISK_NAME=$(basename $CACHE_DISK)

CRYPT_VOLUME=${DISK_NAME}_crypt
CACHE_PV=/dev/mapper/${CRYPT_VOLUME}

# Create LUKS volume in raw disk

cryptsetup luksFormat $CACHE_DISK
cryptsetup open --type luks $CACHE_DISK $CRYPT_VOLUME

# Started to try and work out disk size stuff but it's complex
# Have a go if you like, I kept running out of extents
#
# DISK_SIZE=$(fdisk -l | grep "Disk ${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))
# 

# Create new PV inside encrypted volume

pvcreate $CACHE_PV
vgextend ubuntu-vg $CACHE_PV
lvcreate -L ${META_SIZE} -n cachemeta ubuntu-vg $CACHE_PV
lvcreate -L ${DATA_SIZE} -n cachedata ubuntu-vg $CACHE_PV
lvconvert --type cache-pool --poolmetadata ubuntu-vg/cachemeta --cachemode writethrough ubuntu-vg/cachedata --yes
lvconvert --type cache --cachepool ubuntu-vg/cachedata ubuntu-vg/root

# Now add the UUID of the cache pool PHYSICAL DRIVE (/dev/sdb) to /etc/crypttab
DISK_UUID=$(ls -al /dev/disk/by-uuid/ | grep $DISK_NAME | awk '{ print $9 }')
echo "${CRYPT_VOLUME} UUID=${DISK_UUID} none luks,discard" >> /etc/crypttab

apt-get install --yes thin-provisioning-tools

HOOK=$(tempfile)
# Add a hook script to initramfs to add the right tools and modules

echo "#!/bin/sh" > $HOOK
echo "PREREQ="lvm2"" >> $HOOK
echo "prereqs()" >> $HOOK
echo "{" >> $HOOK
echo "  echo \"$PREREQ\"" >> $HOOK
echo "}" >> $HOOK
echo "case $1 in" >> $HOOK
echo "prereqs)" >> $HOOK
echo "  prereqs" >> $HOOK
echo "  exit 0" >> $HOOK
echo "  ;;" >> $HOOK
echo "esac" >> $HOOK
echo "if [ ! -x /usr/sbin/cache_check ]; then" >> $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

cp $HOOK /etc/initramfs-tools/hooks/lvmcache
chmod +x /etc/initramfs-tools/hooks/lvmcache

echo "dm_cache" >> /etc/initramfs-tools/modules
echo "dm_cache_mq" >> /etc/initramfs-tools/modules
echo "dm_persistent_data" >> /etc/initramfs-tools/modules
echo "dm_bufio" >> /etc/initramfs-tools/modules

# Update initramfs

update-initramfs -u

echo Now reboot!
4
ответ дан 23 November 2019 в 04:32

Другие вопросы по тегам:

Похожие вопросы: