Het veilig sandboxen van toepassingen is al lang mogelijk door een combinatie van LXC of KVM en SELinux. De toepassingen zijn daardoor van elkaar geïsoleerd, waardoor een inbraak in de ene toepassing de andere toepassing of de host machine niet in gevaar brengt. Maar uiteindelijk is het redelijk complex en error-prone om dat allemaal correct op te zetten. Daarom kwam Red Hat-werknemer Daniel Berrangé in Fedora 17 met libvirt-sandbox, een API met een bijbehorende gebruiksvriendelijke tool virt-sandbox waarmee je toepassingen in veilige containers opstart.

In Fedora 18 is de functionaliteit van het pakket libvirt-sandbox nog uitgebreid. Zo is er nu een extra commando, virt-sandbox-server, waarmee een systeembeheerder eenvoudig een afgeschermde LXC-container kan aanmaken waarin een service draait. Op deze manier kun je bijvoorbeeld meerdere webservers tegelijk draaien, elk met hun eigen gegevensdirectory, en zonder dat een inbraak op één server impact heeft op de andere websites.

Containers

Eerst creëer je bijvoorbeeld een container voor Apache:

# virt-sandbox-service create -C -u httpd.service container1

Hierbij geef je met de optie -u aan welke service je in de container wil draaien. Start daarna de container:

# virt-sandbox-service start container1

Stoppen kan met:

# virt-sandbox-service stop container1

En je krijgt toegang tot een debugconsole van de container met het volgende commando:

# virt-sandbox-service connect container1

Maar je kunt ook een specifiek commando in de container uitvoeren:

# virt-sandbox-service execute -C ifconfig container1

Systemd

Virt-sandbox-service doet op de achtergrond heel wat om de juiste configuratie van de service op te zetten, en hiervoor komt Fedora's init-systeem systemd van pas. De opdracht creëert ook een systemd unit file voor de container, zodat je op de host machine eenvoudigweg service containers kunt opstarten alsof het gewone services zijn. Dat betekent dat je opdrachten kunt ingeven zoals:

# systemctl start [email protected]

# systemctl stop [email protected]

# systemctl enable [email protected]

Meer voorbeelden over het gebruik van service containers en een vollediger uitleg over de functionaliteit vind je in de man-pagina van het commando virt-sandbox-service.