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

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

Ключ

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

Оглавление

Image Removed


Информация
titleДанная статья применима к:
  • Astra Linux Special Edition РУСБ.10015-01 и РУСБ.10015-10 (очередное обновление 1.7)
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1
  • Astra Linux Common Edition 2.12

Image Added

Аппаратная поддержка виртуализации

Предупреждение
  1. Для корректной работы системы виртуализации на физических машинах в BIOS должна быть включена виртуализация (Intel VT или аналог для используемой процессорной архитектуры);
  2. Виртуализация должна поддерживаться использующимися процессорами. Проверить наличие виртуализации можно командами:
    1. Для процессоров Intel:

      Command

      lscpu | grep vmx --color=always


    2. Для процессоров AMD:

      Command
      grep svm /proc/cpuinfo



Установка виртуализации QEMU/KVM

Предупреждение
При использовании виртуализации QEMU/KVM в Astra Linux Special Edition с включенным МКЦ и МРД для обеспечения работы с виртуальными машинами, поддерживающими ненулевые метки безопасности, все пулы данных должны находиться на файловых системах, поддерживающих работу с мандатными атрибутами (Ext4, cepfs, ocfs2, hfs).


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

При установке виртуализации QEMU/KVM в Astra Linux Special Edition автоматически будет установлена и настроена система управления сетевым трафиком firewalld.

Если в системе используется система управления сетевым трафиком ufw, то перед установкой виртуализации следует сохранить настройки и удалить ufw:

Блок кода
sudo apt remove ufw
sudo systemctl stop ufw

Установка firewalld приведет к ограничению работы сетевых служб. См. раздел Настройка межсетевого экрана после установки KVM.


Установка виртуализации QEMU/KVM при установке операционной системы

См.:

Установка виртуализации QEMU/KVM после установки ОС

Astra Linux Special Edition x.7 и Astra Linux Common Edition 2.12

Для автоматизированной установки системы виртуализации QEMU/KVM в дистрибутивы Astra Linux

Установка KVM в ОС ОН Орёл 2.12

Для автоматизированной установки пакета Virt-manager (KVM) в дистрибутив ОС ОН Орёл 2.12 включен пакет astra-kvm.
Пакет может быть установлен с помощью графического менеджера пакетов (см. Графический менеджер пакетов synaptic) или из командной строки командой:

Command
sudo apt install astra-kvm

При установке этого пакета будет автоматически установлен сам Virt-manager графический инструмент управления виртуальными машинами virt-manager  и выполнены все действия, необходимые для установки и запуска системы виртуализации. Дополнительно для работы в сети будет установлен пакет ebtables.

Установка KVM в предыдущих версиях Astra Linux

