Fysieke schijf benaderen vanuit VirtualBox

harddrive

Wanneer je VirtualBox gebruikt, heb je in de meeste gevallen virtuele harddisks aangemaakt. Toch kan het in sommig gevallen ook wenselijk zijn om een fysieke harddisk vanuit je virtuele machine te benaderen. Bijvoorbeeld wanneer je je NAS virtueel draait of wanneer je een harddisk vanuit een andere machine hebt gehaald.

VirtualBox biedt de mogelijkheid om een virtuele harddisk toe te voegen die rechtstreeks communiceert met je fysieke harddisk. Deze methode wordt ook wel raw hard disk access genoemd.

Overzicht van aangesloten harddisks

Om te beginnen hebben we een overzicht nodig van de harddisks die aangesloten zijn. Dit doe je als volgt:

Windows

Open Disk ManagementJe ziet nu de disk nummers aan de linkerzijde. Straks ga je deze gebruiken als PhysicalDrive0, PhysicalDrive1, enz.

Linux

Voer het volgende commando uit:

fdisk -l

MacOS

Voer het volgende commando uit:

diskutil list

Open nu de command line interface van je besturingssysteem. Wanneer je Windows gebruikt, dien je eerst naar de directory te gaan waar VirtualBox geïnstalleerd is:  cd C:\Program Files\Oracle\VirtualBox

De virtuele drive aanmaken

Windows

VBoxManage internalcommands createrawvmdk -filename "C:\Users\<user_name>\VirtualBox VMs\<VM_folder_name>\<file_name>.vmdk" -rawdisk \\.\PhysicalDrive#

Vervang de # door het nummer van de harddisk die je wilt gebruiken.

Linux

VBoxManage internalcommands createrawvmdk -filename "</path/to/file>.vmdk" -rawdisk /dev/sdx

Vervang de x door de drive die je wilt gebruiken, dus bijvoorbeeld /dev/sdb of /dev/sdc.

MacOS

VBoxManage internalcommands createrawvmdk -filename "</path/to/file>.vmdk" -rawdisk /dev/disk#

Vervang de # door het nummer van de harddisk die je wilt gebruiken, dus bijvoorbeeld /dev/disk1 of /dev/disk2.

Het aangemaakte VMDK-bestand zal erg klein zijn omdat het enkel maar je fysieke harddisk verwijst. Nu kun je deze VMDK koppelen aan je virtuele machine. Om dit te doen open je de instellingen van je VM, klik op Instellingen, vervolgens op Opslag en voeg een harddisk toe. Kies nu de optie Kies een bestaande schijf en selecteer de VMDK die je zojuist hebt aangemaakt.

Inloggen zonder wachtwoord met een sleutel

network security

Om een beveiligde verbinding op te zetten naar een andere computer op het internet wordt vaak SSH (Secure Shell) gebruikt. Hetzelfde protocol wordt door SFTP (Secure File Transfer Protocol), de veilige variant van FTP.

Je logt in met een SSH- of SFTP-client door middel van een gebruikersnaam en wachtwoord. Hoewel steeds meer mensen een veilig wachtwoord gebruiken is het nog steeds mogelijk om middels een “brute force” attack wachtwoorden te achterhalen. Daarnaast gebruiken veel mensen hetzelfde wachtwoord op verschillende plekken. Op zich is dit niet vreemd, omdat het lastig is om veel wachtwoorden te onthouden, maar erg verstandig is het niet. Je hebt immers geen zicht op hoe bijvoorbeeld een webshop jouw wachtwoord bewaart. Mocht die webshop gehackt worden en daarmee jouw wachtwoord, dan is het niet ondenkbaar dat men met die wachtwoord ook toegang probeert te verkrijgen tot je e-mail, social media account en nog veel meer.

