Een virtueel netwerk met VirtualBox

© PXimport

Een virtueel netwerk met VirtualBox

Geplaatst: 19 november 2021 - 06:44

Aangepast: 25 november 2022 - 11:16

Toon van Daele

Misschien wil je eens kennismaken met een ander besturingssysteem, zoals een bepaalde Linux-distributie of een Windows-previewbuild. Of je wilt graag een testlab opzetten voor je experimenten met penetratietests of ethisch hacken. In beide gevallen biedt virtualisatie een uitweg. We tonen hoe je met het gratis VirtualBox niet alleen virtuele machines, maar ook heuse virtuele netwerken opzet, voor diverse scenario’s.

Code downloaden

Een eenduidige definitie van virtualisatie geven is lastig, aangezien er diverse virtualisatietypen bestaan. De twee bekendste zijn applicatievirtualisatie (waarbij toepassingen worden geïsoleerd van het onderliggende besturingssysteem en van andere programma’s door ze in een zogenoemde sandbox te stoppen) en systeemvirtualisatie. Bij dit tweede type zorgt een virtuele-machinemanager (VMM), oftewel hypervisor, ervoor dat er meerdere besturingssystemen gelijktijdig op één fysieke machine kunnen draaien door voor elk besturingssysteem de nodige hardware te emuleren. Dat kan via een zogenoemde native of bare-metal-hypervisor, die rechtstreeks op de hardware draait zonder onderliggend besturingssysteem, zoals Microsoft Hyper-V en VMware vSphere/ESXi. Of je zet een hosted hypervisor in, die bovenop een conventioneel besturingssysteem draait, zoals VMware Workstation, Parallels Desktop en Oracle VM VirtualBox. Hypervisors van het eerste type zijn doorgaans stabieler en performanter, maar hypervisors van het tweede type laten zich makkelijker installeren en kunnen met meer diverse hardware overweg.

In deze masterclass focussen we ons op dit tweede type, op het gratis VirtualBox om specifiek te zijn. We leggen eerst kort uit hoe je een virtuele machine (VM) installeert, maar de nadruk ligt verder vooral op het opzetten van virtuele netwerken.

01 Virtuele schijf

Je vindt VirtualBox op www.virtualbox.org, voor diverse host-besturingssystemen. Wij gaan aan de slag met VirtualBox 6.1 voor Windows. Installeer het programma met de voorgestelde componenten en start de beheermodule op. Klik op Nieuw om een VM te maken en druk op de knop Expertmodus. Geef je VM een Naam en Machinemap (oftewel opslaglocatie) en selecteer Type en Versie voor het virtuele gast-besturingssysteem. Zie je in het uitklapmenu alleen 32bit-versies verschijnen terwijl je echt een x64-cpu en een 64bit-Windows hebt, lees dan eerst het kader ‘Check-up’. Stel een geschikte geheugengrootte in (besef wel dat de ingestelde hoeveelheid geheugen niet beschikbaar is voor je host-besturingssysteem zolang je VM draait), laat de optie Nieuwe virtuele harde schijf aanmaken geselecteerd en kies Aanmaken. Selecteer een geschikte bestandsgrootte voor de virtuele schijf. Je laat dit het best staan op Dynamisch gealloceerd, zodat de schijf tot het ingestelde plafond kan meegroeien naargelang de behoefte. Doorgaans kies je het standaardtype VDI voor je virtuele schijf. Bevestig met Aanmaken, waarna de schijf in het beheervenster opduikt.

01 De eerste stap: het aanmaken van een geschikte virtuele schijf.

© PXimport

Check-up

Een bare metal hypervisor haalt een hosted hypervisor doorgaans onderuit.

© PXimport

02 Virtueel besturingssysteem

Geen VM zonder virtueel besturingssysteem natuurlijk en dat regel je als volgt. Selecteer de nieuw aangemaakte schijf en klik op Starten. Via het mapicoon en de knop Toevoegen verwijs je naar een (gedownload) schijfkopiebestand, bijvoorbeeld van een Linux-distributie (meestal een iso-bestand). In principe kun je ook naar een usb-stick met een live-besturingssysteem verwijzen (zie het kader ‘Usb-stick’). Selecteer het toegevoegde schijfkopiebestand, klik op Kiezen en op Start, waarna je het virtuele besturingssysteem op de gebruikelijke manier installeert.

Goed om weten, is dat VirtualBox voor veel gastsystemen extra stuurprogramma’s en systeemtoepassingen biedt. Die installeert je als volgt: start je VM op, open het menu Apparaten en kies Invoegen Guest Additions CD-image. Dit cd-image verschijnt dan als een virtueel station in je gast-besturingssysteem. Open dit en voer VBoxWindowsAdditions uit. Je kunt nu bijvoorbeeld vanuit het menu Apparaten / USB-apparaten een usb-stick aan het besturingssysteem toewijzen, en het klembord en mappen delen tussen host en gast.

02 Vanuit het instellingenvenster kun je nog heel wat optimaliseren voor je virtuele machine.

© PXimport

Usb-stick

