
Framework zur Manipulation virtueller Maschinen
Mofos ist ein Werkzeug zum Erstellen, Ausführen und Verwalten von virtuellen Maschinen. Es nutzt Libvirt/QEMU/KVM und Python und ist dadurch mit jeder Linux-Distribution kompatibel. Stark inspiriert von Qubes OS (https://www.qubes-os.org/) zielt Mofos darauf ab, viele seiner Funktionen nachzubilden.
Das Werkzeug wurde ausgiebig auf Debian mit Debian-basierten virtuellen Maschinen getestet. Obwohl andere Linux-Distributionen voraussichtlich funktionieren, können zusätzliche Konfigurationen erforderlich sein. Weitere Details werden noch ergänzt.
Mofos bietet eine Reihe von Funktionen, die sich auf die sichere Verwaltung virtueller Maschinen konzentrieren, darunter:
Eine Mofos-Maschine besteht aus zwei Festplatten, die mithilfe von overlayfs kombiniert werden. Die erste Festplatte, die als untere Ebene bezeichnet wird, ist eine schreibgeschützte Vorlagenfestplatte, während die zweite Festplatte alle Änderungen speichert, die von der virtuellen Maschine vorgenommen werden. Diese Vorlagenfestplatte wird von mehreren virtuellen Maschinen gemeinsam genutzt. Dadurch erfordert das Erstellen einer neuen virtuellen Maschine lediglich das Klonen einer leeren Festplatte, die bereits partitioniert ist, um die geänderten Daten aufzunehmen. Dieser Ansatz stellt sicher, dass neue virtuelle Maschinen schnell erstellt werden können, während die Vorlage unabhängig aktualisiert werden kann. Aktualisierungen der Vorlage werden bei den abhängigen virtuellen Maschinen beim nächsten Neustart wirksam.
Je nach Linux-Distribution kann das Makefile verwendet werden, um entweder ein deb-Paket zu erzeugen oder die Dateien direkt zu installieren.```
make deb
apt install ./mofos-VERSION.deb
Während der `apt`-Installation werden verschiedene Einstellungen abgefragt. Die Standardoptionen können im Allgemeinen akzeptiert werden. Die einzige Einstellung, die Beachtung erfordert, ist die Subnetz-Adresse, die vom mofos-libvirt-Netzwerk verwendet wird (Standard: `192.168.90.0/24`).
ODER
Installieren Sie die folgenden Abhängigkeiten:
- 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
Je nach Distribution werden die nach /usr/lib/python3/dist-packages kopierten Python-Dateien vom Python-Interpreter möglicherweise nicht erkannt und sollten an einem anderen Ort abgelegt werden. Unter Fedora müssen die Python-Dateien beispielsweise nach /usr/lib/python3.11/site-packages kopiert werden.
[!WARNING] Achtung, seit Debian trixie wird
xpranicht mehr als Paket bereitgestellt, du musst es manuell aus seinen eigenen Repositories installieren. Siehe https://github.com/Xpra-org/xpra/wiki/Download#-for-debian-based-distributions für detaillierte Anweisungen.
Mofos verwendet die QEMU/KVM-Systemsitzung. Damit der Befehl virsh auf virtuelle Maschinen und zugehörige Ressourcen zugreifen kann, setze die Umgebungsvariable LIBVIRT_DEFAULT_URI auf qemu:///system:```console
export LIBVIRT_DEFAULT_URI=qemu:///system
### Sicherheitsaspekte
Die Verwendung von QEMU/KVM-Systemsitzungen verbessert die Isolation zwischen Host- und Gast-VMs, indem qemu-Instanzen unter einem dedizierten Benutzer (`libvirt-qemu`) ausgeführt werden und für jede Instanz spezifische Sicherheitsprofile angewendet werden.
Standardmäßig können normale Benutzer jedoch nicht über den System-Socket von `libvirtd` auf die Verwaltung von Maschinen, Netzwerken und anderen Ressourcen zugreifen. Um Zugriff zu erhalten, müssen Benutzer entweder Mitglied der libvirt-Unix-Gruppe sein oder sudo verwenden. In der Vergangenheit wurden lokale Privilege-Escalation-Schwachstellen ausgenutzt, um über die Mitgliedschaft in der libvirt-Gruppe Root-Rechte zu erlangen.
Um diese Risiken zu mindern, stellt dieses Repository ein verstärktes AppArmor-Profil für den `libvirtd`-Prozess auf Systemen mit AppArmor bereit. Dieses Profil schränkt erheblich ein, wohin `libvirtd` Dateien schreiben kann und welche Programme es ausführen darf.
Darüber hinaus sind `polkit`-Regeln enthalten, um die für Mitglieder der `libvirt`-Gruppe zulässigen Aktionen weiter zu kontrollieren.
Beachten Sie, dass die AppArmor-Profile im `deb`-Paket enthalten sind, aber nicht vom `install_files`-Ziel des Makefiles installiert werden und daher separat installiert werden müssen.
## Mofos-Konfiguration
Mofos benötigt eine Konfigurationsdatei unter `$HOME/.config/mofos/config.toml` mit minimalen Einstellungen, um korrekt zu funktionieren. Eine minimale Beispielkonfiguration finden Sie unter `/usr/share/mofos/config.minimal.toml`, während eine umfassendere Konfiguration unter `/usr/share/mofos/config.sample.toml` dokumentiert ist.