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

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

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.
  • ОС ОН Орёл 2.12.33 (версия пакета lxc-astra не ниже 1.0.0)
    • 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) с установленными оперативными
    ОС СН Смоленск 1.6 с установленными
    • обновлениями (версия пакета lxc-astra не ниже 1.0.0
    )
    • +ci10)
    • Astra Linux Special Edition РУСБ.10015-16 исп. 1
    • 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)



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

    В ОС ОН Орёл 2.12 и ОС СН Смоленск 1.6 возможно использование механизмов Firejail (используется в графическом киоске) и LXC. При этом в ОС СН Смоленск эти механизмы позволяют создавать дополнительный уровень изоляции приложений на нулевом уровне конфиденциальности

    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 начиная с ) «непривилегированных контейнеров», где uid 0 в контейнере соответствует непривилегированному пользователю снаружи, и имеет расширенные права только на свои ресурсы.

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

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

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

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

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

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

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

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

    Работа с LXC-контейнерами в ОС СН Смоленск 1.6

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

    Использование механизмов LXC в ОС СН Смоленск 1.6 возможно только на нулевом уровне конфиденциальности

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

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

    Информация
    sudo apt install lxc lxc-dev bridge-utils cgroup-tools dnsmasq-base lxc-astra

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

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

    Информация
    Перед установкой пакетов необходимо правильно настроить пути к репозиториям в файле /etc/apt/sources.list. В частности, в ОС СН Смоленск некоторые пакеты, нужные для работы  lxc, находятся на втором диске дистрибутива (диск для разработчиков).

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

    Блок кода
    USE_LXC_BRIDGE="true"
    LXC_BRIDGE="lxcbr0"
    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 start lxc-net

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

    Предупреждение
    Так как качестве ядра контейнера и используется ядро хост-машины, на хост-машине с ОС СН Смоленск обязательно нужно использовать astralinux-se шаблон, а для ОС ОН Орёл – astralinux-ce шаблон;
    Command#для ОС СН Смоленск:
    sudo lxc-create -t astralinux-se -n container-1
    #или для ОС ОН Орёл:
    sudo lxc-create -t astralinux-ce -n container-1Для контейнера использовано имя container-1, в командах управления контейнерами имя контейнера задаётся опцией -n;

    Запустить созданный контейнер:

    Command

    sudo lxc-start -n container-1

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

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

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

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

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

    Запуск:

    Command
    sudo lxc-start -n container-1

    Остановка:

    Command
    sudo lxc-stop -n container-1

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

    Command
    sudo lxc-ls -f

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

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

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

    Command
    sudo lxc-destroy -n container-1

    Также, в случае использования контейнера в ОС ОН Орёл для входа можно использовать консоль:

    Command
    sudo lxc-console -n container-1
    Внутри контейнера, при правильно настроенной сети, можно устанавливать и настраивать программы так же, как и на обычном компьютере;

    Замечание:

    ИнформацияДля корректной работы шаблонов astralinux-se и astralinux-ce должен быть правильно сконфигурирован файл /etc/apt/sources.list на хост-машине