Bug 13185

Summary: tpm2-tss package - "tss" user is not created during OS image build
Product: [ROSA-based products] ROSA Fresh Reporter: a.betkher <a.betkher>
Component: Preinstalled software in the ISOAssignee: ROSA Linux Bugs <bugs>
Status: VERIFIED FIXED QA Contact: ROSA Linux Bugs <bugs>
Severity: normal    
Priority: Normal CC: survolog, v.potapov
Version: AllFlags: v.potapov: qa_verified+
v.potapov: published+
Target Milestone: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Platform: --- ROSA Vulnerability identifier:
RPM Package: ISO-related:
Bad POT generating: Upstream:

Description a.betkher 2023-03-28 09:59:19 MSK
Пользователь tss не создается во время сборки образа. При этом при установке tpm2-tss в систему - работает правильно.
Comment 1 a.betkher 2023-03-28 10:04:21 MSK
https://abf.io/build_lists/4394882 -x86_64
https://abf.io/build_lists/4394881
https://abf.io/build_lists/4394883

Макрос %pre заменен на %post
advisory: 
  - собрать образ с контейнером
  - проверить наличие/отсутствие ошибки создания пользователя tss в логе сборки
Comment 2 Vladimir Potapov 2023-03-28 13:08:49 MSK
ошибки в логах остаются и с этим обновлением, надо дальше править.
Текущее функционально работает.
Comment 3 Vladimir Potapov 2023-03-28 17:15:37 MSK
(In reply to a.betkher from comment #1)
> https://abf.io/build_lists/4394882 -x86_64
> https://abf.io/build_lists/4394881
> https://abf.io/build_lists/4394883
> 
> Макрос %pre заменен на %post
> advisory: 
>   - собрать образ с контейнером
>   - проверить наличие/отсутствие ошибки создания пользователя tss в логе
> сборки

В образе https://abf.io/platforms/rosa2021.1/products/316/product_build_lists/46156 ошибка отсутствует
**************************
The update sent to testings
Comment 4 a.betkher 2023-03-28 18:17:47 MSK
Тоже проверял. Пользователь создается, но ошибка от сервиса udev в journalctl по поводу отсутствия пользователя и группы tss есть. Пока не понял почему так.
Comment 5 a.betkher 2023-03-30 10:42:45 MSK
luksunlock с обновлением. Ушла проблема с тем, что после запуска luksunlock не видно вводимые символы, добавлена возможность авто разблокировки других разделов смонтированных в систему. Для каждого будет выводиться запрос. 
Общая схема такая. Корневой раздел разблокируется в initrd по записи в tpm2, остальные разблокирует systemd по записи в /etc/crypttab. Для каждого дополнительного раздела luksunlock создает рандомный ключ в /etc/luksunlock/keys/. 
dd if=/dev/urandom of=/etc/luksunlock/keys/${a}.key bs=1024 count=4
права на файл 0400, думаю этого достаточно. 
Таким образом ключ то корневого luks раздела в tpm2, ключи от остальных разделов внутри первого.

luksunlock:
https://abf.io/build_lists/4397369 - x86_64
https://abf.io/build_lists/4397368
https://abf.io/build_lists/4397370
https://abf.io/build_lists/4397371
https://abf.io/build_lists/4397372

advisory: 
     - установить систему так чтобы корневой раздел и как минимум еще один (лучше два, с двумя не проверял) были зашифрованы luks2. Инструкция тут:
http://wiki.rosalab.ru/ru/index.php/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BD%D0%B0_%D1%88%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9_%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB

Точно нельзя шифровать отдельно /boot, /efi, /etc и папки с библиотеками и исполняемыми файлами. Корневой раздел должен содержать rootfs в рабочем виде. Можно шифровать отдельно /home, /opt, /var/www  и тому подобное.

     - Установить luksunlock из контейнера, проверить
     luksunlock
     reboot
     lukslock
     reboot
Comment 6 Vladimir Potapov 2023-03-30 15:59:04 MSK
*******************************
The update sent to testings
Comment 7 Vladimir Potapov 2023-03-30 18:34:26 MSK
1) Можно ли как-нибудь избежать запроса на старт сервиса или перезагрузку? По-идее наверное можно сделать чтоб он стартовал если есть шифрованные диски.
2) Ввод пароля на каждый найденный зашифрованный раздел выглядит излишним, и инсталлятор и потом системд запрашивают ведь один пароль только. Может, сделать такой режим только если с ключом каким-то запустить, а по-умолчанию спрашивать пароль однократно?
3) А если пользователь хочет зашифровать только хомяк, это будет нормально обработано?
Comment 8 a.betkher 2023-03-30 19:14:25 MSK
1. Можно, если пакет tpm2-abrmd 100% предустановлен. Если установить он не запускается без перезагрузки.

