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

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

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

Это будет навязчивый вопрос. Награда будет присуждаться за:

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

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

Опубликованные решения будут протестированы на виртуальной машине VirtualBox с двумя пустыми виртуальными дисками и выпускной версией рабочего стола 15.04 (выпуск amd64). Баунти обращается к первому решению, которое я принимаю для переустановки моего реального оборудования.

Пожалуйста, напишите свое решение, как если бы оно входило в вики сообщества.


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

2 ответа

Решение

ЛВМ на ЛУКС на bcache

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

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

Более того, установщик ubuntu (ubiquity) слишком ограничен для установки внутри заранее подготовленного устройства bcache (по крайней мере, с LUKS на LVM), поэтому мы отступаем к методу выполнения действий вручную.

Загрузитесь с live 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

Монтаж

Держите терминал открытым и запустите установку. Выберите "Нечто другое" при разбиении и укажите

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

и установите флажок для форматирования ваших разделов

В конце установки не перезагружайтесь, а просто нажмите "Продолжить пробовать 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 с Live 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-status еще не объединен с bcache-tools. Вы можете получить его здесь: https://gist.github.com/djwong/6343451

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

ЛВМ на ЛУКС + ЛУКС / дм-кеш

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

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

Шаги

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

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

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

Звоните так:

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

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

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

Рекомендации


#! / bin / bash #
# lvmcryptocache #
# Добавить пул кэш-памяти LVM и подключить его к корневому тому # Включая шифрование LUKS # Предполагается, что вы используете настройку "все в корне" # Если это не так, адаптируйте его, если вы как #
# Скрипт с лицензией GPL3 или более поздней версии # © Adrian Wilkins май 2015
#
# Передайте имя дискового устройства, которое вы используете в качестве кэша # В идеале это должно быть абсолютно пустым, поэтому запустите #
# dd if=/dev/zero of=/dev/${DISK}
#
# на короткое время обнулить таблицу разделов CACHE_DISK=$1
META_SIZE=$2
DATA_SIZE=$3

DISK_NAME=$(базовое имя $CACHE_DISK)

CRYPT_VOLUME=${DISK_NAME}_crypt
CACHE_P /${CRYPT_VOLUME}

# Создать том LUKS в необработанном диске cryptsetup luksFormat $CACHE_DISK
cryptsetup open --type luks $CACHE_DISK $CRYPT_VOLUME

# Начал пробовать работу с размером диска, но это сложно # Пройдите, если хотите, я продолжал работать вне пределов #
# DISK_SIZE=$(fdisk -l | grep "Диск ${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))
# 

# Создать новый PV в зашифрованном томе pvcreate $CACHE_PV
vgextend ubuntu-vg $CACHE_PV
lvcreate -L ${META_SIZE} -n cachemeta ubuntu-vg $CACHE_nL {DAT} $ VACHE_PL {DATE} {vLV} $ CACHE_nL $ {CACHE_NL} {CABE_NL} {CABE_NL} {CABE_NL} {CABE_NL} {DATE} {$ LAT {DATE} {$ DATE {PATE} {$} DATA {DATE} {DATV} {$} {DAT}} {} cachedata ubuntu-vg $ CACHE_PV
lvconvert - тип кеш-пула --poolmetadata ubuntu-vg/cachemeta --cachemode writethrough ubuntu-vg/cachedata --yes
lvconvert - тип кеша --cachepool ubuntu-vg/cachedata ubuntu-vg/root

# Теперь добавьте UUID пула кеша PHYSICAL DRIVE (/dev/sdb) в /etc/crypttab
DISK_UUID=$(ls -al /dev/disk/by-uuid/ | grep $DISK_NAME | awk '{ print $9 }')
echo "${CRYPT_VOLUME} UUID=${DISK_UUID} none luks, отбросить" >> /etc/crypttab

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

HOOK=$(tempfile)
# Добавьте скрипт ловушки в initramfs, чтобы добавить нужные инструменты и модули. Echo "#!/ Bin/sh" > $HOOK
echo "PREREQ="lvm2"" >> $HOOK
echo "prereqs()" >> $HOOK
echo "{" >> $HOOK
echo "  echo \"$PREREQ\"" >> $HOOK
echo "}" >> $HOOK
echo "case $1 в " >> $HOOK
echo "prereqs)" >> $HOOK
echo "  prereqs" >> $HOOK
echo "  exit 0" >> $HOOK
echo ";;" >> $HOOK
echo "esac" >> $HOOK
echo "if [! -X /usr/sbin/cache_check ]; затем" >> $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 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

# Обновить initramfs update-initramfs -u echo Теперь перезагрузите компьютер! 
Другие вопросы по тегам