Fedora 11 is geen enterprise Linux-besturingssysteem, maar het vormt wel de basis van Red Hat Enterprise Linux 6, dat gepland is voor het eerste kwartaal van 2010. Het loont daarom de moeite om eens te kijken welke nieuwigheden er in Fedora aanwezig zijn. Omdat er vooral op vlak van virtualisatie belangrijke nieuwe features zijn, richten we ons daarop.

Virt-manager uitgebreid

Om met virtualisatie in Fedora 11 aan de slag te gaan, kun je het beste python-virtinst installeren. Dit bevat een aantal Python-modules en tools om virtuele machines te installeren. Daarnaast installeer je ook virt-manager, een grafische tool om virtuele machines te beheren, en virt-viewer, dat een grafische client biedt om op de gastbesturingssystemen te werken. Installeer ook KVM, dat sinds deze versie te vinden is in het pakket qemu-system-x86.

In Fedora 11 is vooral virt-manager zichtbaar uitgebreid, te vinden als het programma "Virtual Machine Manager" in het menu Applications > System Tools. Als alles goed gaat, zie je hierin dat qemu op localhost actief is. Klik onderaan op New om een nieuwe virtuele machine aan te maken. In stap 1 geef je de machine een naam en geef je in of je een lokaal iso-bestand of een netwerkinstallatie gebruikt. Kies je een lokaal iso-bestand, dan geef je ook het type besturingssysteem en de versie in. In stap 3 stel je in hoeveel RAM en hoeveel processoren je virtuele machine toegewezen krijgt, in stap 4 stel je de virtuele harde schijf in en in stap 5 kun je nog geavanceerde instellingen aanpassen zoals het virtuele netwerk. Klik op Finish en de installer van je distributie begint zijn werk.

Een nieuwigheid is dat PCI-apparaten van de host nu rechtstreeks aan een gastmachine kunnen toegekend worden. Voor een netwerkkaart is dit heel interessant: de traditionele manier emuleert immers een netwerkkaart. Op hostmachines met een Intel VT- of AMD IOMMU-processor kunnen netwerkkaarten nu rechtstreeks aan een virtuele machine toegekend worden, met als effect dus een minimale overhead. Toekennen van een netwerkkaart kan in virt-manager bij het aanmaken van een nieuwe virtuele machine in het configuratiescherm van het netwerk door "assign physical device" te kiezen en een aanwezige netwerkkaart te selecteren.

Dit systeem heeft wel zijn beperkingen. Zo kan de host tijdens het gebruik van de netwerkkaart door een virtuele machine die netwerkkaart niet meer gebruiken. En het is ook niet meer mogelijk om een gastsysteem te migreren naar een andere host, zelfs als exact dezelfde hardware aanwezig is.

De functie is niet beperkt tot netwerkkaarten: ook hardeschijfcontrollers en andere PCI-apparaten kunnen zo toegekend worden. Alleen grafische kaarten zijn niet ondersteund, omdat ze toegang tot het video-BIOS vereisen.

Verbeterde console

De console voor virtuele gastbesturingssystemen is ook verbeterd. In Fedora 10 en vroeger was de schermresolutie van de console beperkt tot 800x600, maar Fedora 11-gastsystemen zouden standaard tenminste 1024x768 moeten ondersteunen, wat vooral voor Anaconda en Firstboot in Fedora-gasten een hele verbetering is. Problemen met de muiscursor zouden nu bij Fedora 11-gastsystemen ook van de baan moeten zijn, waardoor je bij gebruik van virt-manager en virt-viewer geen "pointer grab" functie meer nodig hebt.

Verbeterde VNC-authenticatie

Fedora 11 gebruikt het SASL-protocol (Simple Authentication and Security Layer) voor de authenticatie van een VNC-connectie op een virtuele machine in KVM. SASL werkt met plugins, waardoor heel wat verschillende authenticatiemechanismen ondersteund zijn. Gebruik je SASL in combinatie met de bestaande ondersteuning voor TLS-encryptie in software, dan kunnen clients zoals Vinagre, virt-viewer en virt-manager veilig van een afstand verbinden met virtuele machines op Fedora-servers. Maar UltraVNC, RealVNC en TightVNC ondersteunen geen SASL (en ook geen SSL/TLS). Gebruik je Kerberos in je netwerk, dan kun je met SASL zelfs een veilig single sign-on systeem op de VNC-server opzetten. Door de verbeterde VNC-authenticatie hoef je niet meer het traditionele (onveilige) VNC-wachtwoordschema te gebruiken of je toevlucht te zoeken tot het tunnelen van de VNC-connectie over ssh.

SASL inschakelen gaat als volgt. Zoek in /etc/libvirt/qemu.conf naar de volgende regel:

# vnc_sasl = 1

