Zijn wachtwoorden verleden tijd

Een goed en veilig wachtwoord is belangerijk, zeker in tijden dat al onze activiteiten digitaal zijn, maar is een wachtwoord wel veilig genoeg, met toepassingen zoals 2fa, vingerafdrukken, gezichtsherkennig in bijna elk toestel.

Ideaal heb je om jezelf de authenticeren 3 componenten:

  • Iets dat je weet (bv een wachtwoord)
  • Iets dat je hebt (bv een hardware-sleutel)
  • Iets dat je bent (bv je vingerafdruk)

Nu is slechts 1 van deze componenten nodig hebben niet veilig genoeg. Je hebt best alle 3, of minstens 2 van deze componenten nodig, want een wachtwoord kan gekraakt worden, een hardware sleutel kan gestolen worden, en je vingerafdruk kan tegenwoordig ook al zeer eenvoudig gestolen worden.

Een goed wachtwoord

Alles begint met een goed wachtwoord. Een goed wachtwoord heb je als het (bijna) onmogenlijk is voor een computer om te kraken, dus niet de naam van je kat en een nummer erachter, maar wel bv een wilikeurig gegenereerd wachtwoord. Het nadeel van een wilikeurig gegenereerd wachtwoord, is dat het moeilijk te onthouden is, je kan wel een wachtwoordbeheerder gebruiken, maar deze hebben een ander nadeel: je stopt alle wachtwoorden bij elkaar, en versleuteld het met een hoofwachtwoord, dat je wel moet onthouden. Ook heb je bij online wachtwoordbeheerders het nadeel dat je jouw wachtwoorden op een server op het internet opslaat, een wachtwoordbeheerder als keepass, welke volledig offline werkt, heeft dat niet.

Een manier om een goed wachtwoord te maken is met behulp van diceware.