Для работы с virt-manager (kvm)  Орел current:

  • Включить виртуализацию Intel VT в BIOS;
  • Проверить флаги процессора:

    Для процессоров Intel:

    Command
    grep vmx /proc/cpuinfo

    Для процессоров AMD:

    Command
    grep svm /proc/cpuinfo

    Проверить наличие загруженных модулей ядра kvm и kvm_intel командой

    Command
    Titlelsmod | grep kvm
    kvm_intel             258048  0
    kvm                   659456  1 kvm_int

    При установке пакетов текущий пользователь будет автоматически добавлен в группы:

    • kvm;
    • libvirt;
    • libvirt-qemu;

    Кроме указанных групп в Astra Linux Special Edition используются группы:


    Если предполагается работа с гостевой файловой системой libguestfs с использованием sudo, то требуется включить в указанные выше группы пользователя root:
    Command
    sudo usermod -a -G kvm,libvirt,libvirt-qemu,libvirt-admin root


    Раскрыть
    titleСпециальные группы пользователей. Нажмите, чтобы раскрыть...

    Назначение ролей специальным группам пользователей определяются в конфигурационном файле /etc/libvirt/libvirtd.conf. Не рекомендуется изменять заданные по умолчанию значения:

    Блок кода
    admin_group = "libvirt-admin"
    devel_group = "libvirt-dev"
    admvm_group = "libvirt-admvm

    Права, предоставляемые ролям, определяются в файлах /etc/libvirt/parsec_roledb.conf и /usr/share/polkit-1/actions/org.libvirt.api.policy.

    Других пользователей, которые должны работать с виртуализацией, следует добавить в указанные группы вручную (кроме группы libvirt-admin в Astra Linux Common Edition):

    Command
    sudo usermod -a -G kvm,libvirt,libvirt-qemu,libvirt-admin <имя_пользователя>

    Для того, чтобы добавление в группы вступило в силу, нужно перезапустить пользовательскую сессию. В целях тестирования для того, чтобы добавление в группы вступило в силу, можно выполнить следующую команду (потребуется ввести пароль пользователя):

    Command

    exec su - $USER

    Для хранения образов виртуальных машин при первом запуске графической оболочки управления виртуализацией virtmanager автоматически создается пул данных. По умолчанию этот пул данных располагается в каталоге /var/lib/libvirt/images. Дополнительные пулы данных могут быть созданы по мере необходимости.

    Права доступа к управлению виртуализацией

    При установке системы виртуализации в каталоге /usr/share/polkit-1/actions/ создаются два правила Polkit, предоставленные разработчиками системы виртуализации:

    1. файл org.libvirt.unix.policy — описывает два глобальных разрешения по доступу к виртуальной инфраструктуре:
      • org.libvirt.unix.monitor — позволяет выполнять мониторинг виртуальной инфраструктуры;
      • org.libvirt.unix.manage — позволяет выполнять управление виртуальной инфраструктурой;
    2. файл org.libvirt.api.policy — содержит список операций (например, создание ВМ, удаление виртуальной сети и т.д.), которые становятся доступны пользователям, если проверка по правилу org.libvirt.unix.policy пройдена.

    Ролевой контроль прав доступа к управлению виртуализацией

    Информация
    Настоящий раздел применим для Astra Linux Special Edition РУСБ.10015-01 и РУСБ.10015-10 (очередное обновление 1.7) с установленным обновлением БЮЛЛЕТЕНЬ № 2022-1221SE17MD (срочное оперативное обновление 1.7.3.UU.1).

    Начиная с обновления БЮЛЛЕТЕНЬ № 2022-1221SE17MD (срочное оперативное обновление 1.7.3.UU.1) в Astra Linux реализован механизм ролевого управления доступом, базирующийся на применении драйвера доступа Polkit и обеспечивающий разграничение возможностей выполнения привилегированных операций со средствами виртуализации. Реализация ролевого метода управления доступом обеспечивает следующее разграничение доступа по ролям:

    • разработчик виртуальной машины;
    • администратор безопасности средства виртуализации;
    • администратор средства виртуализации;
    • администратор виртуальной машины.

    Назначение ролей и полномочий осуществляется администратором средства виртуализации.

    Для реализации ролевого контроля:

    1. Установить пакет astra-kvm-secure:

      Command
      sudo apt install astra-kvm-secure

      При установке пакета создаются служебные группы libvirt-adm, libvirt-dev и правила, реализующие разрешения для этих групп:

      1. Правило /var/lib/polkit-1/localauthority/10-vendor.d/60-libvirt.pkla, позволяющее пользователям групп libvirt-dev, libvirt-adm и libvirt осуществлять доступ к операциям по управлению виртуальной инфраструктурой;
      2. Правила /var/lib/polkit-1/localauthority/15-libvirtd.d/.org.libvirt.api.*.pkla, определяющие конкретные разрешения для ролей.


    2. После установки пакета для включения ролевого контроля:

      1. В конфигурационном файле системы виртуализации /etc/libvirt/libvirtd.conf параметру access_drivers присвоить значение [ "polkit", "parsec" ]:

        Блок кода
        access_drivers = ["polkit", "parsec" ]


      2. Перезапустить службу libvirtd, выполнив команды:

        Command
        sudo systemctl restart libvirtd firewalld


    Для редактирования правил возможно использование графического инструмента fly-polkit-viewer.

    Для настройки ролей:

    1. Пользователей, реализующих роль разработчика виртуальных машин, включить в группу libvirt-dev и libvirt-admin;
    2. Пользователей, реализующих роль администратора безопасности:
      1. Включить в группу libvirt-sec;
      2. Исключить из групп libvirt, libvirt-qemu, kvm
    3. Пользователей, реализующих роль администратора средства виртуализации:
      1. Включить в группы libvirt-adm, libvirt-admin и astra-admin;
      2. назначить возможность работы под высоким уровнем целостности (63)
    4. Пользователей, реализующих роль администратора виртуальной машины включить в группу libvirt.

    Для того, чтобы пользователи - участники группы могли выполнять команды без применения sudo создать для групп файлы в каталоге /etc/sudoers.d создать файл с разрешениями для групп, например:

    Блок кода
    %libvirt-sec ALL=(ALL:ALL) ALL
    %libvirt-adm ALL=(ALL:ALL) ALL

    Имя файла может быть произвольным.

    Дополнительно, для разрешения доступа пользователей группы libvirt к виртуальным машинам, в графической консоли ВМ перейти в свойства ВМ и в разделе «Безопасность» задать права доступа к виртуальной машине для пользователей:
    Image Added

    Установка виртуализации в Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6),  РУСБ.10015-16 исп. 1

    Для работы с системой виртуализации QEMU/KVM в Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6),  РУСБ.10015-16 исп. 1 необходимо установить следующие пакеты:

    • libvirt-daemon-system;
    • libvirt0;
    • qemu-kvm.

    Команда для установки:

    Command
    sudo apt install libvirt-daemon-system libvirt0 qemu-kvm

    При установке пакетов в Astra Linux Special Edition будет создан каталог /var/lib/libvirt/images (принятый по умолчанию каталог пула данных) которому будут назначены мандатные атрибуты, достаточные для размещения в нем данных с ненулевыми мандатными метками:

    Command
    Titlesudo pdp-ls -lMd /var/lib/libvirt/images

    drwx--x--xm--  2 root root Уровень_3:Высокий:Категория_1,Категория_2,0xfffffffffffffffc:ccnr /var/lib/libvirt/images


    Всех пользователей, которые должны работать с виртуализацией (включая текущего пользователя-администратора) следует добавить в

    Установить пакеты:

    Command
    sudo apt install qemu-kvm bridge-utils virt-manager libvirt-daemon libvirt-daemon-system firewalld

    Запустить firewalld и включить его перезапуск после перезагрузки:

    Command
    sudo systemctl enable --now firewalld
    Независимо от используемой версии Astra Linux следует добавить пользователей, которые будут использовать virt-manager(kvm) в следущие группы:
    • kvm;
    • libvirt;
    • libvirt-admin (Внимание! этой группы нет в Astra Linux Common Edition);
    • libvirt-qemu.

    Для текущего пользователя это можно сделать следющей командойКоманда для добавления пользователя в группы:

    Command
    sudo usermod -a -aG G kvm,libvirt,libvirt-admin,libvirt-qemu ,kvm $USER<имя_пользователя>
    Для того, чтобы изменения участия в группах вступили добавление пользователей в группы вступило в силу, необходимо нужно перезапустить пользовательскую сессию.

    Якорь
    #firewalld
    #firewalld
    Настройка межсетевого экрана после установки KVM

    При установке виртуализации QEMU/KVM в Astra Linux Special Edition автоматически выполняется настройка правил маршрутизации для работы с виртуальными машинами. Для этого используется пакет firewalld. При его установке будет включен межсетевой экран, побочным эффектом чего является ограничение работы сетевых служб.


    Дополнительно можно указать путь подключения, который будет использоваться по умолчанию командой virsh:

    Проверить разрешенные межсетевым экраном службы и порты можно командой:

    Command
    sudo firewall-cmd --list-all

    Получить список известных межсетевому экрану служб можно командой:

    Command
    sudo firewall-cmd --get-services


    Информация
    Для внесения временных изменений (например, в целях тестирования) можно использовать указанные ниже команды без опции --permanent. Такие изменения будут сохраняться до перезагрузки.

    Разрешить доступ к известной службе можно командой:

    Command
    sudo firewall-cmd --permanent --add-port=<имя_службы>

    Например, для службы RDP:

    Command
    sudo firewall-cmd --permanent --add-service=rdp

    Разрешить доступ к дополнительному порту (не используя имена известных служб) можно командой:

    Command
    sudo firewall-cmd --permanent --add-port=<номер_порта>/<название_протокол>

    Например, для службы RDP:

    Command
    sudo firewall-cmd --permanent --add-port=3389/tcp

    После внесения изменений перезагрузить конфигурацию межсетевого экрана:

    Command

    sudo firewall-cmd --reload

    Более подробную справку по работе с межсетевым экраном см.:

    Command

    man firewalld
    man firewall-cmd

    Работа с QEMU/KVM

    Создание виртуальных машин

    Command
    export LIBVIRT_DEFAULT_URI="qemu:///system"
    Чтобы заданное значение автоматически устанавливалось при входе в сессию эту команду можно добавить в файл .bashrc.

    Информация
    При работе рекомендуется контролировать содержимое /var/lib/libvirt/images и своевремнно удалять неиспользуемые диски.

    Сброс настроек

    своевременно удалять неиспользуемые диски.

    Для создания виртуальных машин в Astra Linux Special Edition x.7 и Astra Linux Common Edition 2.12 можно использовать графический менеджер виртуальных машин virt-manager. Для Astra Linux Special Edition РУСБ.10152-02 Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) см. статью Создание виртуальных машин средствами XML в Astra Linux Special Edition (применима также и для х.7 и 2.12).

    Создание собственных пулов для пользователей

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

    При работе с Astra Linux Special Edition образы дисков виртуальных машин (в том числе загрузочные образы для установки ОС на виртуальных машинах) регистрируются в системе виртуализации как файловые объекты с высоким уровнем конфиденциальности. При этом все вышележащие каталоги в файловой системе также автоматически получают высокий уровень конфиденциальности. В связи с этим не рекомендуется размещать образы дисков в домашних каталогах пользователей, так как присвоение высокого уровня конфиденциальности домашнему каталогу существенно затруднит работу пользователя - владельца этого каталога.

    Для создания собственного пула пользователя следует создать каталог, доступный этому пользователю, например:

    Command

    sudo mkdir -p /vrt/pool1
    sudo chmod 750 /vrt/pool1
    sudo chown <имя_пользователя> /vrt/pool1

    Для запрета добавления новых образов ВМ в пул пользователю необходимо ограничить доступ к директории правами на чтение (r-x).

    Дальнейшие действия выполнять от имени пользователя - владельца пула.
    Создать пул в ранее созданных каталогах можно следующими командами:

    Command
    virsh -c qemu:///system pool-define-as pool1 --type dir --target /vrt/pool1
    virsh -c qemu:///system pool-build pool1
    virsh -c qemu:///system pool-start pool1
    virsh -c qemu:///system pool-autostart pool1
    virsh -c qemu:///system pool-list --all

    Образец диалога с выводом команд:

    Раскрыть
    $ virsh -c qemu:///system pool-define-as pool1 --type dir --target /vrt/pool1
    Pool pool1 defined
    $ virsh -c qemu:///system pool-build pool1
    Pool pool1 built
    $ virsh -c qemu:///system pool-start pool1
    Pool pool1 started
    $ virsh -c qemu:///system pool-autostart pool1
    Pool pool1 marked as autostarted
    $ virsh -c qemu:///system pool-list --all
    Name State Autostart
    -------------------------------------------
    pool1 active yes

    При работе в Astra Linux Special Edition при создании пула необходимые мандатные атрибуты будут присвоены ему автоматически (при условии, что на ОС установлено обновление безопасности БЮЛЛЕТЕНЬ № 20190222SE16 (оперативное обновление 2)). Проверить мандатные атрибуты пула можно командой:

    Command
    pdp-ls -Md /vrt/pool1

    Образец диалога:

    Раскрыть
    $ pdp-ls -Md /vrt/pool1
    drwxr-xr-xm-- 2 vrtadmin vrtadmin Уровень_3:Высокий:Категория_1,Категория_2,0xfffffffffffffffc:CCNRA /vrt/pool1

    Создать и запустить виртуальную машину с образом диска, расположенным в ранее созданном пуле командой:

    Command

    virsh -c qemu:///system define vm1.xml
    virsh -c qemu:///system start vm1

    Образец диалога:

    Раскрыть

    $ virsh -c qemu:///system define vm1.xml
    Domain vm1 defined from vm1.xml

    $ virsh -c qemu:///system start vm1
    Domain vm1 started

    Проверить статус ВМ:

    Command
    virsh -c qemu:///system list --all


    Образец диалога:

    Раскрыть
    $ virsh -c qemu:///system list --all
    Id Name State
    ----------------------------------------------------
    3 vm1 running


    Проверить параметры подключения к ВМ

    Command
    $ virsh -c qemu:///system domdisplay vm1

    Образец диалога:

    Раскрыть
    virsh -c qemu:///system domdisplay vm1
    spice://127.0.0.1:5900

    Подключиться к виртуальному монитору ВМ

    Command
    spicy -h 127.0.0.1 -p 5900

    Сброс пользовательских настроек

    Для сброса старых пользовательских Для сброса старых пользовательсктх настроек virt-manager удалить файл .config/dconf/user

    Устранение ошибок

    При появлении ошибки custom процессора нужно поставить в настройках пункт "использовать архитектуру процессора хоста".

    При ошибке network 'default' not active выполнть выполнить следующие команды:

    Command
    borderColor#c2e6ff
    bgColor#e2f3ff
    sudo virsh net-start default
    sudo virsh net-autostart default

    После выполнения этих команд после перезагрузки сеть network 'default' будет запускаться автоматически.

    Настройка фиксированных IP-адресов

    Для привязки фиксированных IP-адресов к виртуальным машинам выполнить команду:

    Command
    borderColor#c2e6ff
    bgColor#e2f3ff
    sudo virsh net-edit default

    и после строки:

    Блок кода
    <range start='192.168.122.2' end='192.168.122.254'/>

    вставить строки с мак-адресами виртуальных адаптеров, например, как указано ниже:

    Блок кода
    <host mac='52:54:00:a2:99:c2' name='host1' ip='192.168.122.133'/>
    <host mac='52:54:00:de:2e:58' name='host2' ip='192.168.122.134'/>

    После сохранения изменений перезапустить виртуальную сеть:

    Command
    borderColor#c2e6ff
    bgColor#e2f3ff
    sudo virsh net-destroy default
    sudo virsh net-start default

    Примеры команд работы с виртуальными машинами

    Получить список машин:

    Command
    borderColor#c2e6ff
    bgColor#e2f3ff
    sudo virsh list --all
    sudo virsh start <имя виртуальной машины>

    Включить автоматический запуск виртуальной машины при загрузке:

    Command
    borderColor#c2e6ff
    bgColor#e2f3ff
    echo "#!/bin/bash" | sudo tee /etc/rc.local
    echo "virsh start <имя виртуальной машины>" | sudo tee -a /etc/rc.local
    sudo chmod +x /etc/rc.local

    Решение возможных проблем с фильтрацией пакетов при работе с сетью

    Создать в каталоге /etc/sysctl.d/ файл с любым именем и расширением .conf. Например:

    Command
    borderColor#c2e6ff
    bgColor#e2f3ff
    cat << EOF | sudo tee -a /etc/sysctl.d/net_bridge.conf
    net.bridge.bridge-nf-call-ip6tables = 0
    net.bridge.bridge-nf-call-iptables = 0
    net.bridge.bridge-nf-call-arptables = 0
    net.ipv4.ip_forward=1
    EOF