Как установить 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
- Нужен рут для работы
- запустить скрипт в bash
- название сценария
- блочное устройство, которое вы хотите использовать (тестируется только с целым диском)
- размер метаданных
- размер данных кеша
Параметры размера по умолчанию указаны в МБ: вам потребуется соотношение пространства метаданных 1:1000 к пространству кэша (например, если ваш кэш-диск имеет размер 180 ГБ, вам нужно 180 МБ пространства метаданных и 179820 МБ пространства данных - вы можете захотеть округлить немного метаданных, чтобы быть осторожным. Существует нижний предел для метаданных 8M.)
Вам будет предложено ввести пароль для вашего тома кеша - вам будет предложено ввести пароль для ОБА ваших дисков во время загрузки.
Рекомендации
- Использование новой функции кэширования LVM (Ричард Джонс)
- Шифрование всей системы (dm-crypt wiki)
- Комментарии к ошибке Launchpad #1423796
- Загрузка Debian Jessie из lvmcache
#! / 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 Теперь перезагрузите компьютер!