Een veiligere manier om in te loggen is met een authenticatiesleutel. Deze inlogmethode is gebaseerd op asymmetrische cryptografie en bestaat uit een private en een publieke sleutel. De private sleutel staat op je eigen computer en de publieke sleutel staat op het systeem waarop je inlogt. In plaats van een wachtwoord in te voeren, log je enkel in met je gebruikersnaam. De computer waarop je inlogt, kent je publieke sleutel en en stuurt je een challenge. Jouw computer bewerkt deze vervolgens met je private sleutel en stuurt deze terug. De computer waarop je inlogt, kan je vervolgens authenticeren.

Dit biedt twee voordelen: je hoeft geen wachtwoord meer in te voeren en de sleutel zijn véél complexer dan een wachtwoord, waardoor het nagenoeg onmogelijk is om deze te kraken.

Als je werkt op Linux of een Mac, dan is het heel eenvoudig om een private en een publieke sleutel aan te maken met het volgende commando:

ssh-keygen -t rsa

Je wordt nu gevraagd waar je de sleutel op wilt slaan. Er wordt standaard een locatie in je home directory aangegeven. Als je op enter drukt zal deze locatie gebruikt worden. Wil je liever een andere locatie gebruiken dan kun je deze nu opgeven.

Enter file in which to save the key (/home/demo/.ssh/id_rsa):

Vervolgens wordt er gevraagd om een wachtwoord waarmee je private sleutel beveiligd wordt:

Enter passphrase (empty for no passphrase):

Hoewel je een leeg wachtwoord kunt geven (dus geen wachtwoord zet op je sleutel) is het aan te raden om altijd een wachtwoord op je private sleutel te zetten. Voer nu je wachtwoord nogmaals in te verificatie.

Je private en publieke sleutel zijn nu aangemaakt. Ze zijn beide te vinden in ~/.ssh

Tot slot kopieer je je publieke sleutel naar de machine waarop je wilt inloggen:

ssh-copy-id <gebruikersnaam>@<hostname.van.je.machine>

Bij dit proces wordt je wachtwoord gevraagd. Dit is de laatste keer dat je het in hoeft te voeren voor deze machine. Wel moet je nog even je private sleutel toevoegen aan je SSH agent:

ssh-add -K ~/.ssh/id_rsa

Om de sleutel toe te voegen moet je éénmaal je wachtwoord invoeren.

That’s it! Vanaf nu kun je inloggen zonder dat je wachtwoord hoeft in te voeren. Inloggen met SSH-sleutel wordt ook gebruikt door bijvoorbeeld GitHub en Digital Ocean.



Virtualisatie met headless VirtualBox

Regelmatig heb ik een nieuwe server nodig voor een nieuw projectje of een experiment. Vroeger betekende dit dat er weer nieuwe hardware bijgeplaatst werd, maar tegenwoordig maken we gebruik van virtualisatie. Simpel gezegd is dit het draaien van een virtuele computer op je PC. Zo kun je bijvoorbeeld een Windows-computer binnen je Mac-besturingssysteem laten draaien. Of een Linux-computer binnen je Windows-besturingssysteem.

Hiervoor zijn veel verschillende pakketten beschikbaar. Voor desktopcomputers zijn bijvoorbeeld VMware, Parallels en VirtualBox beschikbaar. Ik heb gekozen voor VirtualBox omdat deze gratis te verkrijgen is voor Windows, Linux en de Mac.

Het aardige van VirtualBox is dat deze ook “headless” te draaien is. Dat betekent dat je het pakket gebruikt zonder grafische gebruikersinterface. Reuze handig voor bijvoorbeeld server waar je toch nooit een scherm op aansluit en die je alleen via het netwerk benadert, zoals een web- of mailserver. Zo heb ik een server gebouwd waarin diverse virtuele servers draaien. Omdat de virtuele server hun geheugen niet met elkaar kunnen delen, is het verstandig om de machine waarop de virtuele servers gaan draaien (host) te voorzien van voldoende RAM-geheugen.



De virtuele servers worden voorzien van virtuele harddisks. Dit zijn feitelijk bestanden die op de harddisk van de host staan. Omdat meerdere virtuele servers tegelijkertijd lezen en schrijven naar hun virtuele harddisks, is het verstandig om de host te voorzien van een snelle harddisk of, nog beter, een SSD. Voor het besturingssysteem van de host heb ik gekozen voor Debian, een Linux-distributie. Deze is gratis te downloaden.

