Wat is het Secure Shell (SSH)-protocol?
- IAM-woordenlijst
- Wat is het Secure Shell (SSH)-protocol?
Het Secure Shell (SSH)-protocol is een cryptografisch netwerkprotocol dat wordt gebruikt om veilig verbinding te maken en apparaten op afstand te beheren via een netwerk. Hiermee kunnen gebruikers een machine op afstand benaderen en bedienen alsof ze fysiek aanwezig zijn, terwijl de beveiliging sterk blijft. SSH versleutelt gegevens die tussen twee machines worden overgedragen, zodat aanmeldingsgegevens en andere gevoelige informatie worden beschermd tegen ongeautoriseerde toegang.
SSH en SSL: wat is het verschil?
Hoewel SSH- en Secure Sockets Layer (SSL)-protocollen beide zijn ontworpen zom gegevens tijdens de overdracht te beschermen, worden ze in verschillende contexten gebruikt.
SSH wordt voornamelijk gebruikt voor het op afstand, via een netwerk, veilig benaderen en beheren van systemen. Het versleutelt de communicatie tussen een client (meestal de computer van een gebruiker) en een externe server, waardoor veilige commandoregeltoegang, bestandsoverdrachten en andere administratieve taken mogelijk worden.
SSL, tegenwoordig nauwkeuriger aangeduid als Transport Layer Security (TLS), is ontworpen om communicatie tussen een webserver en een webbrowser te beveiligen, meestal via HTTPS. SSL/TLS garandeert gegevensintegriteit en vertrouwelijkheid door gegevens te versleutelen, zoals aanmeldingsgegevens, creditcardgegevens en andere gevoelige gegevens die tijdens online activiteiten worden overgedragen.
Hoe het SSH-protocol werkt
Het SSH-protocol is gebaseerd op een client-servermodel, waarbij het apparaat van de gebruiker (de client) een veilige verbinding tot stand brengt met een externe machine (de server). Dit stelt gebruikers in staat om externe systemen via een netwerk te benaderen en te beheren, zelfs als dit een niet-vertrouwd netwerk is zoals openbare wifi.
Hier volgt een overzicht van het SSH-verbindingsproces:
- Verbindingsverzoek: De SSH-client initieert een verbindingsaanvraag naar de SSH-server.
- Sleuteluitwisseling: Om een veilig verbindingskanaal tot stand te brengen, voeren de client en de server een algoritme voor sleuteluitwisseling uit. Tijdens dit proces worden cryptografische sleutels veilig uitgewisseld, zodat beide partijen het eens kunnen worden over een gedeeld geheim dat wordt gebruikt om de sessie te versleutelen. Zelfs als iemand de gegevens onderschept, kan men deze zonder de juiste sleutels niet lezen.
- Serverauthenticatie: De client verifieert de identiteit van de server door de openbare sleutel van de server te vergelijken met bekende sleutels. Deze stap voorkomt Man-in-the-Middle (MITM)-aanvallen door ervoor te zorgen dat de client geen verbinding maakt met een kwaadaardige of gespoofde server.
- Clientauthenticatie: Zodra de server is geverifieerd, moet de client zichzelf verifiëren met behulp van een wachtwoord of een SSH-sleutelpaar.
- Versleutelde sessie tot stand gebracht: Nadat de verificatie is geslaagd, wordt er een veilige sessie tot stand gebracht. Alle communicatie tijdens deze sessie is versleuteld, wat vertrouwelijkheid, gegevensintegriteit en veilige authenticatie garandeert.
Wat is SSH-tunneling?
SSH-tunneling, ook bekend als SSH-poortdoorschakeling, is een methode voor het veilig doorsturen van netwerkverkeer tussen een lokale machine en een machine op afstand via een versleutelde verbinding. Zo ontstaat er een veilige "tunnel" die de gegevens beschermt tegen onderschepping of manipulatie tijdens de overdracht. SSH-tunneling wordt vaak gebruikt om veilig toegang te krijgen tot interne of anderszins ontoegankelijke diensten, firewalls te omzeilen of encryptie toe te voegen aan onveilige protocollen.
Er zijn drie hoofdtypen SSH-poortdoorschakeling:
- Lokale poortdoorschakeling: Stuurt via SSH een poort op de lokale machine door naar een poort op een externe machine. Hierdoor kan een gebruiker op afstand toegang krijgen tot een service alsof deze lokaal draait.
- Poortdoorschakeling op afstand: Stuurt een poort op een externe machine door naar een poort op de lokale machine. Hierdoor krijgt een gebruiker op afstand toegang tot een service die op de lokale machine draait.
- Dynamische poortdoorschakeling: Maakt een lokale Socket Secure (SOCKS)-proxy die verkeer dynamisch kan doorsturen naar verschillende bestemmingen op basis van de verzoeken van de client. Het maakt flexibele routering op applicatieniveau van netwerkverkeer via de SSH-tunnel mogelijk.
Veelvoorkomende toepassingen voor het SSH-protocol
Het SSH-protocol heeft een breed scala aan toepassingen voor het beveiligen van communicatie op afstand, bestandsoverdracht en toegangsbeheer. Hieronder staan enkele van de meest voorkomende en belangrijkste toepassingen.
Veilige bestandsoverdrachten
Een van de meest voorkomende toepassingen voor SSH is het veilig overbrengen van bestanden tussen lokale en externe systemen. SSH biedt een versleuteld kanaal dat gegevens onderweg beschermt, waardoor het ideaal is voor het beheren van servers, het maken van back-ups van gevoelige gegevens en het delen van documenten.
SSH helpt bij het beveiligen van bestandsoverdrachten via het Secure File Transfer Protocol (SFTP) en het Secure Copy Protocol (SCP). SFTP werkt via een SSH-verbinding en zorgt ervoor dat alle gegevens tijdens het overdrachtsproces worden versleuteld, in plaats van dat ze als platte tekst worden verzonden, zoals bij het File Transfer Protocol (FTP). SCP is een eenvoudiger protocol dan SFTP en richt zich op het kopiëren van bestanden van het ene systeem naar het andere als een efficiëntere manier om bestanden veilig en snel over te dragen. SSH speelt een belangrijke rol in veilige bestandsoverdrachten door via SFTP en SCP versleuteling en gegevensintegriteit te bieden.
Beheer van toegang op afstand
SSH maakt veilige, versleutelde toegang op afstand mogelijk. Dit is handig voor systeembeheerders en IT-professionals die systemen op afstand moeten beheren zonder fysiek aanwezig te zijn op een serverlocatie. SSH stelt gebruikers in staat om op afstand verbinding te maken met een machine en zich te authenticeren om administratieve taken uit te voeren zonder het risico op onbevoegde toegang. Met SSH kunnen gebruikers servers en systemen overal veilig beheren, bestanden veilig overbrengen en zelfs toegang krijgen tot interne diensten via tunneling.
Firewall omzeilen
SSH-tunneling is een effectieve manier om firewallbeperkingen te omzeilen en netwerkverkeer veilig via een externe server te routeren. SSH-tunneling kan bepaald inkomend en uitgaand verkeer omzeilen dat gewoonlijk om veiligheidsredenen door firewalls wordt beperkt. Dit is handig wanneer een gebruiker toegang nodig heeft tot diensten die mogelijk door een firewall worden geblokkeerd, zoals interne databases of webapplicaties.
Toegang tot privénetwerken
SSH-tunneling maakt veilige toegang tot interne diensten en privénetwerken mogelijk, vooral wanneer deze netwerken zich achter firewalls of Virtual Private Networks (VPN's) bevinden die directe toegang blokkeren. In tegenstelling tot een VPN, stelt SSH-tunneling gebruikers in staat om specifieke soorten verkeer door een tunnel te leiden om op afstand toegang te krijgen tot privé-netwerkbronnen die anders ontoegankelijk zouden zijn. Stel dat een gebruiker op afstand werkt en toegang nodig heeft tot een database op een privéserver binnen het netwerk van een bedrijf. In dat geval kan men geen rechtstreekse verbinding maken vanwege firewalls die toegang van buitenaf blokkeren. Om de database op een veilige manier te bereiken, kan de gebruiker een SSH-tunnel met lokale poortdoorschakeling opzetten, zodat hij/zij het verkeer via een vertrouwde server kan routeren en toegang tot de privédatabase kan krijgen zonder de beveiliging in gevaar te brengen.
Toegang tot clouddiensten
Cloudplatforms hosten vaak applicaties en infrastructuur op externe virtuele machines. SSH is het standaardprotocol voor het veilig interacteren met deze omgevingen. SSH stelt gebruikers in staat om te communiceren met cloudservers, software te installeren en problemen op afstand op te lossen.
Beveiligingsrisico's SSH
Hoewel SSH sterke beveiliging biedt voor toegang op afstand en gegevensoverdracht, zijn er toch mogelijke risico's. Veelvoorkomende beveiligingsproblemen zijn verkeerd geconfigureerde toegangscontroles, ongepatchte software en onveilig sleutelbeheer.
Verkeerd geconfigureerde toegangscontroles
SSH-beveiliging is sterk afhankelijk van de juiste configuratie. Als toegangscontroles verkeerd zijn geconfigureerd, kunnen ze de deur openzetten voor beveiligingslekken of brute force-aanvallen. Om SSH-toegang te beveiligen, kunnen gebruikers wachtwoordverificatie uitschakelen en in plaats daarvan SSH-sleutelparen gebruiken om het risico op onbevoegde toegang en mogelijke cyberaanvallen te verkleinen.
Ongepatchte SSH-software
Een van de belangrijkste aspecten van het handhaven van SSH-beveiliging is ervoor zorgen dat zowel de SSH-server als de clientsoftware regelmatig worden bijgewerkt. Als SSH-software niet regelmatig gepatcht wordt, kunnen systemen blootgesteld worden aan beveiligingsproblemen die cybercriminelen kunnen misbruiken om ongeautoriseerde toegang te krijgen en gegevens te compromitteren. Door proactief te blijven en SSH-software bij te werken, kunnen gebruikers de kans verkleinen dat de SSH-infrastructuur bij een succesvolle cyberaanval wordt beschadigd.
Onveilig sleutelbeheer
Authenticatie op basis van SSH-sleutels is een groot veiligheidsvoordeel, maar het brengt ook zijn eigen risico's met zich mee als sleutels niet goed worden beheerd. Gecompromitteerde privésleutels kunnen leiden tot onbevoegde toegang of escalatie van privileges. Om deze risico's te beperken, moeten privésleutels veilig worden opgeslagen, worden beveiligd met sterke wachtwoordzinnen en regelmatig worden geroteerd. Gebruikers moeten ook het delen van privésleutels vermijden en de distributie van sleutels zorgvuldig controleren.