LINUX.ORG.RU

Сообщения Gunburgender

 

keyctl_read_alloc IMA/EVM

Пытаюсь подключить IMA/EVM основываясь на вики: https://sourceforge.net/p/linux-ima/wiki/Home/#compiling-the-kernel-with-evmima-appraisal-enabled

TPM у меня нет, ибо виртуалка (а может и совсем нет), поэтому для генерации мастер ключа поступаю следующим образом:

# To create and save the kernel master key (user type):
$ su -c 'modprobe trusted encrypted'
$ su -c 'keyctl add user kmk-user "`dd if=/dev/urandom bs=1 count=32 2>/dev/null`" @u'
$ su -c 'keyctl pipe `keyctl search @u user kmk-user` > /etc/keys/kmk-user.blob'
# Create the EVM encrypted key
$ su -c 'keyctl add encrypted evm-key "new user:kmk-user 32" @u'
$ su -c 'keyctl pipe `keyctl search @u encrypted evm-key` >/etc/keys/evm-user.blob'

Однако

$ su -c 'keyctl add user kmk-user "`dd if=/dev/urandom bs=1 count=32 2>/dev/null`" @u'
Password: 
24606028
$ su -c 'keyctl pipe `keyctl search @u user kmk-user` > /etc/keys/kmk-user.blob'
Password: 
keyctl_read_alloc: Permission denied

При этом

$ systemctl show root@ubuntu | grep KeyringMode
KeyringMode=private

Не могу ничего сделать, ключи сгенерены, файлы через evmctl sign можно подписать, но толку то, EVM не включается. Где-то натыкался на формуе, что это systemd блокирует keyctl, но как поменять режим keyring’ов я не знаю.

Скрипт из initramfs обваливается, потому что (почему-то) не может прочитать файл сертификата x509, хотя он явно лежит в нужной папке

/etc/keys$ ls
kmk-user.blob    privkey_ima.pem  x509_evm.der
privkey_evm.pem  pubkey_evm.pem   x509_ima.der

Может кто-то занимался этой технологией без сборки ядра с нуля? Флаги в последней доступной для скачивания убунте все соответствуют. А то получается ни ключи не поэкспортировать, ни запустить EVM в принципе - не могу понять в чем причина

 , , ,

Gunburgender
()

Разработка замкнутой программной среды

В рамках курсовой работы необходимо разработать замкнутую программную среду для Linux.

В целом нужно создать безопасную конфигурацию ОС по аналогии с astra-linux SE Смоленск 1.6, реализовать ЗПС и устранить возможность ее обхода через запись с /proc/pid/mem.

На сайте астры есть различные руководства и описания систем безопасности, как включить ту же ЗПС, руководства по разработке ПО для астры, установке. Однако я не нашел исходников, те что есть - https://wiki.astralinux.ru/pages/viewpage.action?pageId=1998854 для новых версий выдают 404, то есть файлов там нет.

Насколько я понял, для работы в зпс нужно будет подписывать ПО цифровым ключом, при собственной разработке как провернуть это я не представляю.

Я не знаю как подступиться к теме в принципе, с чего начать, потому что ни разу даже ядро не собирал. Сложность проекта для себя оцениваю как высокую (потому что нет информации, обычно обучаюсь и разбираюсь и пишу код быстро), а сдавать нужно. Поэтому прошу совета, материалов, ссылок

 , , ,

Gunburgender
()

Исключение неиспользуемых директив препроцессора из кода

Есть большой проект, естественно собирается он под многие платформы. Не буду таить - это conky. Моя лаба - упростить его донельзя и оставить только часть которая компилируется под линукс, без графики (не спрашивайте зачем, современные учебные планы не отвечают на такой вопрос, мне главное сделать и сдать).

Естественно, неплохую часть кода там составляют макросы #ifdef для разных платформ, посему есть такой вопрос: удалять вручную и разбираться довольно муторно, однако возникла идея - если препроцессор обрабатывает код, он сам детектит в процессе, какие переменные определены - можно ли каким-то образом заставить его вернуть чистый код, с теми переменными и условиями, которые реально имеют ценность после компиляции? Я понимаю как он работает, код прошарил, но было бы проще, если бы 90% макросов не было

 ,

Gunburgender
()

Аудит событий для заданного файла

Существует задание, разработать демон, который мониторит события для заданного файла. Все было бы просто, если бы можно было использовать auditd либо же результат работы auditd. Но нужно ручками реализовать это самому. В голову навскидку приходит только перехват системных вызовов, но есть страх поломать все. Не посоветуете, как к этому подступиться? Может можно найти эту информацию в журналах из /var/log/*?

P.S. Пример - указываю какой-нибудь *.txt файл, необходимо мониторить открытие, закрытие, изменение, изменение прав доступа итд

 , ,

Gunburgender
()

RSS подписка на новые темы