2. Так это пароли к разным разделам, как ты это предполагаешь обойти?

3. Да. Но лучше проверить.
Comment 9 Vladimir Potapov 2023-03-31 03:24:41 MSK
1) Ну эти случаи ж отличаются с точки зрения пакета? Соответственно и по-разному обрабатывать
2) Ввести один раз и использовать дальше введенный для всех разделов, как делает и инсталлятор, и системд
Comment 10 a.betkher 2023-03-31 05:03:45 MSK
1. Как отличить пакет, который установили только что? То есть была ли перезагрузка после установки пакета?

2. У каждого раздела СВОЙ пароль, чтобы добавить разделу ключ, нужно ввести его.

3. Кажется не правильно понял тебя. Можно выбрать /home и не выбрать /opt, но корень в текущей схеме должен быть обязательно шифрован. Надо подумать как сделать без корня, не хочу каждый раздел привязывыать к tpm.
Comment 11 Grigorev Andrey 2023-03-31 14:14:23 MSK
(In reply to a.betkher from comment #10)
> 1. Как отличить пакет, который установили только что? То есть была ли
> перезагрузка после установки пакета?
uptime
dnf history luksunlock
Comment 12 a.betkher 2023-04-03 14:34:17 MSK
Если корневой раздел шифрован, то остальные люкс разделы расшифровываются по ключам, которые хранятся на корневом разделе. Если коревой не шифрован то привязать к tpm2 можно только один раздел на выбор. 
Решена проблема с шифрованным свопом. Анаконда прописывает его подключение в 
cmdline граба, люксанлок эту запись удаляет, а шифрование свопа переводит на рандомный пароль, который задается при каждой загрузке. Так модно-молодежно.
Соответственно гибернация работать не будет.
Есть еще одна проблема с resume=, который также прописывается в конфиг граба, но уже с update-grub2. Там нет проверки, что своп шифрован. Пока обхожу отключением свопа перед переконфигурацией граба. По хорошему надо чинить в грабе.

https://abf.io/build_lists/4404828 - x86_64
https://abf.io/build_lists/4404829
https://abf.io/build_lists/4404830
Comment 13 Vladimir Potapov 2023-04-05 12:18:19 MSK
(In reply to a.betkher from comment #12)

> https://abf.io/build_lists/4404828 - x86_64
> https://abf.io/build_lists/4404829
> https://abf.io/build_lists/4404830
The update sent to testings
******************************
Comment 14 a.betkher 2023-04-12 14:11:37 MSK
luksunlock

https://abf.io/build_lists/4417619 - x86_64
https://abf.io/build_lists/4417620
https://abf.io/build_lists/4417621

Advisory:
    - При dnf install luksunlock - показывает справочную страницу
    - При dnf update и reinstall - не показывает.
Comment 15 Vladimir Potapov 2023-04-19 07:37:19 MSK
(In reply to a.betkher from comment #14)
> luksunlock
> 
> https://abf.io/build_lists/4417619 - x86_64
> https://abf.io/build_lists/4417620
> https://abf.io/build_lists/4417621
> 
> Advisory:
>     - При dnf install luksunlock - показывает справочную страницу
>     - При dnf update и reinstall - не показывает.
****************************************************
The update sent to testings
Comment 16 Vladimir Potapov 2023-04-20 12:59:05 MSK
tpm2-tss-4.0.0-5
https://abf.io/build_lists/4394882 -x86_64
https://abf.io/build_lists/4394881
https://abf.io/build_lists/4394883

luksunlock-0.4-2
https://abf.io/build_lists/4417619 - x86_64
https://abf.io/build_lists/4417620
https://abf.io/build_lists/4417621
************************ Advisory *******************
Шифровка нескольких разделов luks
*****************************************************
QA Verified