Diceware is a method for creating passphrases, passwords, and other cryptographic variables using ordinary dice as a hardware random number generator. For each word in the passphrase, five rolls of the dice are required. The numbers from 1 to 6 that come up in the rolls are assembled as a five-digit number, e.g. 43146. That number is then used to look up a word in a word list. In the English list 43146 corresponds to munch. By generating several words in sequence, a lengthy passphrase can be constructed. – Wikipedia (https://en.wikipedia.org/wiki/Diceware)

Met diceware maak je dus een wachtwoord aan de hand van een reeks woorden, die je wilikeurig selecteerd uit een lijst. Dit wachtwoord is zowel lang, als relatief eenvoudig te onthouden. In deze video van Computerphile word het duidelijk uitgelegd..

Hardware sleutels

Hardware sleutels zoals een Yubikey of dergelijke, zijn USB-toestellen die je in jouw computer stopt en nodig zijn om aan te melden. De sleutel word op de usb-sleutel gemaakt en opgeslagen. Het nadeel hiervan is dat ze vaak duur zijn, en dat je er best 2 of meer hebt (zodat je zeker 1 als backup hebt.)

Biometrics

Op onze telefoons (en tegenwoordig ook onze computers) kunnen we al jaren inloggen met onze vingers of zelfs ons gezicht. Vaak word dit als enige authenticatie gebruikt, wat nadelig is aangezien dit tokens zijn die niet kunnen ingetrokken worden, ze zijn uiterst uniek, maar kunnen nog altijd worden vervalst.

In bepaalde situaties zijn er ook sensors die naast de vingerafdruk, ook zoeken naar tekens van leven. Deze worden vaak gebruikt in datacenters.

Linux LAMP server tutorial

In deze tutorial leg ik je uit hoe je van jouw linux computer of server een webserver maakt met behulp van LAMP.

LAMP staat voor Linux Apache Mysql Php, dat zijn de onderdelen waar de meeste webservers gebruik van maken. Ik ga in deze tutorial gebruik maken van Ubuntu 18.04, maar deze stappen zijn voor de meeste ubuntu- en debian versies gelijk.

Apache installeren

Apache is de webserver. Deze is de meest gebruikte webserver en is dan ook zeer gemakkelijk en uitgebreid te configureren. Installeren doe je met het volgende commando:

sudo apt install apache2 -y

Als je nu naar het ip-adres van jouw server surft, dan zul je een pagina zoals hieronder te zien krijgen:

je kan deze pagina aanpassen door de inhoud in /var/www/html/ aan te passen.

PHP

Php zorgt ervoor dat je dynamishe inhoud kan gebruiken op jouw webserver. De installatie is zeer eenvoudig en doe je met onderstaand commando:

sudo apt install php libapache2-mod-php -y

Als je nu naar de /var/www/html/ map gaat en het index.html bestand verwijderd, en er een index.php bestand in de plaats zet met volgende inhoud:

<?php phpinfo(); ?>

En dan opnieuw naar het ip van jouw server gaat, dan zul je een pagina vol info over php zien, wat tevens ook wilt zeggen dat php goed is ingesteld.

MySQL

MySQL zorg ervoor dat je databases kan gebruiken. de Installatie is eenvoudig met de volgende commando’s:

sudo apt-get install mysql-server php-mysql -y
sudo service apache2 restart

Hierna moet je mysql nog instellen, en dat doe je als volgt:

sudo mysql_secure_installation

Je zult volgende vragen te zien krijgen:

  • “Enter current password for root (enter for none):” – druk hier op enter
  • “Set root password?” – typ hier y, typ dan het wachtwoord voor de root user.
  • “Remove anonymous users” – typ hier weer y
  • “Remove test database and access to it?” – Typ hier weer y
  • “Reload privilege tables now?” – je raad het al, typ y

Nu zou je mysql moeten kunnen gebruiken.

Zo, nu heb je successvol een LAMP stack geinstalleerd!

Edit 2020-04-11: Het commando om php te installeren was fout. Dit is nu aangepast.

Linux remote desktop met X2GO

Met X2GO kan je van vanaf elke computer verbinding maken met jouw computer. Het enige dat je eigenlijk nodig hebt is een SSH-verbinding die X11-forwarding ondersteund, en de X2GO client, wel kan je een daemon op de “server” computer installeren die de sessies achteraf opruimd, wat anders niet gebeurd.

Deze tutorial gaat er van uit dat je zelf verantwoordelijkheid neemt over het goed instellen van een firewall, en de beveiliging van de ssh-server.

Installatie

SSH server

Eerst moet je een SSH-server instellen. Als dit al gedaan is dan kan je deze stap overslaan. Met het volgende commando kan je de openssh-server installeren:

sudo apt install openssh-server -y 

Zodra dit gedaan is, zou je op een andere computer in een terminal (of cmd-venster op windows) een ssh verbinding kunnen starten.

 ssh gebruikersnaam@ip-van-computer

Als dat lukt kan je uitloggen met logout.

X2GO daemon

De Daemon installeer je op de HOST computer.

De installatie van de X2GO daemon hangt een beetje af van je linux-distributie. Ik ga de stappen voor Debian volgen, als je en andere distributie gebruikt kan je hier jouw instructies vinden.

Eerst moet je het X2GO repository toevoegen. Dat doe je met de volgende stappen. Deze stappen voer je uit als root:

De ondertekeningssleutel toevoegen:

apt-key adv --recv-keys --keyserver keys.gnupg.net E1F958385BFE2B6E

Open nu in een textverwerker als nano of emacs het bestand /etc/apt/sources.list.d/x2go.list en voeg daar volgende inhoud aan toe:

# X2Go Repository (release builds)
deb http://packages.x2go.org/debian buster extras main
# X2Go Repository (sources of release builds)
deb-src http://packages.x2go.org/debian buster extras main

# X2Go Repository (Saimaa ESR builds)
#deb http://packages.x2go.org/debian buster extras saimaa
# X2Go Repository (sources of Saimaa ESR builds)
#deb-src http://packages.x2go.org/debian buster extras saimaa

# X2Go Repository (nightly builds)
#deb http://packages.x2go.org/debian buster extras heuler
# X2Go Repository (sources of nightly builds)
#deb-src http://packages.x2go.org/debian buster extras heuler

Daarna kan je de installatie uitvoeren met

sudo apt-get install x2goserver x2goserver-xsession

X2GO Client

Net zoals de installatie voor de X2GO daemon, hangt de installatie hiervan af van je OS/distributie. Ik gebruik hier de stappen voor Ubuntu, de stappen voor andere distributies of voor windows vind je hier

Je kan de X2GO client installeren met het volgende:

apt-get install x2goclient

X2Go Gebruiken

Als je de X2Go client start, zal je een scherm zoals hieronder staat te zien krijgen. als je in de menubalk op “sessie” > “nieuwe sessie” klikt, kan je een nieuwe sessie aanmaken.

Ik maak gebruik van een virtuele machine, vandaar de naam, maar de instellingen zoals de host etc moet je natuurlijk aanpassen naar wat voor jou de juiste gegevens zijn (bv het IP van jouw computer)

Zodra alles goed staat, zal je een vak zien aan de rechterkan van het scherm, met de naam van de sessie, en wat informatie. Als je hier dubbel op klikt kan je verbinding maken.

Zo, nu kan je van overal verbinding maken met jouw eigen computer via een ssh-verbinding.

Corona computervirus

Het was natuurlijk niet ondenkbaar, maar het is dus wel gebeurt: Een computervirus dat zich versprijd tussen het nieuws van de corona-maatregelen. Zo heeft sophos in Italie een spam-campagne gevonden dat berichten doorstuurde, met daarin malware.

Deze scamberichten deden alsof de van de WHO kwamen, en vroegen de ontvangers voor hun e-mail wachtwoorden, wat niemand natuurlijk ooit zou doen.

Protonmail of gewoon PGP

Als je op zoek gaat naar een veilig E-mail adres heb je een aantal opties, Protonmail, een eigen mailserver, of gebruik maken van PGP. Ikzelf maak gebruik van PGP. Protonmail is echter een gratis oplossing die standaard versleutelde e-mail zou aanbieden, maar is het wel zo veilig als het lijkt?

Vorig jaar kwam ik terecht op een reddit thread waar er gesproken werd van een groote fout in protonmail. Deze thread ging er over dat iemand ineens een overvloed aan e-mail had en dat protonmail e-mail vertraagde/blokkeerde, en melde dat als het zo bleef dat het account gesloten zou worden, Nadat hij contact op nam met protonmail werd hem verteld dat de e-mail vals was, ondanks dat het ondertekend was door protonmail zelf (met een ster in de interface). Dus, In protonmail worden berichten die scam zijn van protonmail zelf toch aanzien als echt, zonder zo te zijn.

Bij PGP kan je zulke problemen niet voorhebben, want jij beheerd de sleutels en controleert zelf de echtheid van berichten daarmee, en als de signature niet klopt met de public-key die jij van de verzender hebt, dan weet je dat het bericht niet van de verzender is, maar van iemand die de verzender nabootst, iets wat je zelf niet in handen hebt bij protonmail.

Aan de slag met GPG

Ik ben een grote fan van encryptie, zo kan je mijn gpg sleutels vinden op deze pagina. Encryptie gebruiken zoals GPG lijkt moeilijk, maar dat is het niet.

GPG staat voor GNU Privacy Guard en is een implementatie van OpenPGP. GPG is een tool om eenvoudig versleuteling van tekst/bestanden te voorzien. Iedere gebruiker maakt met PGP een sleutelpaar aan, bestaande uit een private en een public key. De private key word gebruikt voor de ontsleuteling/ondertekening, waar de public key word gebruikt voor de versleuteling/controle van de ondertekening. Zoals de naam van de private en public key al vertellen, hou je de private key privé, en de public key maak je publiek beschikbaar (deze deel je bv op je website). Mensen die jou dan willen e-mail sturen kunnen dan gebruik maken van jouw public key om e-mail te versleutelen, die enkel jij met de private key kan ontsleutelen.

GPG installeren

Ik raad het gebruik van kleopatra als gui voor GPG aan. GPG en kleopatra is op Debian/Ubuntu te installeren met apt install gpg kleopatra -y en op Windows computers kan er gebruik gemaakt worden van gpg4win, GPG4Win installeert ook nog enkele extensies voor outlook.

Sleutelpaar maken

Zodra GPG en kleopa geïnstalleerd zijn kan je een nieuw sleutelpaar aanmaken.

Ik raad persoonlijk aan om een vervaldatum op een sleutel te zetten, bijvoorbeeld een jaar, of enkele jaren. Hierna maak je gewoon een nieuwe aan, die dan weer een jaar of enkele jaren geldig is. Als key gebruik je best RSA 4098 bits of een ECDSA key (ECDSA is veiliger als RSA, al is RSA 4098 ook voldoende sterk.), zoals je kan zien in de screenshot hieronder. Ik maak hier gebruik van RSA 4098 bits

Instellingen als de vervaldatum kunnen in theorie later gewijzigd worden, maar dat raad ik persoonlijk af.

Zodra jouw GPG sleutel gemaakt is zal je een wachtwoord van je public key moeten instellen, dit is een extra laag beveiliging moest jouw private key ooit gestolen worden. Zodra je klaar bent raad ik je aan om een back-up te maken van de private key (deze bevat automatisch ook de public key), en deze op een ander toestel (bv een usb-stick in een kluis, of bv een papieren backup) te bewaren.

GPG gebruiken

Om tekst te versleutelen kan je het klembord gebruiken, in Windows is er een tekstvak aanwezig die deze functionaliteit vervangt. Om bestanden te versleutelen klik je op de “versleutelen/ondertekenen” knop in de toolbar, en om te ontcijferen de “ontsleutelen/verifiëren” knop.

Zo, nu weet je hoe je veilig naar mij kan e-mailen. voel je vrij om het uit te testen door een mailtje te sturen naar mij {{site.email}} met mijn GPG sleutel.

Alles wat mis is met VPN Reclame

Het is moeilijk om naar techcontent te kijken op het internet zonder reclame tegen te komen van VPN-providers. Even voor de duidelijkheid, ik heb niets tegen het gebruik van een vpn, maar eerder tegen de manier dat er reclame voor gemaakt word.

De reclame is meestal hetzelfde, “Browse securely and anonymously” of “Stop your ISP from spying on you”. Als je gebruik maakt van een HTTPS verbinding, kan je ISP niets zien buiten de sites die je bezoekt, maar niet welke pagina’s/inhoud op die site. Eigenlijk verleg je het probleem van de mogelijke spionage van de ISP naar de VPN-provider, want je verkeer verlaat daar de vpn-tunnel, waardoor zij weer alles zien. Het “Browse anonymously” klopt nog tot een bepaald niveau, want vaak kan je kiezen in welk land je vpn-tunnel uitkomt, dus kan je dat verbergen, maar als je alsnog inlogt met een account gaat het anonieme er af, want een account heeft een naam, en een naam is niet meer zo anoniem. Als je echt anoniem wilt surfen raad ik je aan om gebruik te maken van TOR, en natuurlijk niet in te loggen met accounts.

Nu zou het je misschien verbazen dat ik zelf een VPN gebruik, wel niet een vpn van vpn-providers, maar eerder een die ik enkel gebruik om van buitenshuis toch te kunnen verbinden met mijn thuisnetwerk, om zo dan weer verbinding te maken naar mijn pc of raspberrypi’s. Ik gebruik een VPN namelijk waar het voor bestaat, als “Virtual Private Network”.

Aan de slag met Docker

Docker is een manier om een server of computer op de telen in kleine stukjes, containers genaamd. Het Idee van docker is om een programma te maken dat overal op draait, ongeacht de onderligende omgeving (doordat alles in een container verwerkt zit). Docker is ook zeer schaalbaar, omdat je bv bepaalde software over meerdere servers of nodes kan laten draaiten.

Als docker is geïnstalleerd dan kan je beginnen met het aanmaken van containers. Ik gebruik docker zelf vooral om een soort van “virtuele machine” te kunnen draaien op zwakke hosts zoals mijn raspberrypi’s. als je in een terminal het commando docker info uitvoert dan zie je hoeveel containers en images je hebt.

Images zijn de basissystemen. Je hebt er van besturingssystemen (zoals Debian of Ubuntu), maar ook van software (denk aan apache, mysql, php). Hierdoor kan je een applicatie maken die gebruik maakt van meerdere containers (voor elke service een andere container). Hierdoor is docker zeer veilig. Images kan je downloaden met docker pull <imagename>, om bv ubuntu te downloaden gebruik je docker pull ubuntu.

Om een docker container te maken gebruik je docker run <image> <parameters>. Ik maak mijn containers meestal met ubuntu, en ik geef er de mogelijkheid aan toe om een console te openen (-it), en ik open enkele poorten. Dit doe ik met -p <hostpoort>:<containerpoort>. Deze kan je herhalen om meerdere poorten open te zetten.

Docker heeft ook volumes. Met volumes kan je bv met meerdere containers aan dezelfde data. Hiermee kan je ook aan de data van buitenaf de container. Dit doe je met -v <hostpad>:<containerpad>.

Met deze informatie kan je hoogstwaarschijnlijk al aan de slag met docker. Docker is zeer interessant en het is dus zeer handig om er meer over te weten.

Kleine docker cluster

Ik heb onlangs een kleine docker cluster gemaakt van mijn 2 raspberrypi’s. Ik gebruik docker hierop voor het hosten van enkele services (welke gerepliceerd zijn over de 2 pi’s) en enkele ubuntu-containers die gebruikt worden als vm. Zodra ik docker meer heb ontdekt zal ik hier nog wat over posten.