Частный случай установки Ubuntu/Debian с полнодисковым шифрованием


Требуется решить конкретную задачу. Однако на этом сайте очень много инфы и не всегда, чаще всего, свести все воедино не хватает практических знаний.

1. Модель угрозы. Домашний комп может попасть в чужие руки. В таком случае, на дисках должно быть только бессигнатурное шифрование, чтобы противник не мог ни напрямую получить с дисков какую-либо информацию, ни доказать, что она там вообще есть. Все остальные угрозы опускаются.

2. Легенда. Затер диски рандомом, т.к. они мне не нужны и хочу отнести их в базар. Пользуюсь только live-CD.

3. Необходимое условие. Директории / и /home должны быть на разных физических дисках.

4. Грубый набросок решения.



Прошу любых замечаний/советов/мыслей по поводу бредовости и сложности реализации такой задачи в связи с полнодисковым шифрованием двух дисков и выносом boot на флешку. В первую очередь, интересует техническая сторона вопроса. Заранее благодарю.

Комментарии
— unknown (19/04/2015 22:16)   

Может наоборот? Сначала LUKS, а поверх него слой бессигнатурки, чтобы заодно не мучаться со всякими оффсетами.

Попробовать можно примерно так. Поставить минимальную систему на флэшку штатным образом с обычным LUKS-сигнатурным шифрованием. Затем бессигнатурно зашифровать винчестеры. Внутри создать LUKS-разделы. Перенести таром файлы с флэшки, поправить UID'ы ФС, fstab, cryptab, пересобрать ramdisk. Вынести /boot на рабочую флэшку. Флэшку с промежуточной системой временно сохранить, затем стереть.

Возникнет такая проблема: рамдиск штатно не поддерживает бессигнатурки, а тем более выцепляние из под неё LUKS-разделов. Можно конечно поправить там скрипт, но это будет указывать, что используется бессигнатурка. Более рационально будет оставить скрипты initrd без изменений, но научиться там выходить в консоль с урезаным башем и вручную набирать команду для cryptsetup.
Гость (20/04/2015 05:20)   

Именно так и имелось ввиду. Я неправильно выразился.


В смысле зашифровать ее или просто убедиться, что там есть утилита?


А без него, в данном случае, не получится?
Гость (20/04/2015 06:09)   

Вангую, что это будет сложнее, чем установка сразу на бессигнатурный раздел.


Взаимоисключающие параграфы. Так откуда загрузка идёт, с флэшки или с LiveCD? Если хочется работать с реального кем-то сделанного стандартного LiveCD, можно пойти вообще другим путём: перенести его как-то на сам диск, сделать записываемым, а потом туда ставить софт. Впрочем, особого смысла я в этих извратах не вижу, проще свою систему установить сразу как надо.

P.S. Есть коммент[link1] и дальнейшее обсуждение в том топике. Можно было бы спрашивать там же, а не плодить топики на одну и ту же тему.
Гость (20/04/2015 14:02)   

Вот и пользуйтесь. К чему весь огород? Зачем на домашнем компе вообще диски? Долой их. Внешние очень даже неплохо подсоединяются, как и шифруются очень замечательно и бессигнатурно.
— ressa (20/04/2015 15:11)   
Господа, если будете делать, очень прошу – можно хотя бы поэтапность действий. Или ссылок, чтобы не тупо команды копипастить а понимать назначение того или иного действия. Спасибо.
Ну вот, к примеру:
У меня уже LUKS, как поверх него слой бессигнатурки сделать? OS – Mint.
Гость (20/04/2015 15:35)   

Никак. Это надо было делать сразу.
  1. Затираешь диск.
  2. Делаешь бессигнатурно шифрованный раздел (cryptsetup plain mode).
  3. В нём делаешь LUKS.
  4. Создаёшь на LUKS ФС, форматируешь её, переносишь данные.
— ressa (20/04/2015 15:46, исправлен 20/04/2015 16:06)   

Я так понял – это все в LiveCD делать, да? В штатном инсталляторе нет возможности выйти в консоль.
Или это только в Debian\Ubuntu? В производных от них дистрах нет выхода в консоль и расширенной версии инсталлятора.

