
Фреймворк для манипулирования виртуальными машинами
Mofos — это инструмент, предназначенный для создания, запуска и управления виртуальными машинами. Он использует Libvirt/QEMU/KVM и Python, что делает его совместимым с любым дистрибутивом Linux. Во многом вдохновлённый Qubes OS (https://www.qubes-os.org/), Mofos стремится воспроизвести многие из функций Qubes OS.
Инструмент был тщательно протестирован на Debian с виртуальными машинами на основе Debian. Хотя ожидается, что другие дистрибутивы Linux будут работать, может потребоваться некоторая дополнительная настройка. Более подробная информация будет добавлена.
Mofos предоставляет ряд функций, ориентированных на безопасное управление виртуальными машинами, включая:
Машина mofos состоит из двух дисков, объединённых с помощью overlayfs. Первый диск, известный как нижний слой, является шаблонным диском только для чтения, а второй диск хранит все изменения, внесённые виртуальной машиной. Этот шаблонный диск используется совместно несколькими виртуальными машинами. В результате создание новой виртуальной машины требует лишь клонирования пустого диска, который уже разбит на разделы для хранения изменённых данных. Такой подход обеспечивает быстрое создание новых виртуальных машин, позволяя при этом обновлять шаблон независимо. Любые обновления шаблона вступят в силу для зависимых виртуальных машин после их следующей перезагрузки.
В зависимости от дистрибутива Linux Makefile можно использовать либо для генерации deb-пакета, либо для непосредственной установки файлов.```
make deb
apt install ./mofos-VERSION.deb
Во время установки через `apt` будут запрошены различные настройки. Как правило, можно принимать параметры по умолчанию. Единственная настройка, требующая внимания, — это адрес подсети, используемый сетью mofos libvirt (по умолчанию: `192.168.90.0/24`).
ИЛИ
Установите следующие зависимости:
- guestfs-tools
- libnotify-bin
- libvirt
- libvirt-clients
- libvirt-daemon
- make
- python3-click
- python3-click-completion
- python3-colorama
- python3-cryptography
- python3-dbus
- python3-jinja2
- python3-lxml
- python3-prettytable
- python3-pyroute2
- python3-tqdm
- qemu-system-common
- qemu-system-modules-spice
- socat
- spice-client-gtk
- sudo
- virtinst
- virt-install
- virtiofsd
- virt-manager
- virt-viewer```
make install_files
В зависимости от дистрибутива Python-файлы, скопированные в /usr/lib/python3/dist-packages, могут не обнаруживаться интерпретатором Python, и их следует размещать в другом месте. Например, в Fedora Python-файлы необходимо копировать в /usr/lib/python3.11/site-packages.
[!WARNING] Внимание: начиная с Debian trixie,
xpraбольше не входит в состав пакетов, поэтому его необходимо устанавливать вручную из пользовательских репозиториев. Подробные инструкции см. на странице https://github.com/Xpra-org/xpra/wiki/Download#-for-debian-based-distributions.
Mofos использует системную сессию QEMU/KVM, поэтому для предоставления команде virsh доступа к виртуальным машинам и связанным ресурсам установите переменную окружения LIBVIRT_DEFAULT_URI в значение qemu:///system:```console
export LIBVIRT_DEFAULT_URI=qemu:///system
### Вопросы безопасности
Использование системных сеансов QEMU/KVM улучшает изоляцию между хостом и гостевыми виртуальными машинами за счёт запуска экземпляров qemu под выделенным пользователем (`libvirt-qemu`) и применения к каждому экземпляру определённых профилей безопасности.
Однако по умолчанию обычные пользователи не могут взаимодействовать с системным сокетом `libvirtd` для управления машинами, сетями и другими ресурсами. Чтобы получить доступ, пользователи должны либо входить в группу Unix libvirt, либо использовать sudo. Исторически сложилось так, что уязвимости локального повышения привилегий использовали членство в группе libvirt для получения root-привилегий.
Чтобы снизить эти риски, данный репозиторий предоставляет усиленный профиль AppArmor для процесса `libvirtd` в системах, использующих AppArmor. Этот профиль существенно ограничивает, куда `libvirtd` может записывать файлы и какие программы он может выполнять.
Кроме того, включены правила `polkit` для дальнейшего контроля действий, разрешённых членам группы `libvirt`.
Обратите внимание, что профили AppArmor включены в пакет `deb`, но не устанавливаются целью `install_files` из Makefile, поэтому их необходимо устанавливать отдельно.
## Конфигурация Mofos
Для корректной работы Mofos требуется файл конфигурации, расположенный по пути `$HOME/.config/mofos/config.toml`, с минимальными настройками. Пример минимальной конфигурации можно найти в `/usr/share/mofos/config.minimal.toml`, а более полная конфигурация описана в `/usr/share/mofos/config.sample.toml`.
Следующая ошибка указывает на то, что файл конфигурации не был найден:```
[-] Copy the sample configuration file from /usr/share/mofos/config.minimal.toml to ~/.config/mofos/config.toml
Следующая ошибка указывает на то, что текущий пользователь не входит в группу libvirt:``` [-] libvirtError("authentication unavailable: no polkit agent available to authenticate action 'org.libvirt.unix.manage'")
Ключевые параметры конфигурации, которые необходимо настроить в файлах конфигурации, следующие:
- key (path): файл закрытого ключа SSH, используемый для доступа к виртуальным машинам. Рекомендуется создать отдельный ключ для этой цели.
- user (string): имя пользователя для SSH-доступа к виртуальным машинам.
- root_password (hashed value): хешированный пароль root, который будет установлен во время установки нового шаблона.
- root_ssh_pubkey (string): открытый ключ SSH, который будет установлен в каталоге пользователя root во время установки шаблона.
Кроме того, для установки шаблона необходимо настроить следующие параметры:
- ntp
- dns (необязательно, если указан прокси)
- proxy
## Установка шаблона
### Настройка брандмауэра