Met enige moeite start je ook een live usb-stick in VirtualBox op (wij draaien hier een multiboot-stick op basis van Ventoy).

© PXimport

Huidig besturingssysteem

Je kunt ook een actuele en draaiende Windows-installatie virtualiseren.

© PXimport

03 NAT

Als je in de beheermodule van VirtualBox met rechts klikt op een (bij voorkeur afgesloten) VM en Instellingen / Netwerk selecteert, dan merk je dat VirtualBox één virtuele netwerkadapter heeft ingeschakeld en die heeft gekoppeld aan NAT (Network Address Translation). Klik je op Geavanceerd, dan zie je dat VirtualBox als adaptertype wellicht Intel PRO/1000 MT Desktop heeft ingesteld, omdat VirtualBox weet dat het betreffende gast-besturingssysteem de benodigde stuurprogramma’s voor die netwerkadapter heeft.

NAT is het standaardtype, omdat dit een veilige en makkelijke netwerkconfiguratie is (waarbij zo goed als niets hoeft te worden ingesteld). De NAT-modus zorg er namelijk voor dat VirtualBox als een soort router fungeert, tussen elke VM en het host-besturingssysteem. Op deze manier kunnen de VM’s elkaar niet benaderen en kunnen externe toestellen evenmin de VM’s bereiken.

In omgekeerde richting kan je VM doorgaans wel het externe netwerk en internet op. Zo kan je VM de zogenoemde loopback-interface van je host benaderen (via het standaardadres 10.0.2.2), evenals eventuele netwerkservices die op de host actief zijn. Dat kan nuttig zijn als bijvoorbeeld een applicatie op je VM een databaseserver nodig heeft die op je host draait.

Een VM krijgt zijn ip-adres van een DHCP-service die actief is in VirtualBox. Bij de eerste netwerkadapter is dat standaard netwerk 10.0.2.0, schakel je een extra virtuele netwerkadapter in (open het tabblad Adapter 2, plaats een vinkje bij Netwerkadapter inschakelen en kies Gekoppeld aan: NAT), dan wordt die aan netwerk 10.0.3.0 gekoppeld enzovoort.

NAT is het standaard netwerktype, omdat het praktisch en veilig afgeschermd is.

© PXimport

04 Poortdoorverwijzing

Stel, je hebt een of andere netwerkservice op je VM draaien en die wil je nu toch ook bereikbaar maken voor de host of andere machines in je (fysieke) netwerk. Dat is niet zomaar mogelijk in NAT-modus, tenzij je portforwarding inschakelt. Open hiervoor Instellingen / Netwerk van je VM, klik op Geavanceerd / Poortdoorverwijzing en druk op het groene plusknopje. Geef je portforwarding-regel een naam, kies het protocol (TCP of UDP) en vul de velden Hostpoort en Gastpoort in. We nemen de simpele multi-platform MiniWeb HTTP Server als voorbeeld, omdat die zich in een paar seconden laat opzetten (handig voor kleinschalige experimenten). Deze draait standaard op poort 8000, maar wil je die bijvoorbeeld bereiken wanneer je op je host http://localhost:8088 invoert, dan vul je de velden van de portforwarding-regel als volgt in: MiniWeb HTTP Server, TCP, 8088, 8000.

Je hoeft het veld Host IP alleen in te vullen als je het verkeer van een specifieke netwerkinterface op je host wilt doorsturen. Het veld Gast-IP is nodig als je de VM een statisch ip-adres hebt meegegeven.

Je kunt dergelijke netwerkconfiguraties trouwens ook vanaf de Opdrachtprompt regelen via de meegeleverde tool VBoxManage.exe (zie ook het kader ‘Usb-stick’), met de volgende syntax:

vboxmanage modifyvm "<vm-naam>" --natpf<x> "MiniWeb HTTP Server,<protocol>,<host-ip>,<host-poort>,<gast-ip>,<gast-poort>"

Hierbij verwijst <x> naar het nummer van de virtuele netwerkadapter.

Mocht je ooit een netwerkscenario willen opzetten met een vijfde virtuele netwerkadapter (acht is overigens het maximum), dan is VBoxManage de enige manier:

vboxmanage modifyvm "<vm-naam>" –nic5 <netwerktype>

In plaats van <netwerktype> kun je onder meer kiezen uit de opties nat, intnet, bridged, hostonly en natnetwork (in de komende paragrafen worden deze opties individueel besproken).

Je kunt ook vanaf de Opdrachtprompt (en dus vanuit een batchbestand) poortdoorverwijzingsregels creëren.

© PXimport

05 Intern netwerk

Een NAT-constructie is al behoorlijk veilig, maar wil je dat een VM alleen andere VM’s, maar geen externe systemen of internet mag benaderen, dan kies je het best voor Gekoppeld aan: Intern netwerk. Zo’n opzet vertoont flink wat overeenkomst met een Bridged adapter (zie paragraaf 6), maar bij deze laatste loopt alle verkeer over de fysieke netwerkinterface van je host. Dat maakt dat een netwerksniffer als Wireshark via deze weg ook het verkeer tussen je VM’s kan monitoren – wat in bepaalde gevallen juist je bedoeling kan zijn.

