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

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

Ключ

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

...

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

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


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

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


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

...


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

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


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

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



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

Информацияcommand
firejail firefox

LXC - система виртуализации "контейнеры"

...

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

  1. Разрешить ip_forward, для чего раскомментировать

    Информация
    net.ipv4.ip_forward=1

    в /etc/sysctl.conf, после чего выполнить в командной строке

  2. info
  3. Command
    sudo sysctl -p


  4. Настроить macvlan-интерфейс для сети LXC-контейнеров.
    Для этого нужно добавить в /etc/network/interfaces секцию вида

    Информация
    # LXC-related NIC's
    auto port0
    iface port0 inet manual
    pre-up /sbin/ip link add port0 type dummy
    up /sbin/ip link set port0 address 13:26:39:00:1a:12
    up /sbin/ip link set port0 mtu 9000
    auto macvlan0
    iface macvlan0 inet static
    address 10.10.10.1
    netmask 255.255.255.0
    pre-up ip link add macvlan0 link port0 type macvlan mode bridge
    pre-up ip link set macvlan0 address 14:28:44:00:1b:12

    вместо 10.10.10.1.24 — указать сеть, которую планируется использовать под контейнеры; mac-адреса также можно задать самостоятельно;

  5. Добавить в /etc/modules строчки

    Информация

...

  1. dummu
    macvlan


  2. Чтобы контейнеры не только могли взаимодействовать между собой,
    но и имели доступ во внешние сети (например, для установки пакетов из сетевых репозиториев),
    нужно добавить iptables-правило вида:

    Информацияcommand
    sudo iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE


  3. При необходимости доступа из внешнего мира к процессам внутри контейнера,
    нужно добавить соответствующее DNAT-iptables-правило в PREROUTING

  4. Перезагрузиться; проверить, что новые сетевые интерфейсы появились
    (ip addr list)

...

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

  2. Установить необходимые пакеты:

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

    Дополнительно установить пакет с шаблонами для операционных систем Astra Linux:

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


  3. Создать контейнер командами 

    Информацияcommand
    для ОССН ОС СН Смоленск:
    sudo lxc-create -t astralinux-se -n container-1

    или для ОСОН ОС ОН Орёл:
    sudo lxc-create -t astralinux-ce -n container-1

    важно: т. к. ядро контейнера и хоста одинаковое, на хосте с ОС СН Смоленск обязательно нужно использовать astralinux-se шаблон, а для ОС ОН Орёл – astralinux-ce шаблон;

  4. Настроить созданный контейнер container-1;
    как минимум в нём нужно настроить сеть, для этого в файле /var/lib/lxc/container-1/config нужно заменить строку

    Информация
    lxc.network.type = empty

    секцией вида

    Информация
    lxc.network.type = macvlan
    lxc.network.macvlan.mode = bridge
    lxc.network.flags = up
    lxc.network.name = eth0
    lxc.network.link = macvlan0
    lxc.network.ipv4.gateway = 10.10.10.1
    lxc.network.ipv4 = 10.10.10.100/24

    в которой заданы ip-адрес контейнера (здесь 10.10.10.100), и шлюз (интерфейс, созданный на хосте в предыдущем пункте)

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

  1. Запуск:

    Информацияcommand
    sudo lxc-start -n container-1


  2. Остановка:

    Информацияcommand
    sudo lxc-stop -n container-1


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

    Информацияcommand
    sudo lxc-ls -f


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

    Информацияcommand
    ssh -l admin 10.10.10.100

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

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

    Информацияcommand
    sudo lxc-destroy -n container-1


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

    Информацияcommand
    sudo lxc-console -n container-1


  7. Внутри контейнера, при правильно настроенной сети, можно устанавливать и настраивать программы так же, как и на обычном хосте

  8. Замечание:

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