Arch Linux: libvirt mit AppArmor-Unterstützung installieren
Unter Xubuntu bin ich es gewöhnt, dass das libvirt-Paket direkt mit AppArmor-Unterstützung ausgeliefert und installiert wird. Leider ist das bei Arch Linux nicht der Fall. Da ich auf dieses zusätzliche "Sicherheitsnetz" bei der Ausführung meiner QEMU/ KVM-VMs nicht verzichten möchte, verwende ich nicht das von Arch Linux ausgelieferte libvirt-Paket, sondern kompiliere es mit AppArmor-Unterstützung selbst und installiere es dann manuell mit pacman.
Wie das Ganze genau funktioniert, beschreibe ich in diesem Beitrag.
libvirt mit AppArmor-Unterstützung kompilieren
Zum Kompilieren werden einige "Entwicklungswerkzeuge" benötigt, die wie folgt installiert werden können:
Als nächstes erstellen wir ein temporäres Build-Verzeichnis und wechseln direkt in das soeben erstellte Verzeichnis:
Die Kompilierung erfolgt mithilfe des Arch Build Systems. Dazu checken wir das libvirt-git-Repository aus, welches die PKGBUILD-Datei enthält.
Die PKGBUILD-Datei enthält alle Informationen darüber wie das libvirt-Paket kompiliert werden soll. Die ausgecheckte Datei entspricht dabei dem Stand des libvirt-Pakets aus dem offiziellen Arch-Linux-Repository. Aus diesem Grund müssen wir die Datei entsprechend anpassen, um beim Kompilieren die AppArmor-Unterstützung mit zu kompilieren. Dabei sind folgende Anpassungen vorzunehmen:
- Als Abhängigkeit in der
depends=()
-Zeileapparmor
hinzufügen. - Die Zeile
groups=('custombuild')
hinzufügen. Später konfigurieren wir pacman noch so, dass Pakete der Gruppe "custombuild" nicht aktualisiert werden. Ansonsten würde pacman unser selbstkompiliertes libvirt-Paket überschreiben, sobald es eine neue libvirt-Version in den offiziellen Paketquellen von Arch Linux gibt. - Die folgenden Build-/Kompilierungsoptionen auf
enabled
setzen:- -Dapparmor
- -Dapparmor_profile
- -Dsecdriver_apparmor
Die entsprechenden Zeilen in der PKGBUILD-Datei sollten dann in etwa so aussehen:
Nun können wir libvirt mit folgendem Befehl kompilieren:
Selbstkompiliertes libvirt-Paket installieren
Nachdem das Paket fertig und ohne ohne Fehler kompiliert wurde, kann es wie folgt mit pacman installiert werden:
Um zu überprüfen, ob AppArmor nun auch wirklich greift, wenn libvirt läuft, können wir den Befehl aa_status
auf dem Host-System ausführen. Vorab müsst ihr euer System einmal neustarten. Lasst ihr eure QEMU/KVM-VMs und somit libvirt mit Root-Rechten laufen, wird libvirt im Normalfall bereits beim Systemstart ausgeführt. Andernfalls, wenn ihr eure VMs ohne Root-Rechte ausführt, müsst ihr zuerst einmal eine VM starten, damit libvirt ausgeführt wird. Die Ausgabe des Befehls sollte dann die libvirt-Prozesse im AppArmor-"enforce mode" auflisten:
pacman konfigurieren
Zuguterletzt müssen wir pacman noch, wie bereits zuvor beschrieben, so konfigurieren, dass unser selbstkompiliertes libvirt-Paket nicht automatisch durch pacman aktualisiert wird. Dazu ist in /etc/pacman.conf
folgende Zeile zu ergänzen:
Fazit
Auch unter Arch Linux lässt sich libvirt mit AppArmor absichern. Leider muss man dazu selbst das Paket entsprechend kompilieren und installieren. Außerdem muss man diesen Vorgang immer wiederholen, sobald eine neue libvirt-Version in den offiziellen Arch Linux Paketquellen verfügbar ist.