SSH staat voor Secure Shell of Secure Socket Shell. Het is een cryptografisch netwerkprotocol waarmee gebruikers en systeembeheerders toegang krijgen tot computers via een onbeveiligd netwerk, zoals internet. Het wordt gebruikt om in te loggen op een externe server, commando's uit te voeren en gegevens van de ene machine naar de andere over te dragen.
Waar gebruiken we SSH?
SSH wordt gebruikt ter vervanging van onbeschermde protocollen voor inloggen op afstand, zoals Telnet, rlogin, rsh en andere, evenals onveilige protocollen voor bestandsoverdracht, zoals FTP. Netwerkbeheerders maken uitgebreid gebruik van de beveiligingsmogelijkheden. We kunnen het SSH-protocol in verschillende scenario's gebruiken, zoals:
- Veilige toegang voor gebruikers en geautomatiseerde processen mogelijk maken
- Interactieve en geautomatiseerde bestandsoverdrachten uitvoeren
- Het geven van opdrachten op afstand
- Het beheren van netwerkinfrastructuur en andere bedrijfskritische systeemcomponenten
Hoe werkt SSH?
Het SSH-protocol werkt volgens een client-serverarchitectuur, waarbij een SSH-client een beveiligde verbinding met een SSH-server tot stand brengt. De SSH-client stuurt het proces van verbindingsopbouw aan en gebruikt een Public Key Infrastructure (PKI) om de authenticiteit van de SSH-server te verifiëren. Eenmaal geconfigureerd, gebruikt het SSH-protocol sterke symmetrische encryptie- en hashingalgoritmen om de vertrouwelijkheid en integriteit van de uitgewisselde gegevens te waarborgen.
Wat zijn de verschillende soorten authenticatie?
Sleutelgebaseerde authenticatie
De meest gebruikte vorm van SSH-implementatie is authenticatie met een openbare sleutel. Deze vorm van authenticatie geniet de voorkeur boven eenvoudige wachtwoorden vanwege de verbeterde beveiliging. Sleutelgebaseerde authenticatie biedt ongeëvenaarde cryptografische sterkte, die zelfs groter is dan die van zeer lange wachtwoorden. SSH verhoogt de beveiliging aanzienlijk dankzij authenticatie met een openbare sleutel, waardoor gebruikers geen complexe wachtwoorden meer hoeven te onthouden.
Naast de beveiliging verbetert authenticatie met publieke sleutels ook de gebruiksvriendelijkheid. Hierdoor kan de gebruiker single sign-on implementeren voor alle SSH-servers waarmee hij verbinding maakt. Sleutelgebaseerde authenticatie maakt ook geautomatiseerde aanmeldingen zonder wachtwoord mogelijk, een belangrijke functie van de talloze beveiligde geautomatiseerde processen die wereldwijd in bedrijfsnetwerken draaien.
Bij dit type authenticatie wordt een sleutelpaar gegenereerd (openbare en persoonlijke sleutel).
- De openbare sleutel wordt gekopieerd naar de SSH-server en standaard toegevoegd aan het bestand ~/.ssh/authorized_keys. Iedereen die een kopie van de openbare sleutel heeft, kan gegevens versleutelen die alleen leesbaar zijn voor degenen die over de bijbehorende privésleutel beschikken.
- De privésleutel blijft (alleen) bij de gebruiker. Alleen een gebruiker wiens privésleutel overeenkomt met de publieke sleutel van de server kan zich succesvol authenticeren. Privésleutels moeten zorgvuldig worden bewaard en behandeld, en kopieën van privésleutels mogen niet worden verspreid.
Nadelen van sleutelgebaseerde authenticatie
- Slecht SSH-sleutelbeheer kan een groot risico vormen voor organisaties.
- Misbruik van SSH-sleutels kan leiden tot toegang tot vertrouwelijke of bevoorrechte informatie.
- Omdat sleutels permanent vertrouwd worden, is de kans op een aanval groter.
Op certificaten gebaseerde authenticatie
Bij dit type authenticatie is geen sleutelgoedkeuring en -distributie nodig. In plaats van publieke sleutels te verspreiden over statische bestanden, kunnen we certificaten gebruiken om publieke sleutels aan namen te koppelen. Een certificaat bevat gegevens zoals een publieke sleutel, een naam en aanvullende gegevens zoals vervaldatums en machtigingen. Deze gegevens worden ondertekend door een certificeringsinstantie (CA).
Om certificaatauthenticatie in te schakelen, configureert u clients en hosts om certificaten te verifiëren met behulp van de openbare sleutel van uw CA (d.w.z. vertrouwde certificaten die zijn uitgegeven door uw CA).
Bewerk op elke host /etc/ssh/sshd_config en geef de openbare CA-sleutel voor het verifiëren van gebruikerscertificaten, de persoonlijke sleutel van de host en het certificaat van de host op.
Voeg op elke client een regel toe aan ~/.ssh/known_hosts waarin u de openbare CA-sleutel voor het verifiëren van hostcertificaten opgeeft.
Voordelen van certificaatgebaseerde authenticatie
- Het is eenvoudig te gebruiken als trust on first use (TOFU); er worden geen waarschuwingen weergegeven omdat certificaatauthenticatie certificaten gebruikt om openbare sleutelbindingen te communiceren, waardoor cliënten zich op elk gewenst moment kunnen authenticeren.
- Het stroomlijnt de bedrijfsvoering door het goedkeurings- en distributieproces voor sleutels te elimineren. Het verlaagt ook de operationele kosten voor het monitoren en onderhouden van de huidige infrastructuur voor het toevoegen, verwijderen, synchroniseren en controleren van statische openbare sleutelbestanden.
- Het bevordert een goede beveiligingshygiëne in vergelijking met sleutelgebaseerde authenticatie. De kans dat een gecompromitteerde privésleutel lange tijd onopgemerkt blijft, is groot; certificaten daarentegen verlopen automatisch, wat betekent dat ze in geval van diefstal, misbruik, enz. automatisch verlopen, waardoor ze minder veilig zijn.
Conclusie
Certificaatgebaseerde authenticatie kent veel voordelen, zoals verbeterde bruikbaarheid, verbeterde beveiliging, gestroomlijnde processen, etc. Als het wordt geïmplementeerd, helpt het organisaties de complexiteit van sleutelgoedkeuring en -distributie, risico's met betrekking tot onjuist sleutelbeheer en nog veel meer te verminderen.
