Docker

Версия 32.1 от Роман Воробьев на 02.08.2021 02:08

Главной особенностью Docker в ОСнова является то, что контейнер работает в режимах защиты памяти PaX MPROTECT (ели не отключен) и замкнутой программной среды (ЗПС) (если включен).

Если контейнер не ОСнова, для работы в режиме замкнутой программной среды (ЗПС), его содержимое должно быть подписано. Это возможно сделать через наложение дампа

setfattr --restore=<dumpfile>

либо через подпись

evmctl

экспортированного контейнера с последующей запаковкой (с учетом расширенных атрибутов,
 

tar --xattrs-include=user.pax.flags --xattrs-include=security.ima --xattrs-include=security.NESSCTX

) и импортом.

Если защита памяти PaX MPROTECT не отключена (глобальное отключение через mprotect=off в командной строке ядра или в конфигурационном файле /etc/default/grub с последующим вызовом sudo update-grub, работает для всех ядер кроме hardened) и контейнер не ОСнова, некоторое ПО работать в нем не будет. Например Java.

Возможна установка в контейнер paxrat

или ручная разметка исключений через
 

setfattr -n user.pax.flags -v m <filename>

или через наложение дампа

setfattr --restore=<dump>

или через

chpax, paxctl

или через запуск контейнера в контексте безопасности NESS, отключающем защиту памяти PaX MPROTECT.

Контейнер может иметь определенный установленный контекст безопасности NESS. По умолчанию контекст пустой.

Возможен запуск всех контейнеров с контекстом, отключающим защиту памяти PaX MPROTECT.

Для этого в файле  /lib/systemd/system/docker.service в конце секции [Service]  дописать:

NESSCTX=t=30,50

И перезагрузить Docker.

sudo systemctl daemon-reload
sudo systemctl restart docker

Установка

sudo apt install docker.io

Добавить пользователя в группу docker, перелогиниться.

sudo usermod -aG docker ПОЛЬЗОВАТЕЛЬ

Создание образа ОСнова

sudo debootstrap --variant=minbase --keyring /usr/share/apt/osnova.gpg  --components=main,contrib,non-free onyx onyx http://ftp.ct/OSNova/testing/onyx/mounted-iso-main-disk1

sudo tar --xattrs-include=user.pax.flags --xattrs-include=security.ima --xattrs-include=security.NESSCTX  -C onyx/ -c . | docker import - onyx

Тестовый запуск контейнера

docker run -it onyx bash