— unknown (20/04/2015 16:10)   

В Debian она есть.
— ressa (20/04/2015 16:25, исправлен 20/04/2015 16:34)   

Офтоп: Правильно ли я понимаю, что перейдя на Debian – у меня не изменится ровным счетом ничего. То есть – все инструкции в случае косяка – равнозначны с Ubuntu, проблемы решаются так же, так же поставлю себе привычный Cinnamon и прочие офисы, громоптицы, виртуалбоксы и тд? Работа в консоли будет та же самая, только вместо apt-get будет aptitude и вместо sudo\gksudo – будет su. Все верно? Разница лишь в несовместимости пакетов?
Критично наличие манов на русском. Я его проще воспринимаю. А то, куда ни глянь – новичкам Gentoo советуют[link2], зная Миллера – в лучшем случае забанит, в худшем заставит ему для РН проект НПЗ рисовать, из за приставаний с Гентой))

— unknown (20/04/2015 16:34)   

[K.O. mode]
Вместо apt-get будет apt-get.
Вместо aptitude будет aptitude.
Вместо sudo будет sudo.
Вместо gksudo будет gksudo.
Вместо su будет su.
[/K.O. mode]

Каких-то сомнительных плюшек Убунты не будет и пакеты будут более старые.
— ressa (20/04/2015 17:10)   
Спасибо, unknown. Попробую на виртуалке для начала. А то смутно разницу вижу пока. Ну то есть не понимаю – что на что меняю.. Если только ради cryptsetup plain mode – то в консоль и инсталлятор Ubuntu умеет.
Гость (20/04/2015 19:46)   

Тут терминологическая путаница вышла. Самый нижний уровень — бессигнатурное шифрование. Выше него идёт LUKS. Выше LUKS'а — ФС. Т.е. правильнее сказать, что LUKS накатывается поверх бессигнатурки. Делать наоборот не имело бы никакого смысла.


В нормальных LiveCD есть поддержка cryptsetup'а. Впрочем, дебиановский штатный что-то там важное не умеет (кажется, LVM). Инсталляционные диски надо брать не стандартные, а специальные, так назывемые «netinstall». Такие диски есть и для Debian'а и для Ubuntu. В них, если всё делать правильно, будет возможность выйти в шелл и проделать нужные манипуляции, если это так надо. Читай обсуждение[link1], там всё это в деталях освещалось.


В Debian testing (jessie) не такие уж и старые...
Гость (21/04/2015 10:39)   

Казалось, что моя тема – особый случай, не хотелось, при случае, засорять чужую ветку. Сорри.
Гость (21/04/2015 17:33)   
Вы задаёте вопросы, большая часть которых будут теми же, что обсуждались там. Прочитайте тот топик внимательно, там много информации о подводных камнях, с которыми вы так или иначе столкнётесь.
Гость (21/04/2015 23:26)   



На что влияет использование stable версии с проверенными пакетами? Быстродействие плохое, коли старые? Старые – это как б/у?
Гость (22/04/2015 08:15)   

Плюс к безопасности и минус к фичам. Иногда фичи очень нужны. Иногда ещё старый софт не поддерживает железо.


Блондинко-стайл?
Гость (26/04/2015 13:59)   

Ирония-стайл.

Debian 8.0 Jessie has been released
Гость (26/04/2015 17:00)   

Вот это новость! Неплохо.

W[link3]hile it is designed as a drop-in sysvinit replacement and as such makes use of existing SysV init scripts, the systemd package can be installed safely alongside sysvinit and started via the init=/bin/systemd kernel option.

Как обновиться c Debian-testing (jessie) до нового стейбла и продолжить следовать только стейблу? apt-get update, upgrade и dist-upgrade будет достаточно?

Y[link4]es, but it is a one way process. You can go from stable --> testing --> unstable. But the reverse direction is not "possible". So better be sure if you are planning to install/upgrade to unstable.

But if the third field contains 'jessie' then you will be tracking stable (since jessie will then be the new stable distribution).

