Загрузка с зашифрованного раздела

Автор mcherenkov, 26 июля 2015, 14:06:58

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

mcherenkov

Мир вам, дорогие форумчане!

Некоторое время назад попробовал поставить Debian 8.1 (менее вероятно - 8.0, с последующим обновлением; точно уже не помню) на зашифрованный корень. К сожалению у меня не сохранился журнал установки, но точно помню, что grub у меня отказался ставиться способом по умолчанию - пришлось как-то уговаривать его из консоли.
Уговорил с грехом пополам.
В результате загрузка начинается с того, что у меня запрашивается пароль корня, живущего в зашифрованном sda5. Затем появляется меню grub'а и начинается загрузка, вскоре прерывающаяся сообщением
"

Gave up waiting for root device. Common problems:
- Boot args (cat /proc/cmdline)
   - Check rootdelay= (did the system wait long enough?)
   - Check root= (did the system wait for the right device?)
- Missing modules (cat /proc/modules; ls /dev)
ALERT!  /dev/mapper/sda5 does not exist. Dropping to a shell!
modprobe: module_ehci-orion not found in modules.dep


BusyBox v1.22.1 (Debian 1:1.22.0-9÷deb8u1) built-in shell (ash)
Enter 'help' for a list of built-in commands.

/bin/sh: can't access tty; job control turned off
(initramfs)
"
.
Приходится вводить команду "cryptsetup open /dev/sda5 sda5_crypt", и, повторно, пароль для sda5, после чего ОС всё-таки загружается.
1) Как это автоматизировать?
2) Или хотя бы как найти как это автоматизировать?
3) А ещё - как избежать повторного ввода того же пароля?
Пытался использовать способ вроде http://askubuntu.com/questions/516217/alert-dev-disk-by-uuid-xxxxxxxxx-does-not-exist-dropping-to-a-shell , но кажется это привело лишь к тому, что фраза "ALERT!  /dev/mapper/sda5 does not exist." заменилась на "ALERT!  /dev/disk/by-uuid/<UUID> does not exist.", что пожалуй даже несколько хуже, так как теперь система не подсказывает какой раздел нужно открывать.
4) Кстати менее важный вопрос - как можно восстановить прежний запрос? Хотя в случае решения вопроса 1 это станет ещё менее актуально.

В рамках вопроса №2 собираюсь проводить исследование по запросам вроде "debug boot linux", "отладка загрузки linux", но если найдутся какие-нибдуь более быстрые пути - был бы рад их узнать.

dr_faust

Я не специалист в дебианте, совсем даже не специалист, но в других линуксах с шифрованием экспериментировал, поэтому попробую методом аналогии, если что, то не взыщите.

1. Покажите
А) /etc/default/grub
Б) /etc/crypttab
Где эти файлы точно располагаются в дебианте не знаю, но, в любом случае, они должны быть в  /etc

2.
Цитата: mcherenkov от 26 июля 2015, 14:06:58
В результате загрузка начинается с того, что у меня запрашивается пароль корня, живущего в зашифрованном sda5. Затем появляется меню grub'а и начинается загрузка, вскоре прерывающаяся сообщением
Я так понял, что у вас запрашивается пароль, а потом уж начинает грузиться груб?
Если так, то возникает вопрос: где у вас /boot? Не на зашифрованном случаем разделе?
И еще. Выложите структуру разделов на которых стоит ось, т.е. sda1 - boot, sda2 - root, sda3 - home и т.д.

3. Чем шифровали: dn-crypt, LUKS?

З.Ы. Сходите на арчвики, там есть статьи по этой теме(правда на инглише).
Debian 10. LXDE.

mcherenkov

1.
А) /etc/default/grub

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

#####################################################
#Installing for i386-pc platform.
#grub-install: error: attempt to install to encrypted disk without cryptodisk enabled.
#Set `
GRUB_ENABLE_CRYPTODISK=y
#' in file `/etc/default/grub'..



Б) /etc/crypttab
sda3_crypt UUID=ea668daa-2117-4293-a2c4-633e9b819ec0 none luks,swap
#sda5 UUID=2026b13e-e3fe-4af7-8867-6285bedabc4c none luks

//То, что закомментировано - это я пробовал добавлять, но это добавление привело только к лишнему запросу пароля.

