Anwendungen auf die Schnelle mit KVM oder LXC einsperren
Daniel Berrange hat auf der Fosdem libvirt-sandbox gezeigt, das Programme in eine VM oder einen Container sperrt, ohne dass der Anwender dort erst ein Betriebssystem einrichten muss.
Red-Hat-Entwickler Daniel Berrange hat im Fosdem-Vortrag "Building application sandboxes on top of LXC and KVM with libvirt" die Bibliothek libvirt-sandbox vorgestellt, die einzelne Applikationen mit Hilfe der Virtualisierungslösung KVM (Kernel-based Virtual Machine) oder der Container-Technik LXC (Linux Containers) in eine abgesicherten Bereich ("Sandbox") sperrt. Die Einrichtung eines virtualisierten Betriebssystem ist dabei nicht nötig und der Overhead soll recht klein sein.
In der KVM-Variante startet die Lösung Kernel und Initramfs in einer Virtuellen Maschine (VM), die nach dem Booten die Anwendung aufrufen. Über das plan9fs (p9fs/Plan 9 File System) kann der Kernel der VM einige Bereiche des Host-Dateisystems lesen, daher ist keine Betriebssystem-Installation in der VM erforderlich. Laut Messungen von Berrange verzögert das Aufsetzen solch einer VM den Start von Anwendungen um ungefähr drei Sekunden. Beim Zugriff auf die CPU soll der Ansatz zu keinen größeren Performance-Verluste führen; beim Zugriff auf Geräte stehe zirka 90 Prozent der Performance zur Verfügung, welche einer direkt auf dem Host aufgerührten Anwendung bereit stünde.
In der LXC-Variante laufen die Anwendungen unter dem Host-Kernel in einem abgeschotteten Bereich, wie man es von Container Virtualisierung kennt; grob darf man sich diese Lösung wie ein besser abgesichertes Change-Root (chroot) vorstellen, dass im Falle von libvirt-sandbox ebenfalls Teile des Host-Systems lesen darf, sodass kein Betriebssystem im Container installiert werden muss. Das Einrichten eines Containers mit libvirt-sandbox soll weniger als 200 Millisekunden dauern; Anwendungen sollen praktisch ohne Performance-Verlust arbeiten.
Die abgeschotteten Bereiche lassen sich über das Werkzeug "virt-sandbox" relativ einfach einrichten, sodass der Anwender kaum etwas davon mitbekommt, dass etwa eine VM mit KVM gestartet wird. Beim Einrichten lässt sich festlegen, ob oder welche Netzwerk-Ressourcen in der Sandbox zur Verfügung stehen. Als Einsatzzwecke für beide Ansätze führt Berrange unter anderem Virtual Hosting von Server-Anwendung (etwa Apache), die Verarbeitung nicht vertrauenswürdigen Multimedia-Streams oder das Bauen von RPM-Paketen an. Auch Web-Browser kann man in die Sandkästen einsperren, um etwa das Online-Banking strikt vom Rest der Internet-Aktivitäten zu trennen; ein weiterleiten der Bildschirmausgaben aus der VM an den Host kann per VNC oder Spice erfolgen.
SELinux sorgt für zusätzliche Absicherungen; das Sicherheitsframework kann mit der SELinux Sandbox bereits seit 2009 Anwendungen in eine abgeschotteten Bereich sperren, was laut Berrange aber bei bestimmten Anwendungsfällen Probleme bereite und nicht so flexibel sei. Weitere Hintergründe zur libvirt-sandbox liefert die Ankündigung der ersten Version, die Folien des Fosdem-Vortrags und ein Blog-Eintrag, in dem Berrange die Technik detailliert erläutert. Einige Infos finden sich auch auf einer Feature Seite für Fedora 17, dass libvirt-sandbox enthalten soll und für Mai geplant ist. (thl)