Nadat je Debian op je host-machine hebt geïnstalleerd, kun je VirtualBox als volgt installeren:

  • Om te beginnen heb je root-toegang. Wanneer je niet ingelogd bent als root, toets dan het commando su <enter> om te switchen naar de root-gebruiker.
  • Toets nu het volgende commando:
    nano /etc/apt/sources.list.d/virtualbox.list
  • De nano tekstverwerker wordt nu geopend. Voer de volgende regel in:
    deb http://download.virtualbox.org/virtualbox/debian stretch contrib
  • Sla nu het bestand op met CTRL+O en sluit vervolgens de tekstverwerker af met CTRL+X.
  • We hebben nu de Oracle repository toegevoegd aan het systeem. Om software te downloaden uit deze repository, moeten we ook de bijbehorende GPG-sleutel downloaden en toevoegen aan ons systeem. Dit doen we met het volgende commando:
    wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | apt-key add -

    De GPG-sleutel wordt gebruikt om de integriteit van te verifiëren van pakketten die we downloaden uit de toegevoegde repository.

  • Nu gaan we de lokale index van de APT package manager bijwerken zodat de beschikbare pakketten in de zojuist toegevoegde repository worden opgenomen:
    apt-get update
  • Vervolgens gaan we via de APT package manager VirtualBox installeren:
    apt-get install virtualbox-5.1

VirtualBox is nu geïnstalleerd. Vanaf de command line kun je nu virtuele machines machines aanmaken en opstarten. Om te leren hoe dit moet, raad ik je aan om de handleiding te lezen. Heb je daar geen zin in of tijd voor, dan kun je ook een user-interface installeren, waarmee je via een webpagina eenvoudige machines kunt aanmaken, instellen en beheren:

Deze user-interface heet PhpVirtualbox. Wanneer je deze installeert, kun je VirtualBox via een webpagina beheren. Je installeert hem als volgt:

  • Om te beginnen heb je een webserver met PHP nodig. Deze installeer je als volgt:
    apt-get install apache2 php5
  • Vervolgens installeren we unzip, omdat we PhpVirtualbox downloaden als ZIP-bestand en dus moeten uitpakken:
    apt-get install unzip
  • Nu gaan we naar de web-root (de directory waarin de webserver zijn bestand leest):
    cd /var/www/html
  • Nu downloaden we PhpVirtualbox:
    wget http://sourceforge.net/projects/phpvirtualbox/files/latest/download -O phpvirtualbox.zip
  • Vervolgens pakken we het gedownloade bestand uit:
    unzip phpvirtualbox.zip
  • De map die vervolgens uit het ZIP-bestand wordt, hernoemen we zodat ie gemakkelijker te benaderen is:
    mv phpvirtualbox-5.0-3/ phpvirtualbox
  • Nu gaan we de meegeleverde configuratie kopiëren:
    cd /var/www/html/phpvirtualbox/
    cp config.php-example config.php
  • Vervolgens openen we het configuratiebestand in nano:
    nano /var/www/html/phpvirtualbox/config.php
  • Wijzig de username en password in het configuratiebestand:
    var $username = 'vbox';
    var $password = 'P@55w0rd';

    In dit voorbeeld gebruiken we P@55w0rd als wachtwoord, maar natuurlijk kun je hier zelf een wachtwoord verzinnen.

  • Sla nu het bestand op met CTRL+X, en sluiten de tekstverwerker af met CTRL+X.
  • Nu wijzigen we het wachtwoord van de vbox gebruiker:
    passwd vbox
  • Tot slot zoeken we nog even het IP-adres van onze host-machine op:
    Toets het volgende commando:

    ifconfig

    Je krijgt nu het onderstaande overzicht te zien:

    eth0      Link encap:Ethernet  HWaddr 04:01:37:2f:c8:01  
              inet addr:188.226.175.14  Bcast:188.226.175.255  Mask:255.255.255.0
              inet6 addr: fe80::601:37ff:fe2f:c801/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:34653091 errors:0 dropped:0 overruns:0 frame:0
              TX packets:37594638 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:9932275540 (9.2 GiB)  TX bytes:15550676802 (14.4 GiB)
    
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:16436  Metric:1
              RX packets:6093088 errors:0 dropped:0 overruns:0 frame:0
              TX packets:6093088 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:9777020882 (9.1 GiB)  TX bytes:9777020882 (9.1 GiB)

    In het bovenstaande voorbeeld zien we dat het IP-adres van onze netwerkkaart (eth0) is: 188.226.175.14

  • Open nu een browser op een computer in je netwerk en toets dit IP-adres in je browser, gevolgd door /phpvirtualbox, dus:
    ip.adres.vanje.hostcomputer/phpvirtualbox
  • Je wordt nu gevraagd om in te loggen. Standaard gebruikersnaam is admin en het standaard wachtwoord is ook admin.
    Het is mogelijk dat je een foutmelding krijgt over een verkeerde versie. Deze kun je wegklikken en negeren. Ik heb e.e.a. getest en geverifieerd dat het gewoon werkt.