2.
> Цитата: mcherenkov от 26 Июль 2015, 14:06:58
>>     В результате загрузка начинается с того, что у меня запрашивается пароль корня, живущего в зашифрованном sda5. Затем появляется меню grub'а и начинается загрузка, вскоре прерывающаяся сообщением
> Я так понял, что у вас запрашивается пароль, а потом уж начинает грузиться груб?
Именно так. Точнее запрашивается "master key".
>
>
>
> Если так, то возникает вопрос: где у вас /boot? Не на зашифрованном случаем разделе?
Да, на том же разделе, где и корень.

> И еще. Выложите структуру разделов на которых стоит ось, т.е. sda1 - boot, sda2 - root, sda3 - home и т.д.
>

# mount

sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=949372,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,relatime,size=1535784k,mode=755)
/dev/mapper/crypt_sda5 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=22,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
rpc_pipefs on /run/rpc_pipefs type rpc_pipefs (rw,relatime)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)
tmpfs on /run/user/115 type tmpfs (rw,nosuid,nodev,relatime,size=767892k,mode=700,uid=115,gid=124)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=767892k,mode=700,uid=1000,gid=1000)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)


# mount|grep boot
# df -h

Файловая система Размер Использовано  Дост Использовано% Cмонтировано в
/dev/dm-1           46G         3,9G   40G            9% /
udev                10M            0   10M            0% /dev
tmpfs              1,5G         9,0M  1,5G            1% /run
tmpfs              3,7G          68K  3,7G            1% /dev/shm
tmpfs              5,0M         4,0K  5,0M            1% /run/lock
tmpfs              3,7G            0  3,7G            0% /sys/fs/cgroup
tmpfs              750M         4,0K  750M            1% /run/user/115
tmpfs              750M         8,0K  750M            1% /run/user/1000

# ls -l /dev/mapper/crypt_sda5
lrwxrwxrwx 1 root root 7 авг 10 20:34 /dev/mapper/crypt_sda5 -> ../dm-1
#

> 3. Чем шифровали: dn-crypt, LUKS?
Насколько я понимаю - LUKS. Это было сделано в ходе установки одной из прошлых версий Дебиана.
# cryptsetup status crypt_sda5

/dev/mapper/crypt_sda5 is active and is in use.
  type:    LUKS1
  cipher:  aes-xts-plain64
  keysize: 512 bits
  device:  /dev/sda5
  offset:  4096 sectors
  size:    97650688 sectors
  mode:    read/write

#

>
> З.Ы. Сходите на арчвики, там есть статьи по этой теме(правда на инглише).

https://wiki.archlinux.org/index.php/Encryption
Это? Спасибо, буду иметь в виду.

dr_faust

#3
mcherenkov, понятно.
Значит делаем так.
1. Выносим /boot на другой раздел или уст. его на флешку
2. Вносим соответствующие коррективы в .etc/fstab, т.е. прописываем вновь созданный раздел
3. Сносим груб со всемы его конфигами и устанавливаем заново на созданный раздел загрузки
4. Идем в /etc/default/grub и в
GRUB_CMDLINE_LINUX_DEFAULT=" пишем "cryptdevice=UUID=<uuid зашифрованного раздела>
5. Выполняем grub-mkconfig -o boot/grub/grub.cfg(не уверен, что есть такая комманда в дебианте, просто посмотрите как сгенерить boot/grub/grub.cfg)
6. Идем в /etc/crypttab и сверяем UUID.
Если все правильно, перезагружаемся. После этого должно все восстановиться.
Кажется ничего не забыл.

Cообщение объединено 13 августа 2015, 11:21:34

З.Ы. И сходитека на pgpru.com да рссакажите тамошним обитателям, как вы умудрились запускать систему с зашифрованным загр. разделом. Никакого издевательства или желатия постебаться с моей стороны, просто я не понимаю как такое возможно, может тамошние эксперты что-то прояснят.

З.З.Ы. У ва похоже 2 шифр. раздела: корень и свап?
Также неплохо было бы выложить фото того окна, что выскакивает для ввода пароля перед запуском груба, а также вспомнить версию исп.для уст. образа. у меня 8.1 поддерживает только dm-crypt, luks не вижу.
Debian 10. LXDE.

dr_faust

mcherenkov, пожалуйста, расскажите чем закончилась(или не закончилась) ваша эпопея?
Debian 10. LXDE.

mcherenkov

Пока не было времени что-либо делать...

Учитывая что dm-crypt более правильный..
(
> 8.1 поддерживает только dm-crypt, luks не вижу
)
... хочу немного почитать про него и переставить систему на него, когда руки дойдут.

