Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.


Информация
titleДанная статья применима к:
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
  • Astra Linux Special Edition РУСБ.10015-17
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
    с установленными оперативными обновлениями (версия пакета lxc-astra не ниже 1.0.0+ci10)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1с установленными оперативными обновлениями (версия пакета lxc-astra не ниже 1.0.0+ci10
  • Astra Linux Special Edition РУСБ.10015-16 исп. 2
  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
  • Astra Linux Common Edition 2.12.33 (версия пакета lxc-astra не ниже 1.0.0+ci10)



В Astra Linux возможно использование механизмов Firejail (используется в графическом киоске) и LXC. В Astra Linux Special Edition при использовании МРД эти механизмы позволяют создавать дополнительный уровень изоляции приложений на нулевом уровне конфиденциальности

Firejail

Общая информация

Firejail - это система изолированного выполнения графических и консольных приложений. Целью применения Firejail является:

Информация
Минимизация риска компрометации основной системы при запуске не заслуживающих доверия или потенциально уязвимых программ.


Для изоляции в Firejail используются:

Информация
  • Механизм пространств имён (namespaces)
  • Фильтрация системных вызовов (seccomp-bpf)


После запуска программа и все её дочерние процессы используют отдельные представления ресурсов ядра, таких как сетевой стек, таблица процессов и точки монтирования.

В отличие от LXC, Firejail проще в настройке, и не требует подготовки системного образа: состав контейнера формируется «на лету» на основе содержимого текущей ФС, и удаляется после завершения работы приложения.

Информация
Firejail можно применять и для запуска контейнеров LXC.


Предоставляются гибкие средства задания правил доступа к файловой системе:

Информация
  • Можно определять к каким файлами и директориям разрешён или запрещён доступ;
  • Можно подключать для данных временные ФС (tmpfs), ограничивать доступ к файлам или директориям только чтением;
  • Можно совмещать директории через bind-mount и overlayfs.


Профили изоляции системных вызовов подготовлены для большого числа популярных приложений, в том числе для:

Информация
  • Firefox;
  • Chromium;
  • VLC.

Для выполнения программы в режиме изоляции достаточно указать имя приложения в качестве аргумента утилиты Firejail, например,

Command
firejail firefox

LXC - система контейнерной изоляции уровня ОС

LXC — это система контейнерной изоляции на уровне операционной системы для запуска нескольких изолированных экземпляров операционной системы на одном узле.

  • LXC не использует виртуальные машины, а создаёт виртуальное окружение с собственным пространством процессов и сетевым стеком;
  • Все экземпляры LXC используют один экземпляр ядра операционной системы;
  • LXC основана на технологии cgroups, входящей в ядро ОС;

Известная проблема доступа к ядру ОС, когда root-пользователь LXC-контейнера может выполнить произвольный код в родительской операционной системе (за счёт того, что uid 0 внутри контейнера совпадает с uid 0 базовой системы) решена введением (в версиях LXC начиная с 1.0) «непривилегированных контейнеров», где uid 0 в контейнере соответствует непривилегированному пользователю снаружи, и имеет расширенные права только на свои ресурсы.

Механизм cgroups (control group) — механизм ядра ОС, который ограничивает и изолирует вычислительные ресурсы (процессорные, сетевые, ресурсы памяти, ресурсы ввода-вывода) для групп процессов.
Механизм позволяет образовывать иерархические группы процессов с заданными ресурсными свойствами, и обеспечивает программное управление ими.

Механизм cgroups предоставляет единый программный интерфейс к целому спектру средств управления процессами,
начиная с контроля единичного процесса (таких как, например, утилита nice),
и вплоть до полной виртуализации на уровне системы LXC.

Механизм cgroups предоставляет следующие возможности:

  • ограничение ресурсов (resource limiting): использование памяти, в том числе виртуальной;

  • приоритизацию: разным группам можно выделить разное количество процессорного ресурса и пропускной способности подсистемы ввода-вывода;

  • учёт: подсчёт затрат тех либо иных ресурсов группой;

  • изоляцию: разделение пространств имён для групп таким образом, что одной группе недоступны процессы, сетевые соединения и файлы другой;

  • управление: приостановку (freezing) групп, создание контрольных точек (checkpointing) и их перезагрузку.

Работа с LXC-контейнерами в ОС Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)

