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.



Reacties