> З.З.Ы. У ва похоже 2 шифр. раздела: корень и свап?
Если точнее - то ещё пара шифрованных разделов, но они не монтировались, и, соответственно, не упоминались - в том числе для простоты.

> Также неплохо было бы выложить фото того окна, что выскакивает для ввода пароля перед запуском груба,
Это не окно, а обычная строчка на чёрном фоне консоли. Выложить фотографию пока не могу, так как под рукой нет телефона, поддерживающего Linux.

> З.Ы. И сходитека на pgpru.com да рссакажите тамошним обитателям, как вы умудрились запускать систему с зашифрованным загр. разделом. Никакого издевательства или желатия постебаться с моей стороны, просто я не понимаю как такое возможно, может тамошние эксперты что-то прояснят.
> а также вспомнить версию исп.для уст. образа. у меня 8.1 поддерживает только dm-crypt, luks не вижу.
Если точнее - разделы были созданы инсталлятором одной из предыдущих версий, вероятно 7.x (не думал, что это существенно, и потому не стал об этом говорить).

dr_faust

mcherenkov, наконец-то я и сам перешел на дебиант.
По dm-crypt. В инсталяторе только он, но вот созданный раздел  luks. Наверное  dm-crypt это просто ошибка человека поддерживающего инсталятор, По умолчанию шифруется luks.
Я не уверен, что  dm-crypt лучше: единственное его достоинство, с моей точки зрения, отсутствие заголовка с ключом, у этого стандарта ключ - непосредственных хэш вашего пароля. Мне лично больше нравиться  luks, впрочем это дело вкуса, ставьте то, что вам больше нравиться. Но с  dm-crypt придется ставить ручками с другого дистрибутива с помощью debootstrap. Как это делать я не знаю, т.к. устанавливал стандартным инсталятором. Впрочем, если вы будете ставить шифр. дебиант debootstrap"ом и  если вас не затруднит, пожалуйста, опишите процесс установки, вернее то, что касается шифрования, т.к. я не вникал в особенности этого процесса на дебианте, мне будет интересно почитать.

По моему мнению, все разделы касающиеся вашей оси стоит установить в один заш. раздел, в котором создать lvm-тома.

Про другие разделы спросил, т.к. у вас 2 шифр. раздела и система запрашивает 2 пароля. Возможно, что она требует пароли именно к 2 разным шифр. разделам. Подумайте над этим.
Еще одна просьба. Пожалуйста, покажите свой  /etc/fstab. Хочу уточнить некоторые моменты касательно прописывания там шифрованных разделов.
Debian 10. LXDE.

mcherenkov

> По моему мнению, все разделы касающиеся вашей оси стоит установить в один заш. раздел, в котором создать lvm-тома.
Почему? Чтобы вводить один пароль?
И раздел luks, называемый инсталлятором dm-crypt?

> Про другие разделы спросил, т.к. у вас 2 шифр. раздела и система запрашивает 2 пароля. Возможно, что она требует пароли именно к 2 разным шифр. разделам. Подумайте над этим.
Не догадался что Вы имели в виду. Два пароля - это чем-то плохо? Вы имеете в виду - "неудобно", или что-то ещё?

> Еще одна просьба. Пожалуйста, покажите свой  /etc/fstab. Хочу уточнить некоторые моменты касательно прописывания там шифрованных разделов.

/dev/mapper/sda5_crypt /               ext4    errors=remount-ro 0       1
/dev/mapper/sda3_crypt none            swap    sw              0       0


dr_faust

Цитата: mcherenkov от 19 сентября 2015, 21:32:02> По моему мнению, все разделы касающиеся вашей оси стоит установить в один заш. раздел, в котором создать lvm-тома.
Почему? Чтобы вводить один пароль?
И раздел luks, называемый инсталлятором dm-crypt?
1. Да, чтобы запоминать меньше паролей.
2. Возможность перераспределять дисковое пространство lvm, что невозможно при использовании обычных разделов.

Цитата: mcherenkov от 19 сентября 2015, 21:32:02> Про другие разделы спросил, т.к. у вас 2 шифр. раздела и система запрашивает 2 пароля. Возможно, что она требует пароли именно к 2 разным шифр. разделам. Подумайте над этим.
Не догадался что Вы имели в виду. Два пароля - это чем-то плохо? Вы имеете в виду - "неудобно", или что-то ещё?
Вы писали, что у вас требует 2 пароля, а также о том, что корень и свап на разн. зашифр. разделах. Я предположил, что, возможно, требует пароль 2 раза, т.к. у вас система на 2 зашифр. разделах.
Debian 10. LXDE.