Последнее звучит более обнадёживающе, чем первое.
Гость (26/04/2015 20:55)   

На debian.org есть инструкция на русском как обновляться.
Гость (27/04/2015 07:12)   
Не нашёл. Я говорю не про обновление с wheezy до нового стейбла, а с тестинга до стейбла, тестинг которого и стоял. Вышеприведённые цитаты как раз о нужном, но звучит противоречиво. Про sid я понял, что при выходе релиза система не замораживается. Про jessie/testing напрямую про заморозку не сказано, но мне кажется, она должна быть.
— sentaus (27/04/2015 08:57)   
Я говорю не про обновление с wheezy до нового стейбла, а с тестинга до стейбла, тестинг которого и стоял.

По идее должно быть достаточно исправить везде в /etc/apt/* testing на stable. А если там было jessie, то вообще ничего не надо делать. А затем да, apt-get update, upgrade и dist-upgrade. Хотя, не уверен, что последний обязателен в данном случае.
Гость (27/04/2015 14:41)   
Я в терминологии путаюсь. Проще так: есть sid (жутко нестабильный, он же unstable), jessie (просто нестабильный, он же testing) и stable (есть имена релизов). Вот я лох[link5]-то, только сейчас понял, что jessie — это не синоним для testing подобно sid'у, как я думал, а имя конкретного релиза 8.0. :) Да, было везде всегда написано jessie, при инсталле так прописалось автоматически, когда jessie был ещё testing'ом.
— гыук (26/06/2015 23:10)   
Хелп !

Задам вопрос здесь, раз тут о полнодисковом шифровании.
Обновил cryptsetup с 1.4 до 1.6. Перестала грузится система (debian). Диск зашифрован полностью.
Как исправить?
— гыук (28/06/2015 11:03, исправлен 28/06/2015 11:06)   

Щадящего решения не нашел. Чувствую, что проблема для знающих не проблема.
Открыл раздел в другой системе без вопросов. Можно установить новую систему и перенести содержимое раздела, но это в крайнем случае и правда нет опыта переноса с зашифрованного раздела.
Нужно же будет править fstab и crypttab и врядли этим обойдется.

— SATtva (28/06/2015 11:10)   
Подключить разделы из другой системы, выполнить chroot и откатить версию cryptsetup.
— гыук (28/06/2015 11:45)   
Спасибо. С виду просто. А как в гугле правильно вопрос задать? Откатить cryptsetup в системе которая не запущена – для меня сложновато. Читал что то на эту тему. Направление копания подскажите. Как правильно эту операцию обозвать?
— SATtva (28/06/2015 19:02, исправлен 28/06/2015 19:05)   

В сущности, Вам нужно сделать следующее:


  1. Подключить диск к системе с совместимой версией cryptsetup.
  2. Создать директорию, куда будете монтировать систему, допустим /mnt/crypt.
  3. Подключить зашифрованный раздел. Если этот раздел имеет имя sdb1, выполните cryptsetup luksOpen /dev/sdb1 crypt.
  4. Смонтируйте файловую систему зашифрованного раздела: mount -v /dev/mapper/crypt /mnt/crypt.

Если помимо корневого раздела в зашифрованной системе есть другие (например, /var или /usr находятся на самостоятельных разделах), Вам придётся повторить пункты 3-4, смонтировав их внутрь корневого (например, в случае /usr — в /mnt/crypt/usr).


Затем выполните следующее:



С этого момента Вы залогинены в подключенную зашифрованную систему. Можете сделать даунгрейд cryptsetup и выйти (Ctrl+D), после чего выполните размонтирование в обратном порядке:


— pgprubot (28/06/2015 20:56, исправлен 28/06/2015 21:00)   

Советуют для полного чрута делать ещё проброс /dev/pts и /sys [1][link6], [2][link7].



Удивляюсь, что такого могло произойти в самом cryptsetup, что система перестала грузиться, там же обратная совместимость довольно сильная. Спрашивающий уверен, что дело именно в версии cryptsetup, а не в чём-то ещё? Как он это определил? Система может не грузиться по множеству причин, и, честно говоря, обновление cryptsetup явно не ТОП типичных случаев.

— гыук (28/06/2015 21:26, исправлен 28/06/2015 21:32)   

Здесь произошел затык.
$ umount: /dev: target is busy

(In some cases useful info about processes that
use the device is found by lsof(8) or fuser(1).)

Сделал:
$ sudo lsof | grep $MNT/dev
lsof: WARNING: can't stat() fuse.vmware-vmblock file system /run/vmblock-fuse

Output information may be incomplete.

lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs

Output information may be incomplete.

systemd 1 root 0u CHR 1,3 0t0 1028 /dev/null
...
...


Получил бесконечный список процессов :((
Как отмонтировать ума не приложу. Тупо сбрасывать страшно (



Могло произойти неправильное обновление. процесс мог быть не завершен. Что то некорректно произошло.
А в чем еще может быть проблема? Система до обновления грузилась. Ничего больше не устанавливалось и не менялось.
Зашифрованный раздел монтируется и открывается в другой системе.

— pgprubot (28/06/2015 22:16, исправлен 28/06/2015 22:17)   

Ничего страшного произойти не должно. Можно просто ребутнуться, выполнить команду reboot или shutdown.



Объяснение гениальное. С чего вы взяли, что обновился только cryptsetup? И правда ли это? Для вас система — чёрный ящик, а информацию, которую вы озвучиваете, более-менее достоверно может выяснить только специалист (причину проблемы).

— гыук (28/06/2015 22:41)   

Разве я спорю с вами? Вычитал здесь что версия 1.6 поддерживает работу с контейнерами TC и побыстрому обновил, но вот забыл что у меня полнодисковое шифрование. Выключил комп в конце рабочего дня. Тут же вспомнил и решил загрузится. Все. Завис.
Не трогай пока система работает? Да. Но уже дело сделано. Увы.
— pgprubot (28/06/2015 22:53, исправлен 28/06/2015 22:57)   

Не знаю, какие изменения в системе повлекло за собой обновление cryptsetup. Если вы это делали в командной строке, там всё это пишется.



Какой тип Debian? Stable? Unstable? Testing?


Сомневаюсь, что 1.6 не имеет обратной совместимости с 1.4. Может быть, там просто были изменены дефолты какие-то. Я бы для начала попытался подключить шифрованный диск вручную из загрузчика (initramfs-шелл), чтобы понять, что именно не работает, но опять же, как всегда, всё это упирается в знание и понимание, без этого проблемы такого сорта крайне трудно фиксить.


Вам удалось сдаунгрейдить версию cryptsetup? Теперь всё заработало?

— гыук (28/06/2015 23:17, исправлен 29/06/2015 07:17)   

Перезагружался.



В репозитории 1.4. Скачал с debian.org пакет *.deb 1.6 и установил через установщик пакетов (не через dpkg -i).
Система wheezy с последними штатными обновлениями.



Начало загрузки:


— type:unknown option
мерцающий курсор



Система не запустилась.
Сейчас попробую посмотреть применился ли даунгрейдинг.

— гыук (28/06/2015 23:59, исправлен 29/06/2015 00:11)   

# cryptsetup --version
cryptsetup 1.4.3


Да версия изменилась. Даунгрейд делал через удаление 1.6 и установки *.deb пакета 1.4.
Правильно? Ибо, synaptic не пашет, как и apt.


Почему же не грузится ((



Это очень сложно?
Я доходил до initramfs, но дальше не хватает знаний.


Может в таком случае проще установить систему с ноля и перебросить туда систему с зашифрованного диска?


Попробовал переустановить cryptsetup еще раз. Получил такую строку:
Обрабатываются триггеры для initramfs-tools …
/boot/initrd.img-3.2.0-4-686-pae does not exist. Cannot update.


Чую не нормально.

— SATtva (29/06/2015 07:22)   

Но не полная. Когда в Генте обновлялся с 1.2.x (или 1.1.x?) до 1.6.x с кастомным initrd, тоже получил незагружабельную систему. Не помню точно, в чём оказался затык, но что-то пришлось править в стартовом скрипте.
— гыук (01/07/2015 03:29)   
Вообщем в этой ситуации ничего умного не было придумано.
В другой системе был открыт зашифрованный раздел. Система скопирована. На носитель была накатана новая установка идентичная прошлой. Системный раздел был опять таки открыт в другой ОС и затерт с последующим копированием на него ранее сохраненную систему. Fstab и crypttab взяты с новой установки. Все запустилось и работает.
Cryptsetup оказался таки сданугрединым. Вывод – проблема была видимо с initrd.
— pgprubot (01/07/2015 18:28, исправлен 01/07/2015 18:31)   

Если это не штатное обновление, предусмотренное системой, то не представляю, что вы могли сделать, чтобы установить пакет. Такие операции в Debian stable не предусмотрены. Насильственная установка пакета рушит зависимости/линковку с библиотеками, в итоге получится не просто новый cryptsetup, а нерабочий. Т.е. у вас дело, скорей всего, не в том, что 1.6 несовместим с 1.4, а в том, что 1.6 не был установлен нужным образом.


Узнать зависимости можно тут[link8] (для jessie). Каждый из пакетов, от которых зависит cryptsetup, тоже зависит от чего-то. Цепочка зависимостей должна раскручиваться полностью, и все, требующие обновления пакеты, обновлены. Однако, это приведёт к тому, что будут обновлены пакеты, от которых зависят какие-то посторонние третьи, и тогда те третьи тоже придётся обновить. В итоге вам придётся обновлять половину системы, если не вообще всю, с риском всё угробить.


Если вам так позарез нужен 1.6, нужно было читать инструкции, а потом целиком обновлять wheezy до jessie (или до squeeze, а потом до jessie).

— гыук (01/07/2015 22:28, исправлен 01/07/2015 22:31)   

Вот 1.4 – https://packages.debian.org/wheezy/cryptsetup
Я взял отсюда (бэкпортов)1.6 – https://packages.debian.org/ru.....backports/cryptsetup[link9]
Установился, надо сказать, ни чивхнув ни кашлянув.



Вот это то и была моя самая первая версия. А так как в системе полнодисковое шифрование, то это связано с initrd.
Вот что меня и смутило: "/boot/initrd.img-3.2.0-4-686-pae does not exist. Cannot update"
После операции по внешнему даунгрейдингу cryptsetup, система обрела прежнюю работоспособность (не в прямом смысле, но через копирование). Из чего можно сделать вывод, что изменения не были уж такими глубокими.



Да вот в том то и дело, что не позарез. Так добавить функционалу). В системе и так есть TC. А мне вот понадобилось и такое..
Правильно говорят: работает не трожь!

— pgprubot (01/07/2015 22:36)   

Первый раз слышу про бэкпорты, поэтому не буду комментировать их стабильность/надёжность.


Похоже, что он не обновил initramfs (initrd) причитающимся образом. В него входит ядро Linux, а также тулзы по подключению всего нужного (в том числе, cryptsetup).


Там было «не сломано — не чини». Во всяком случае при играх со всей такой нестандартщиной хорошо бы делать бэкапы образа системы, чтобы в случае проблем не чесать долго репу, что там могло отвалиться, а легко откатить систему обратно.

Ссылки
[link1] http://www.pgpru.com/comment82154

[link2] https://toster.ru/q/4551

[link3] https://www.debian.org/releases/stable/amd64/release-notes/ch-whats-new.en.html

[link4] https://www.debian.org/doc/manuals/debian-faq/ch-choosing.en.html

[link5] https://www.debian.org/releases/

[link6] http://howtoubuntu.org/how-to-repair-restore-reinstall-grub-2-with-a-ubuntu-live-cd

[link7] https://unix.stackexchange.com/questions/109464/how-can-i-fix-install-reinstall-grub

[link8] https://packages.debian.org/stable/cryptsetup

[link9] https://packages.debian.org/ru/wheezy-backports/cryptsetup