Het beveiligen van SSH omvat een breed scala aan mogelijke technieken, maar niet alle zijn even praktisch voor elke omgeving. De aanbevelingen in dit artikel zijn algemeen erkende, impactvolle methoden die een evenwicht vinden tussen eenvoudige implementatie en robuuste bescherming. Ze zijn afgeleid van standaarden die zijn vastgesteld door organisaties als NIST, CERT en het OpenSSH-project en weerspiegelen kernprincipes die SSL.com ook toepast bij het beveiligen van digitale certificaten: sleutels beschermen, sterke encryptie gebruiken en bevoorrechte toegang beperken.
Zodra u deze fundamentele best practices hebt ingesteld, kunt u indien nodig geavanceerdere tactieken verkennen, zoals certificaatgebaseerde SSH, poortknocking of SSH via VPN.
1. Gebruik op sleutels gebaseerde authenticatie in plaats van wachtwoorden
Wat het is:
U vervangt wachtwoord-logins met een cryptografisch openbaar/privé sleutelpaar. De openbare sleutel gaat naar uw server, terwijl de privésleutel op uw lokale machine blijft.
Waarom het veiliger is:
- Wachtwoorden zijn vatbaar voor brute-force-aanvallen
- Een aanvaller moet fysiek uw privésleutel bemachtigen om in te breken, wat veel moeilijker is dan het raden van een wachtwoord
Hoe te implementeren:
Genereer een sleutelpaar
Open op Linux of macOS een terminal en voer het volgende uit:
ssh-keygen -t ed25519
Voor extra beveiliging (als ed25519 niet beschikbaar is in uw omgeving) kunt u het volgende gebruiken:
ssh-keygen -t rsa -b 4096
Kopieer de openbare sleutel naar uw server
U kunt de opdracht ssh-copy-id (op Linux/macOS) gebruiken om uw openbare sleutel eenvoudig over te dragen:
ssh-copy-id gebruiker@server_adres
Als ssh-copy-id niet beschikbaar is, voegt u de inhoud van uw bestand id_ed25519.pub (of id_rsa.pub) handmatig toe aan het bestand ~/.ssh/authorized_keys van de server.
Wachtwoordverificatie uitschakelen
In /etc/ssh/sshd_config, stel in:
Wachtwoord Verificatie nr
Start de SSH-service opnieuw:
sudo systemctl restart ssh
Net als bij het beheren van digitale certificaten zorgt SSH-sleutelgebaseerde authenticatie ervoor dat alleen iemand met de juiste privésleutel een verbinding tot stand kan brengen.
2. Root-aanmelding uitschakelen
Wat het is:
Voorkom dat de rootgebruiker rechtstreeks via SSH inlogt.
Waarom het veiliger is:
- Het root-account heeft onbeperkte rechten en is een aantrekkelijk doelwit voor aanvallers
- Door directe root-toegang uit te schakelen, worden aanvallers gedwongen niet alleen een sleutel of wachtwoord te raden, maar ook een geldige gebruikersnaam
Hoe te implementeren:
Zoek of voeg het volgende toe in /etc/ssh/sshd_config:
PermitRootLogin nr
SSH opnieuw opstarten:
sudo systemctl restart ssh
Met deze stap verkleint u effectief uw aanvalsoppervlak door het machtigste account buiten bereik te houden.
3. Zorg voor sterke encryptie en MAC-algoritmen
Wat het is:
Met SSH kunt u opgeven welke cijfers en berichtverificatiecodes (MAC's) u wilt gebruiken voor het versleutelen van gegevens en het verifiëren van de integriteit van gegevens.
Waarom het veiliger is:
- Oudere of zwakke algoritmen (bijv. DES, RC4) kunnen kwetsbaar zijn voor cryptografische aanvallen
- Door gebruik te maken van moderne codes (zoals AES-256) en sterke MAC's (zoals HMAC-SHA2) blijven uw sessiegegevens vertrouwelijk en fraudebestendig
Hoe te implementeren:
Voeg in /etc/ssh/sshd_config uw cipher/MAC-lijst toe of werk deze bij:
Cijfers aes256-ctr,aes192-ctr,aes128-ctr
MAC's hmac-sha2-256,hmac-sha2-512
SSH opnieuw opstarten:
sudo systemctl restart ssh
Het up-to-date houden van de cryptografie voor SSH is net zo belangrijk als het garanderen dat er veilige protocollen en codes worden gebruikt TLS.
4. Houd SSH (en uw systeem) up-to-date
Wat het is:
Zorg ervoor dat OpenSSH, net als de rest van uw besturingssysteem, regelmatig beveiligingspatches krijgt.
Waarom het veiliger is:
- Verouderde software bevat vaak bekende kwetsbaarheden
- Aanvallers richten zich vaak op oudere versies met ongepatchte exploits
Hoe te implementeren:
Op Debian- of Ubuntu-gebaseerde systemen:
sudo apt-get-update && sudo apt-get-upgrade
Op CentOS-, Fedora- of RHEL-gebaseerde systemen:
sudo yum update
Controleer ook of er firmware-updates beschikbaar zijn als u SSH op netwerkapparaten of andere hardware gebruikt.
5. Implementeer twee-factor- of multi-factor-authenticatie (2FA/MFA)
Wat het is:
Voegt een extra beveiligingslaag toe door naast een wachtwoord of sleutel nog iets anders te vereisen (bijvoorbeeld een eenmalige code op uw telefoon).
Waarom het veiliger is:
- Zelfs als aanvallers uw SSH-sleutel verkrijgen, hebben ze nog steeds de tweede factor nodig om in te loggen
- Helpt bij het beschermen tegen diefstal van inloggegevens
Hoe te implementeren:
Een MFA-tool installeren en configureren
Bijvoorbeeld Google Authenticator kan worden geïnstalleerd op Linux-servers en worden ingesteld als een PAM-module (Pluggable Authentication Modules). Volg de installatie-instructies die specifiek zijn voor uw distributie.
Bewerk /etc/pam.d/sshd en /etc/ssh/sshd_config
- Schakel Google Authenticator of een andere MFA-module in
- Stel ChallengeResponseAuthentication in op yes en AuthenticationMethods publickey,keyboard-interactive (of welke combinatie dan ook die het beste bij uw omgeving past)
SSH opnieuw opstarten:
sudo systemctl restart ssh
6. Logging en monitoring inschakelen
Wat het is:
Registreer SSH-aanmeldingsgebeurtenissen, volg verdachte activiteiten en ontvang waarschuwingen wanneer er iets mis is.
Waarom het veiliger is:
- Pogingen tot inbraak zijn vaak zichtbaar in logs als herhaaldelijke mislukte inlogpogingen of ongeautoriseerde acties
- Vroegtijdige detectie betekent dat u snel kunt reageren: IP's blokkeren of configuraties wijzigen voordat er schade wordt aangericht
Hoe te implementeren:
Verhoog de log-verbosity
In /etc/ssh/sshd_config, stel in:
LogLevel UITGEBOSE
Geaggregeerde logs
- Tools zoals syslog, rsyslogof syslog-ng Help bij het verzamelen en centraliseren van logs
- A SIEM-oplossing (Security Information and Event Management) kan geavanceerde analyses en waarschuwingen bieden
Gebruik hulpmiddelen voor inbraakpreventie
fail2ban scant logbestanden en blokkeert IP-adressen die schadelijke signalen afgeven, zoals te vaak verkeerde wachtwoorden.
7. Implementeer toegangscontroles en -beperkingen
Wat het is:
Beperk wie verbinding kan maken met SSH en vanaf waar, en voorkom ongeautoriseerde of overmatige inkomende verzoeken.
Manieren om dit te doen:
Firewallbeperkingen
Sta alleen SSH toe vanaf bekende of vertrouwde IP-adressen. Bijvoorbeeld op Linux met ufw:
sudo ufw toestaan van 192.168.1.0/24 naar elke poort 22
Poortconfiguratie
SSH uitvoeren op een niet-standaardpoort (bijv. 2222) kan geautomatiseerde scanpogingen verminderen. Het is geen vervanging voor echte beveiligingsmaatregelen, maar het kan ruis verminderen.
Gebruikers-/groepsbeperkingen
Geef in /etc/ssh/sshd_config het volgende op:
Gebruikers toestaan alice bob
or
AllowGroups sshadmins
8. Gebruik SSH-sleutelwachtwoorden en veilige sleutelopslag
Wat het is:
Versleutel uw privésleutel met een wachtwoordzin. Zo is de sleutel zelf niet direct bruikbaar, zelfs niet als uw computer wordt gehackt.
Waarom het veiliger is:
- Een gestolen sleutelbestand zonder wachtwoordzin kan onmiddellijke toegang verlenen
- Wachtwoordzinnen fungeren als een extra laag encryptie op uw lokale sleutel
Hoe te implementeren:
Stel een wachtwoordzin in tijdens het genereren van de sleutel
ssh-keygen -t ed25519
(U wordt gevraagd een wachtwoordzin in te voeren.)
Bescherm uw sleutelbestanden
Beperk de machtigingen voor uw .ssh-map en sleutelbestanden:
chmod 700 ~ / .ssh
chmod 600 ~/.ssh/id_ed25519
Overweeg Hardware Security Modules (HSM's) of Tokens
Voor grotere organisaties kan het gebruik van speciale hardware voor sleutelopslag de risico's van softwarematige diefstal of malware beperken.
Conclusie
SSH-beveiliging komt neer op lagen van bescherming. Door het implementeren van sleutelgebaseerde authenticatie, het uitschakelen van directe root-toegang, het gebruiken van sterke encryptie, up-to-date blijven, multi-factor authenticatie vereisen, logs monitoren, toegang beperken en uw sleutels beveiligen met wachtwoordzinnen, dekt u de meest voorkomende (en meest serieuze) risico's.
Deze maatregelen sluiten aan bij dezelfde bredere beveiligingsfilosofie die SSL.com voor digitale certificaten voorstaat: bescherm cryptografische sleutels, gebruik robuuste encryptie, beperk bevoorrechte toegang en houd uw systemen nauwlettend in de gaten. Zodra u deze fundamentele best practices hebt vastgesteld, kunt u geavanceerdere opties verkennen, zoals SSH-certificeringsinstanties, port knocking of het uitvoeren van SSH via een VPN om uw beveiligingshouding verder aan te passen.