SSH beveiligen met een private key (SSH key authenticatie)

Met SSH (Secure Shell) kun je veilig op afstand verbinding maken met een Linux- of Unix-server. Een standaard SSH-login met alleen een wachtwoord is echter gevoeliger voor aanvallen zoals brute-force pogingen. Door SSH te beveiligen met een private key en de juiste configuratie-instellingen toe te passen, verhoog je de veiligheid van je server aanzienlijk.

In deze handleiding lees je hoe je SSH key authenticatie instelt, wachtwoordtoegang uitschakelt en je SSH-server beter beveiligt.

SSH public en private key genereren

Voor veilige SSH-authenticatie maak je gebruik van een combinatie van een private key en een public key.

Op dit moment is Ed25519 een van de aanbevolen algoritmes vanwege de sterke beveiliging en efficiënte werking.

Maak een nieuwe SSH-key aan met:

ssh-keygen -o -a 100 -t ed25519 -f ~/.ssh/id_ed25519 -C "naam@domeinnaam.nl"

Tijdens het aanmaken wordt gevraagd om een wachtwoordzin (passphrase). Het is verstandig om deze in te stellen voor extra beveiliging.

Na het uitvoeren van het commando worden twee bestanden aangemaakt:

~/.ssh/id_ed25519        → private key (geheim houden)
~/.ssh/id_ed25519.pub    → public key (mag gedeeld worden)

De private key mag nooit naar anderen worden gestuurd. Alleen de public key wordt op de server geplaatst.

SSH key kopiëren naar een server

Kopieer de public key naar de gewenste server met:

ssh-copy-id username@servername

Hierna kun je inloggen zonder wachtwoord:

ssh username@servername

De server gebruikt jouw private key om je identiteit te controleren.

SSH-server configureren voor betere beveiliging

Open het SSH-configuratiebestand:

vi /etc/ssh/sshd_config

Pas de instellingen aan of voeg onderstaande configuratie toe:

# SSH poort
Port 22

# SSH logging
SyslogFacility AUTHPRIV
LogLevel VERBOSE

# Authenticatie
PubkeyAuthentication yes

# Verbied wachtwoord login
PasswordAuthentication no
PermitEmptyPasswords no

# Root login beperken
PermitRootLogin forced-commands-only

# Maximum aantal loginpogingen
MaxAuthTries 6

# Negeer oude rhosts authenticatie
IgnoreRhosts yes

# Verbinding actief houden
ClientAliveInterval 300
ClientAliveCountMax 0

# Login beperken tot specifieke gebruikers
AllowUsers user1
DenyUsers user2

# Login banner
Banner /etc/banner

Met deze instellingen wordt SSH-toegang uitsluitend toegestaan via SSH keys en worden ongewenste loginpogingen beperkt.

SSH-service opnieuw starten

Na het aanpassen van de configuratie moet de SSH-service opnieuw worden gestart:

service sshd restart

Controleer daarna of je nog kunt verbinden voordat je de huidige SSH-sessie sluit. Zo voorkom je dat je jezelf buitensluit.

SSH beveiliging controleren

Je kunt online controleren of jouw SSH-configuratie voldoet aan actuele beveiligingsrichtlijnen met bijvoorbeeld:

Deze tools controleren onder andere gebruikte algoritmes, encryptie-instellingen en kwetsbare configuraties.

Conclusie

Door SSH te beveiligen met een private key, wachtwoordlogin uit te schakelen en de SSH-configuratie te hardenen, verklein je de kans op ongeautoriseerde toegang tot je Linux-server aanzienlijk.

Add a Comment

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *