SSH-protocol

Deze pagina gaat over het SSH-protocol. Voor het bedrijf erachter, zie SSH Communicatiebeveiliging. Voor het gebruik van het Linux-commando ssh, zie ssh-commando gebruik. Voor SSH-clients, -servers en technische informatie, zie SSH (Secure Shell) home page.

Het SSH-protocol (ook wel Secure Shell genoemd) is een methode voor veilig inloggen op afstand van de ene computer op de andere. Het biedt verschillende alternatieve opties voor sterke authenticatie, en het beschermt de veiligheid en integriteit van de communicatie met sterke encryptie. Het is een veilig alternatief voor de onbeveiligde inlogprotocollen (zoals telnet, rlogin) en onveilige methoden voor bestandsoverdracht (zoals FTP).

Typische toepassingen van het SSH-protocol

Het protocol wordt in bedrijfsnetwerken gebruikt voor:

  • het bieden van veilige toegang voor gebruikers en geautomatiseerde processen

  • interactieve en geautomatiseerde bestandsoverdracht

  • het geven van opdrachten op afstand

  • het beheren van netwerkinfrastructuur en andere bedrijfskritische systeemcomponenten.

Hoe werkt het SSH-protocol

Het protocol werkt in het client-servermodel, wat betekent dat de verbinding tot stand wordt gebracht door de SSH-client die verbinding maakt met de SSH-server. De SSH-client stuurt het verbindingsopbouwproces en gebruikt public key cryptografie om de identiteit van de SSH-server te verifiëren. Na de setup-fase gebruikt het SSH-protocol sterke symmetrische encryptie en hashing-algoritmen om de privacy en integriteit van de gegevens die worden uitgewisseld tussen de client en de server te waarborgen.

De onderstaande figuur toont een vereenvoudigde setup-flow van een beveiligde shell-verbinding.

Sterke authenticatie met SSH-sleutels

Er zijn verschillende opties die kunnen worden gebruikt voor de authenticatie van gebruikers. De meest gebruikelijke zijn wachtwoorden en publieke sleutelauthenticatie.

De publieke sleutelauthenticatiemethode wordt vooral gebruikt voor automatisering en soms door systeembeheerders voor single sign-on. Het blijkt veel meer gebruikt te worden dan we ooit hadden verwacht. Het idee is om een cryptografisch sleutelpaar te hebben – publieke sleutel en private sleutel – en de publieke sleutel op een server te configureren om toegang te autoriseren en iedereen die een kopie van de private sleutel heeft toegang tot de server te verlenen. De sleutels die gebruikt worden voor authenticatie worden SSH-sleutels genoemd. Publieke sleutelauthenticatie wordt ook gebruikt met smartcards, zoals de CAC- en PIV-kaarten die door de Amerikaanse overheid worden gebruikt.

Het belangrijkste gebruik van op sleutels gebaseerde authenticatie is om veilige automatisering mogelijk te maken. Geautomatiseerde veilige shell bestandsoverdrachten worden gebruikt om toepassingen naadloos te integreren en ook voor geautomatiseerd systeem & configuratiebeheer.

We hebben gemerkt dat grote organisaties veel meer SSH-sleutels hebben dan ze zich voorstellen, en het beheren van SSH-sleutels is erg belangrijk geworden. SSH-sleutels geven toegang zoals gebruikersnamen en wachtwoorden dat doen.

In sommige gevallen hebben we enkele miljoenen SSH-sleutels gevonden die toegang geven tot productieservers in klantomgevingen, waarbij 90% van de sleutels eigenlijk ongebruikt is en toegang vertegenwoordigt die wel is ingesteld, maar nooit is beëindigd. Zorgen voor de juiste beleidslijnen, processen en audits ook voor SSH-gebruik is van cruciaal belang voor een goed identiteits- en toegangsbeheer. Traditionele identity management projecten hebben maar liefst 90% van alle credentials over het hoofd gezien door SSH keys te negeren. Wij bieden diensten en hulpmiddelen voor het implementeren van SSH sleutelbeheer.

SSH biedt sterke versleuteling en integriteitsbescherming

Als er eenmaal een verbinding tot stand is gebracht tussen de SSH client en server, worden de gegevens die worden verzonden versleuteld volgens de parameters die zijn onderhandeld in de setup. Tijdens de onderhandeling komen de client en de server overeen welk symmetrisch versleutelingsalgoritme zal worden gebruikt en genereren zij de te gebruiken versleutelingssleutel. Het verkeer tussen de communicerende partijen wordt beschermd met industriestandaard sterke encryptie-algoritmen (zoals AES (Advanced Encryption Standard)), en het SSH-protocol bevat ook een mechanisme dat de integriteit van de verzonden gegevens waarborgt door gebruik te maken van standaard hash-algoritmen (zoals SHA-2 (Standard Hashing Algorithm)).

IETF SSH-standaard en gedetailleerde technische documentatie

Het kernprotocol

Toen het SSH-protocol populair werd, bracht Tatu Ylonen het naar de IETF voor standaardisatie. Het is nu een internet standaard die wordt beschreven in de volgende documenten:

RFC 4251 – The Secure Shell (SSH) Protocol ArchitectureRFC 4253 – The Secure Shell (SSH) Transport Layer ProtocolRFC 4252 – The Secure Shell (SSH) Authentication ProtocolRFC 4254 – The Secure Shell (SSH) Connection Protocol

SFTP file transfer protocol

Het SFTP (SSH File Transfer Protocol) is waarschijnlijk het meest gebruikte veilige bestandsoverdracht protocol van vandaag. Het loopt over SSH, en is momenteel gedocumenteerd in draft-ietf-secsh-filexfer-02

Public key file format

Het public key file format is geen formele standaard (het is een informatief document), maar veel implementaties ondersteunen dit formaat.RFC 4716 – Het Secure Shell (SSH) Public Key bestandsformaat

Hoe SSH te citeren

Om SSH te citeren in een onderzoeksartikel, gebruik a.u.b. het volgende:

Tatu Ylonen: SSH - Secure Login Connections over the Internet.Proceedings of the 6th USENIX Security Symposium, pp. 37-42,USENIX, 1996.