Voor ons scenario selecteer je Intern netwerk en kies je de standaard beschikbare optie intnet. Of je tikt hier gewoon zelf de naam voor het internet netwerk in. Wil je andere VM’s van ditzelfde netwerk gebruik laten maken, dan moet je uiteraard ook daar diezelfde naam selecteren.

In het kader ‘Whonix’ illustreren we een slim gebruik van zo’n intern netwerk.

Intern netwerk: een netwerkje voor VM’s onderling.

© PXimport

Whonix

06 Bridged adapter

In paragraaf 5 hebben we al vermeld dat bij het type Bridged adapter alle verkeer via een fysieke netwerkinterface van je host loopt. Dat gebeurt via een zogenoemde netwerk-filter-driver op de host die data van de fysieke netwerkadapter filtert. Hierdoor kan VirtualBox pakketten van die adapter opvangen en ook data injecteren, zodat in zekere zin een softwarematige netwerkinterface wordt gecreëerd. Voor de host lijkt het alsof een VM fysiek aan de netwerkadapter is gekoppeld. De VM kan in principe in twee richtingen met de host communiceren en ook verbinding leggen naar het externe netwerk toe. Zo’n opzet kan bijvoorbeeld handig zijn als je netwerkservices op je VM draait die je bewust makkelijk bereikbaar wilt maken, zonder dat je met poortdoorverwijzing aan de slag moet.

De configuratie is vrij eenvoudig: selecteer Bridged adapter en kies daarna de gewenste fysieke netwerkadapter op je host.

Bridged adapter: bespaart je gepriegel met poortdoorverwijzingen.

© PXimport

07 Host-only adapter

Wil je je host toegang geven tot je virtuele machines en moeten die ook onderling met elkaar kunnen praten, dan biedt VirtualBox daarvoor de functie Host-only adapter. Communiceren met externe systemen is dan niet zonder meer mogelijk, aangezien je VM’s in dit geval niet zijn verbonden met een fysieke netwerkinterface. Wel wordt op de host een zogenoemde loopback-interface gecreëerd.

Deze setup zie je wel vaker opduiken bij vooraf geconfigureerde OVA-appliances waarbij de verschillende VM’s met elkaar moeten kunnen communiceren, zoals een webserver en een database. Wil je de webserver toch ook bereikbaar maken via internet, dan zou je hiervoor eventueel nog een bridged adapter kunnen instellen, zodat je database veilig afgeschermd blijft.

De configuratie vergt net iets meer werk. Eerst moet je namelijk een geschikte host-only adapter instellen. Scrol in je VM-lijst helemaal naar boven, kies Tools, klik op het menuknopje (met de drie streepjes) en selecteer Netwerk. Klik eventueel op Aanmaken en bevestig met Ja. Selecteer de adapter en vul het gewenste ip-adres en netwerkmasker in. Open het tabblad DHCP-server en plaats eventueel een vinkje bij Server inschakelen, waarna je de velden Serveradres, Servermasker, Laagste adres en Hoogste adres instelt. Bevestig met Toepassen. Tot slot open je Instellingen / Netwerk van je VM, kies je Gekoppeld aan: Host-only adapter en selecteer je de juiste adapter in het uitklapmenu.

Stel de adapter in en activeer eventueel ook een DHCP-server.

© PXimport

08 NAT-netwerk

Wil je dat je virtuele machines onderling kunnen communiceren en ook het externe netwerk kunnen bereiken, dan koppel je best een NAT-service aan een intern netwerk, waar je vervolgens alle gewenste VM’s aan koppelt.

Denk bijvoorbeeld aan een scenario met een pentesting-appliance (penetration testing) als Kali Linux. We kunnen ons voorstellen dat je deze in zo’n NAT-netwerk wilt onderbrengen, samen met de VM’s die je als doelwit voor deze pentester wilt gebruiken.

Je maakt zo’n NAT-netwerk als volgt. Open het menu Bestand en kies Voorkeuren / Netwerk. Druk op het groene plusknopje en vervolgens op het oranje knopje Bewerk geselecteerd NAT-netwerk. Vul de velden Netwerknaam en Netwerk-CIDR in (bijvoorbeeld 192.168.1.0/24 voor het veld Netwerk-CIDR). Wellicht wil je het vinkje bij Ondersteunt DHCP laten staan. Onderaan in het venster staat de knop Poortdoorverwijzing. Zorg dat er een vinkje staat bij Inschakelen netwerk en bevestig met OK.

Vervolgens open je de netwerkinstellingen van je VM, waar je Gekoppeld aan: NAT-netwerk selecteert en in het uitklapmenu het zojuist aangemaakte NAT-netwerk aanduidt. Herhaal dit voor de virtuele machines die je aan ditzelfde netwerk wilt koppelen.

Samen gezellig in hetzelfde virtuele NAT-netwerk.

© PXimport

Deel dit artikel
Voeg toe aan favorieten