Zodra je in bent gelogd, kun je via deze pagina nieuwe virtuele machines aanmaken en beheren. Hierover binnenkort meer…



Bouw je eigen cloud-dienst

Met een cloud-dienst kun je altijd en overal bij je bestanden, zolang je maar een internetverbinding hebt. Vaak is het mogelijk om je bestanden vanuit meerdere apparaten te benaderen, zoals je computer, tablet en smartphone. Er zijn veel commerciële cloud-oplossingen te vinden zoals DropBox, iCloud, Google Drive en Microsoft’s OneDrive. Continue reading “Bouw je eigen cloud-dienst”

Een alternatieve DNS gebruiken

DNSOnlangs werd Ziggo het slachtoffer van een DDOS-aanval op enkele van hun DNS-servers.

DNS-servers zijn computers die een internet-adres omzetten naar een IP-adres. Wanneer je een adres intikt in je webbrowser, vraagt je je computer aan de DNS-server wat het IP-adres is wat bij dit internet-adres hoort. Vervolgens zal je webbrowser verbinden met het betreffende IP-adres. Als je webbrowser geen antwoord krijgt van de DNS-server, dan zal de pagina niet geopend kunnen worden.

DNS wordt voor bijna alle internet-gerelateerde diensten gebruikt, dus ook om je e-mail op te halen of te verzenden, te Skypen, enz. Als er dus een probleem is met de DNS-server, dan heeft dat tot gevolg dat heel veel diensten niet meer werken.

Daarom gebruikt je internetprovider meestal 2 DNS-servers. Mocht er eentje niet meer werken, dan is de tweede nog beschikbaar. Echter, werkt de tweede DNS-server ook niet meer dan ontstaat er een probleem. En dat is wat er bij Ziggo gebeurde. Door de DDOS-aanval gingen beide servers onderuit.

Het probleem is eenvoudig te omzeilen: gebruik de DNS-servers van Ziggo niet meer, maar configureer je computer zo dat hij andere DNS-servers gaat gebruiken. Microsoft biedt instructies over hoe je dit moet doen in Windows. Als je je DNS-instellingen wilt wijzigen op je Apple device, kijk dan hier voor instructies.

Wil je dat al je apparaten in huis een andere DNS gaan gebruiken, dan kun je de instellingen op je router aanpassen. Veel apparaten gebruiken de router als DNS-server, die vervolgens de verzoeken doorstuurt naar de DNS-server die geconfigureerd is. Meestal zijn dit de primaire en secundaire DNS-servers van je provider, maar je kunt er natuurlijk ook zelf andere servers in configureren. Raadpleeg hiervoor de handleiding van je router.

Alternatieve DNS-server zijn bijvoorbeeld beschikbaar van Google en OpenDNS.