En verwijder het hekje om de regel uit te commentariëren. Daarna open je het bestand /etc/sasl2/qemu.conf en kies je welke plugins je inschakelt. Het eenvoudigste (maar ook niet zo veilig) is digest-md5, dat een schema van gebruikersnaam en wachtwoord gebruikt. Maak dan de directory /etc/qemu aan en gebruik dan het commando "saslpasswd2 -a qemu " om een wachtwoord toe te voegen. Herstart nu libvirtd met "service libvirtd restart" en als je nu een virtuele machine opstart en de console wilt openen, krijg je de vraag om een gebruikersnaam en wachtwoord te geven. Uiteraard is het verstandig om Qemu ook te configureren zodat het TLS-encryptie gebruikt. Dit kan met de optie vnc_tls = 1 in /etc/libvirt/qemu.conf en door het aanmaken van X509-certificaten.

Virtuele machines beschermen tegen elkaar

Fedora is altijd al een voorloper geweest op het vlak van SELinux. Nu integreert het dit beveiligingsframework voor Mandatory Access Control ook met zijn virtualisatie. Hierdoor kun je virtuele machines veel beter isoleren van de host en van elkaar, zodat eventuele beveiligingsfouten in de hypervisor er niet voor kunnen zorgen dat gastsystemen de host of elkaar kunnen aanvallen. Het beveiligingssysteem heet sVirt.

sVirt is automatisch ingeschakeld in Fedora 11, aangezien het een onderdeel is van libvirt en gebruik maakt van SELinux, dat ook standaard is ingeschakeld. Maar het werkt wel alleen als je libvirtd van in het init-script start. Typ dus "service libvirtd restart" in. Als je nu wilt testen of het wel werkt, kan dat eenvoudig. Schakel een virtuele machine in en kijk welke SELinux-context het image heeft:

# ls -lZ /var/lib/libvirt/images/Test.img

De context moet wanneer de virtuele machine draait iets als het volgende zijn:

system_u:object_r:svirt_image_t:s0:c538,c917

Elke keer dat een virtuele machine wordt opgestart, krijgt hij een willekeurige context. Verander nu eens de context, bijvoorbeeld:

# chcon -l s0:c1 /var/lib/libvirt/images/Test.img

Dit simuleert wat er gebeurt als een virtuele machine met een verschillende context het image van een andere virtuele machine wil manipuleren. Je krijgt nu onmiddellijk een "permission denied" foutmelding met de uitleg dat een proces met context system_u:object_r:svirt_image_t:s0:c538,c917 (namelijk de hypervisor qemu-kvm) naar een image met context system_u:object_r:svirt_image_t:s0:c1 wou schrijven. Ondertussen wordt de werking van de virtuele machine geblokkeerd. Dezelfde melding en blokkering krijg je als virtuele machines elkaar proberen aan te vallen. Verander je de context terug naar de juiste waarde, dan werkt alles opnieuw.

Manipulatie van virtuele machines

De ontwikkelaars hebben aan Fedora 11 ook libguestfs toegevoerd, een collectie met tools om disk images van virtuele machines te consulteren en te wijzigen. Libguestfs bevat de volgende tools:

* guestfish: een interactieve shell om de bestandssystemen van een virtuele machine aan te passen en om commando's uit te voeren in de context van het gastsysteem

* virt-inspector: dit programma toont allerlei informatie over een virtuele machine, zoals de versie van het besturingssysteem, de kernel, drivers, aangekoppelde bestandssystemen, toepassingen, ...

* verder zijn er nog bindings voor Perl, Python, Ruby, Java en OCaml, zodat beheerders in hun eigen favoriete scripttaal of programmeertaal virtuele machines kunnen beheren

De website van libguestfs toont een aantal handige voorbeelden van wat je met guestfish kunt doen. Installeer het pakket met "yum install guestfish". Een greep uit de mogelijkheden:

* kloon een virtuele machine en pas een aantal configuratiebestanden in elk van de klonen aan, zoals de hostname, nameserver, ...

* fix een virtuele machine die niet meer boot door grub.conf in het image aan te passen

* exporteer de home-directory van een virtuele machine naar een tarball

* genereer een lijst van de RPM's die in een virtuele Fedora- of RHEL-machine geïnstalleerd zijn

* genereer een virtuele machine of disk image op basis van een tarball

Conclusie Fedora 11 introduceert een groot aantal verbeteringen in zijn virtualisatieomgeving. Libguestfs, de verbeterde console en de verbeterde virt-manager maken het beheer van virtuele machines eenvoudiger. En met de ondersteuning van SASL en sVirt beveiligt Fedora zijn hypervisor. Daarmee legt het een stevige fundering voor Red Hat Enterprise Linux 6. Bron: Techworld