Предупреждение

Использование механизмов LXC в Astra Linux Special Edition возможно только на нулевом уровне конфиденциальности

Установка пакетов

Установить комплект пакетов для запуска контейнеров LXC можно с помощью графического менеджера пакетов или из командной строки командами:

Информация
sudo apt install lxc lxc-astra

Для установки следует использовать пакет lxc-astra версии не ниже 1.0.0.

Настройка сети под LXC-контейнеры

Информация
Перед установкой пакетов необходимо правильно настроить пути к репозиториям в файле /etc/apt/sources.list: в нём дожны быть указаны в качестве источников установочный диск (репозиторий) и диск (репозиторий) со средставами разработки, при этом установочный диск (репозиторий установочного диска) должен быть указан в файле /etc/apt/sources.list первым. В Astra Linux Special Edition некоторые пакеты, нужные для работы  lxc, находятся на втором диске дистрибутива (диск со средствами разработки).

Создать файл /etc/default/lxc-net со следующим содержимым:

Блок кода
USE_LXC_BRIDGE="true"
LXC_BRIDGE="lxcbr0"sudo lxc-create -t astralinux-se -n container-se
LXC_ADDR="10.0.3.1"
LXC_NETMASK="255.255.255.0"
LXC_NETWORK="10.0.3.0/24"
LXC_DHCP_RANGE="10.0.3.2,10.0.3.254"
LXC_DHCP_MAX="253"
LXC_DHCP_CONFILE=""
LXC_DOMAIN=""

В файле /etc/lxc/default.conf строчку

Блок кода
lxc.net.0.type = empty

заменить на текст:

Блок кода
lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up

Перезапустить службу lxc-net:

Command

sudo systemctl restart lxc-net

Создать контейнер:

Предупреждение
Так как в качестве ядра контейнера используется ядро хост-машины, на хост-машине с Astra Linux Special Edition обязательно нужно использовать шаблон astralinux-se, а для Astra Linux Common Edition – шаблон astralinux-ce.
Следует также помнить, что в качестве источника пакетов используются репозитории хост-машины, указанные в файле /etc/apt/sources.list.
Command#для Astra Linux Specail Edition:sudo lxc-create -t astralinux-se -n container-se
sudo lxc-create -t astralinux-se -n container-se
#или для Astra Linux Common Edition:
sudo lxc-create -t astralinux-ce -n container-ceДля контейнера использовано имя container-1, в командах управления контейнерами имя контейнера задаётся опцией -n;

Запустить созданный контейнер (на примере контейнера container-ce):

Command

sudo lxc-start -n container-ce

Дождаться, когда в контейнере заработает сетевой интерфейс, т.е. когда команда:

Command
sudo lxc-info -n container-ce -iH
станет выдавать IP-адрес конейнера.

Войти в контейнер, используя полученный адрес (пароль пользователя, устанавливаемый по умолчанию - astralinux):

Command
ssh -l admin `sudo lxc-info -n container-ce -iH`

Типовые операции с LXC-контейнерами

Запуск:

Command
sudo lxc-start -n <имя_контейнера>

Остановка:

Command
sudo lxc-stop -n <имя_контейнера>

Просмотр всех контейнеров:

Command
sudo lxc-ls -f

Сетевой вход в контейнер:

Command
ssh -l admin 10.10.10.100
(возможна задержка примерно в минуту, в течение которой ssh-сервер стартует внутри контейнера). Пароль по умолчанию — astralinux
важно: после первого логина нужно сменить пароль для пользователя admin на более надёжный командой passwd;

Удаление контейнера:

Command
sudo lxc-destroy -n  <имя_контейнера>

Также, в случае использования контейнера в Astra Linux Common Edition для входа можно использовать консоль:

Command
sudo lxc-console -n  <имя_контейнера>
Внутри контейнера, при правильно настроенной сети, можно устанавливать и настраивать программы так же, как и на обычном компьютере.