См. также:
|

|
| При использовании виртуализации QEMU/KVM в Astra Linux Special Edition с включенным МКЦ и МРД для обеспечения работы с виртуальными машинами, поддерживающими ненулевые метки безопасности, все пулы данных должны находиться на файловых системах, поддерживающих работу с мандатными атрибутами (Ext4, cepfs, ocfs2, hfs). |
При установке виртуализации QEMU/KVM в Astra Linux Special Edition автоматически будет установлена и настроена система управления сетевым трафиком firewalld. Если в системе используется система управления сетевым трафиком ufw, то перед установкой виртуализации следует сохранить настройки и удалить ufw:
Установка firewalld приведет к ограничению работы сетевых служб. См. раздел Настройка межсетевого экрана после установки KVM. |
См.:
| В Astra Linux Special Edition для работы с виртуализацией от имени непривилегированного пользователя этот пользователь должен быть включен в группу libvirt-admin (не путать с группой astra-admin). Инструкцию по включению пользователя в группу см. далее. |
Для автоматизированной установки системы виртуализации QEMU/KVM в дистрибутивы Astra Linux включен пакет astra-kvm. Пакет может быть установлен с помощью графического менеджера пакетов (см. Графический менеджер пакетов synaptic) или из командной строки командой:
| sudo apt install astra-kvm |
При установке этого пакета будет автоматически установлен графический инструмент управления виртуальными машинами virt-manager и выполнены все действия, необходимые для установки и запуска системы виртуализации.
При установке пакетов текущий пользователь будет автоматически добавлен в группы:
Кроме указанных групп в Astra Linux Special Edition используются группы:
Группа libvirt-admin. Пользователи-участники этой группы могут без использования sudo работать с с виртуальными машинами, виртуальными сетями и хранилищами данных. До установки обновления БЮЛЛЕТЕНЬ № 2023-1023SE17 (оперативное обновление 1.7.5) используется только в Astra Linux Special Edition с включенным МРД (включен по умолчанию в Усиленном и Максимальном режимах защищенности Astra Linux x.7). После установки обновления БЮЛЛЕТЕНЬ № 2023-1023SE17 (оперативное обновление 1.7.5) необходима также и при выключенном МРД. Команда для добавления пользователя в группу libvirt-admin:
| sudo usermod -a -G libvirt-admin $USER |
| sudo usermod -a -G kvm,libvirt,libvirt-qemu,libvirt-admin root |
Назначение ролей специальным группам пользователей определяются в конфигурационном файле /etc/libvirt/libvirtd.conf. Не рекомендуется изменять заданные по умолчанию значения:
Права, предоставляемые ролям, определяются в файлах /etc/libvirt/parsec_roledb.conf и /usr/share/polkit-1/actions/org.libvirt.api.policy. |
Других пользователей, которые должны работать с виртуализацией, следует добавить в указанные группы вручную (кроме группы libvirt-admin в Astra Linux Common Edition):
| sudo usermod -a -G kvm,libvirt,libvirt-qemu,libvirt-admin <имя_пользователя> |
Для того, чтобы добавление в группы вступило в силу, нужно перезапустить пользовательскую сессию. В целях тестирования для того, чтобы добавление в группы вступило в силу, можно выполнить следующую команду (потребуется ввести пароль пользователя):
exec su - $USER |
Для хранения образов виртуальных машин при первом запуске графической оболочки управления виртуализацией virtmanager автоматически создается пул данных. По умолчанию этот пул данных располагается в каталоге /var/lib/libvirt/images. Дополнительные пулы данных могут быть созданы по мере необходимости.
При установке системы виртуализации в каталоге /usr/share/polkit-1/actions/ создаются два правила Polkit, предоставленные разработчиками системы виртуализации:
| Настоящий раздел применим для Astra Linux Special Edition РУСБ.10015-01 и РУСБ.10015-10 (очередное обновление 1.7) с установленным обновлением БЮЛЛЕТЕНЬ № 2022-1221SE17MD (срочное оперативное обновление 1.7.3.UU1). |
Начиная с обновления БЮЛЛЕТЕНЬ № 2022-1221SE17MD (срочное оперативное обновление 1.7.3.UU1) в Astra Linux реализован механизм ролевого управления доступом, базирующийся на применении драйвера доступа Polkit и обеспечивающий разграничение возможностей выполнения привилегированных операций со средствами виртуализации. Реализация ролевого метода управления доступом обеспечивает следующее разграничение доступа по ролям:
Назначение ролей и полномочий осуществляется администратором средства виртуализации.
Для реализации ролевого контроля:
Установить пакет astra-kvm-secure:
| sudo apt install astra-kvm-secure |
При установке пакета создаются служебные группы libvirt-adm, libvirt-dev и правила, реализующие разрешения для этих групп:
После установки пакета для включения ролевого контроля:
В конфигурационном файле системы виртуализации /etc/libvirt/libvirtd.conf параметру access_drivers присвоить значение [ "polkit", "parsec" ]:
access_drivers = ["polkit", "parsec" ] |
Перезапустить службу libvirtd, выполнив команды:
| sudo systemctl restart libvirtd firewalld |
Для редактирования правил возможно использование графического инструмента fly-polkit-viewer.
Для настройки ролей:
Для того, чтобы пользователи — участники группы могли выполнять команды без применения sudo создать в каталоге /etc/sudoers.d файл с разрешениями для групп, например:
%libvirt-sec ALL=(ALL:ALL) ALL %libvirt-adm ALL=(ALL:ALL) ALL |
Имя файла может быть произвольным.
Дополнительно, для разрешения доступа пользователей группы libvirt к виртуальным машинам, в графической консоли ВМ перейти в свойства ВМ и в разделе «Безопасность» задать права доступа к виртуальной машине для пользователей:
Для работы с системой виртуализации QEMU/KVM в Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6), РУСБ.10015-16 исп. 1 необходимо установить следующие пакеты:
Команда для установки:
| sudo apt install libvirt-daemon-system libvirt0 qemu-kvm |
При установке пакетов в Astra Linux Special Edition будет создан каталог /var/lib/libvirt/images (принятый по умолчанию каталог пула данных) которому будут назначены мандатные атрибуты, достаточные для размещения в нем данных с ненулевыми мандатными метками:
drwx--x--xm-- 2 root root Уровень_3:Высокий:Категория_1,Категория_2,0xfffffffffffffffc:ccnr /var/lib/libvirt/images |
Команда для добавления пользователя в группы:
| sudo usermod -a -G kvm,libvirt,libvirt-admin,libvirt-qemu <имя_пользователя> |
При установке виртуализации QEMU/KVM в Astra Linux Special Edition автоматически выполняется настройка правил маршрутизации для работы с виртуальными машинами. Для этого используется пакет firewalld. При его установке будет включен межсетевой экран, побочным эффектом чего является ограничение работы сетевых служб. Проверить разрешенные межсетевым экраном службы и порты можно командой:
| sudo firewall-cmd --list-all |
Получить список известных межсетевому экрану служб можно командой:
| sudo firewall-cmd --get-services |
| Для внесения временных изменений (например, в целях тестирования) можно использовать указанные ниже команды без опции --permanent. Такие изменения будут сохраняться до перезагрузки. |
Разрешить доступ к известной службе можно командой:
| sudo firewall-cmd --permanent --add-port=<имя_службы> |
Например, для службы RDP:
| sudo firewall-cmd --permanent --add-service=rdp |
Разрешить доступ к дополнительному порту (не используя имена известных служб) можно командой:
| sudo firewall-cmd --permanent --add-port=<номер_порта>/<название_протокол> |
Например, для службы RDP:
| sudo firewall-cmd --permanent --add-port=3389/tcp |
После внесения изменений перезагрузить конфигурацию межсетевого экрана:
sudo firewall-cmd --reload |
Более подробную справку по работе с межсетевым экраном см.:
man firewalld |
| При работе рекомендуется контролировать содержимое /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 1.8. |
Для того, чтобы было возможно создание внутренних моментальных снимков (моментальных снимков работающих ВМ) на ВМ с загрузкой UEFI при создании этих машин следует использовать прошивку в формате QCOW2, например прошивку /usr/share/OVMF/OVMF_CODE_4M.qcow2 и шаблон переменных /usr/share/OVMF/OVMF_VARS_4M.qcow2. Прошивка выбирается при создании ВМ на этапе корректировку параметров ВМ (чекбокс "Проверить конфигурацию перед установкой" в диалоге создания ВМ). Для создания такой ВМ из командной строки можно использовать команду virt-install с опцией --boot:
| virt-install ... --boot loader=/usr/share/OVMF/OVMF_CODE_4M.qcow2,loader.type=pflash,nvram.template=/usr/share/OVMF/OVMF_VARS_4M.qcow2 |
При работе с Astra Linux Special Edition образы дисков виртуальных машин (в том числе загрузочные образы для установки ОС на виртуальных машинах) регистрируются в системе виртуализации как файловые объекты с высоким уровнем конфиденциальности. При этом все вышележащие каталоги в файловой системе также автоматически получают высокий уровень конфиденциальности. В связи с этим не рекомендуется размещать образы дисков в домашних каталогах пользователей, так как присвоение высокого уровня конфиденциальности домашнему каталогу существенно затруднит работу пользователя - владельца этого каталога. |
Для создания собственного пула пользователя следует создать каталог, доступный этому пользователю, например:
sudo mkdir -p /vrt/pool1 |
Для запрета добавления новых образов ВМ в пул пользователю необходимо ограничить доступ к директории правами на чтение (r-x).
Дальнейшие действия выполнять от имени пользователя - владельца пула.
Создать пул в ранее созданных каталогах можно следующими командами:
| 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/pool1Pool pool1 defined$ virsh -c qemu:///system pool-build pool1Pool pool1 built$ virsh -c qemu:///system pool-start pool1Pool pool1 started$ virsh -c qemu:///system pool-autostart pool1Pool pool1 marked as autostarted$ virsh -c qemu:///system pool-list --allName State Autostart-------------------------------------------pool1 active yes |
При работе в Astra Linux Special Edition при создании пула необходимые мандатные атрибуты будут присвоены ему автоматически (при условии, что на ОС установлено обновление безопасности БЮЛЛЕТЕНЬ № 20190222SE16 (оперативное обновление 2)). Проверить мандатные атрибуты пула можно командой:
| pdp-ls -Md /vrt/pool1 |
Образец диалога:
$ pdp-ls -Md /vrt/pool1drwxr-xr-xm-- 2 vrtadmin vrtadmin Уровень_3:Высокий:Категория_1,Категория_2,0xfffffffffffffffc:CCNRA /vrt/pool1 |
Создать и запустить виртуальную машину с образом диска, расположенным в ранее созданном пуле командой:
virsh -c qemu:///system define vm1.xml |
Образец диалога:
|
Проверить статус ВМ:
| virsh -c qemu:///system list --all |
Образец диалога:
$ virsh -c qemu:///system list --allId Name State----------------------------------------------------3 vm1 running |
Проверить параметры подключения к ВМ:
| $ virsh -c qemu:///system domdisplay vm1 |
Образец диалога:
virsh -c qemu:///system domdisplay vm1spice://127.0.0.1:5900 |
Подключиться к виртуальному монитору ВМ:
| spicy -h 127.0.0.1 -p 5900 |
Сброс пользовательских настроек
Для сброса старых пользовательских настроек virt-manager удалить файл .config/dconf/user
При появлении ошибки custom процессора нужно поставить в настройках пункт "использовать архитектуру процессора хоста".
При ошибке network 'default' not active выполнить следующие команды:
sudo virsh net-start defaultsudo virsh net-autostart default |
После выполнения этих команд после перезагрузки сеть network 'default' будет запускаться автоматически.
Для привязки фиксированных IP-адресов к виртуальным машинам выполнить команду:
| 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'/> |
После сохранения изменений перезапустить виртуальную сеть:
sudo virsh net-destroy defaultsudo virsh net-start default |
| "Мягкое" выключение (Shutdown) — отсылка гипервизором сообщения стандарта ACPI для выключения виртуальной машине. Может не работать при критических состояниях ОС. |
Для включения "мягкого" выключения на виртуальных машинах под управлением Astra Linux:
| virsh edit <имя_виртуальной_машины> |
<channel type='unix'> <source mode='bind'/> <target type='virtio' name='org.qemu.guest_agent.0'/> </channel> |
| sudo apt-get install qemu-guest-agent |
| sudo systemctl start qemu-guest-agent |
Получить список машин:
sudo virsh list --allsudo virsh start <имя виртуальной машины> |
Включить автоматический запуск виртуальной машины при загрузке:
echo "#!/bin/bash" | sudo tee /etc/rc.localecho "virsh start <имя виртуальной машины>" | sudo tee -a /etc/rc.localsudo chmod +x /etc/rc.local |
Создать в каталоге /etc/sysctl.d/ файл с любым именем и расширением .conf. Например:
cat << EOF | sudo tee -a /etc/sysctl.d/net_bridge.conf net.bridge.bridge-nf-call-ip6tables = 0net.bridge.bridge-nf-call-iptables = 0net.bridge.bridge-nf-call-arptables = 0net.ipv4.ip_forward=1EOF |