Secure Shell

Från Wikipedia

Secure Shell (SSH) är ett protokoll för att ansluta sig säkert mot andra datorer över Internet. Det finns tillgängligt i två versioner, SSH-1 och SSH-2. SSH är en ersättare till Telnet men med skillnaden att all trafik mellan datorerna krypteras. SSH består av en serverdel, som vanligtvis lyssnar på port 22, och en klientdel. Programvaran hos klienten används för att ansluta sig till servern.

SSH-1 använder sig av RSA för att autentisera servern och överföra en sessionsnyckel, SSH-2 RSA eller DSA för autentiseringen och Diffie-Hellman för sessionsnyckeln. Resten av kommunikationen sker med någon symmetrisk kryptoalgoritm, vanligen 3DES, och säkras i SSH-2 med hmac-md5 eller liknande.

Användaren autentiseras vanligen med lösenord eller med RSA- eller DSA-nycklar.

Vidare kan man med hjälp av SSH sätta upp en tunnel, mellan två datorer. SSH på den ena datorn lyssnar då på en eller flera portar. All trafik på dessa portar kommer att krypteras, skickas i tunneln till den andra datorn, dekrypteras och skickas vidare. På detta sätt kan program som ej har inbyggd kryptering använda en ssh-tunnel för att få en krypterad förbindelse.

Historia

I början av 1995 utvecklade Tatu Ylönen, forskare vid Tekniska högskolan i Finland, den första versionen av SSH-protokollet (numera kallat SSH-1). Ylönen gjorde SSH tillgängligt som gratisprogram (freeware) i juli 1995, och det blev snabbt populärt. Inom ett halvår beräknades antalet användare av SSH ha vuxit till cirka 20 000 i över femtio länder.

I originalversionen av SSH användes fri programvara, exempelvis GNU-projektets programkod för stortalsaritmetik, men för senare versioner av SSH används uteslutande "privatägd programvara" (Proprietary software). I december 1995 grundade Ylönen företaget SSH Communications Security för att marknadsföra och utveckla SSH, och inledde ett nära samarbete med F-Secure.

Året därpå, 1996, utvecklades protokollet säkerhetsmässigt och funktionsmässigt. Viktiga brister som konstaterats när en bredare krets av akademiker studerat 1995 års version, till exempel sårbarhet för Man-in-the-middle attacks (MITM), åtgärdades. Bland annat förbättrades säkerheten med hjälp av Diffie-Hellman key exchange och säker autenticitetskontroll genom Message authentication code. Det blev också möjligt att ansluta med flera sessions genom en SSH-anslutning. Eftersom 1996 års förbättringar innebar en bruten bakåtkompatibilitet infördes benämningarna SSH-1 för 1995 års specifikationer, och SSH-2 för det utvecklade protokollet.

År 2006 klassificerade IETF SSH-2 som internetstandard, och fastställde att SSH-1 inte längre bör användas. De flesta servrar och klienter stödjer idag SSH-2. Men programvara som inte stödjer SSH-2 används emellertid fortfarande av många, vilket gör det svårt att avvara SSH-1.

Användningsområden

SSH används idag av mängder av program, men används mest:

  • för fjärrstyrning av Unix-liknande operativsystem.
  • för filkopiering med SFTP eller SCP.
  • för vidarebefordring av portar eller tunnling (eng. tunneling), som ett alternativ till Virtual private network. Med den här typen av osäkra anslutningar av externa applikationer, som skickas vidare till SSH programmet (server eller klient), vilket i sin tur skickar vidare till en annan SSH- applikation, som slutligen skickar anslutningen till den angivna adressen. Vidarebefordringen är krypterad och skyddas under vägen mellan servern och klienten. Användningsområdet för SSH transporter inkluderar också databasservrar, e-postservrar, Windows Remote Desktop och VNC anslutningar.

Säkerhet

Det är inte ovanligt att datorer med SSH som är direktanslutna till internet utsätts för tusentals oauktoriserade inloggningsförsök dagligen. Datorer som är direktanslutna till internet brukar därför aldrig tillåta SSH-inloggning med root som användarnamn. Detta gör att illasinnade måste gissa både användarnamn och lösenord för att kunna logga in, vilket gör det betydligt svårare. För att på detta sätt hindra root-inloggning ändrar man vanligen en rad i filen /etc/ssh/sshd_config och starta om sshd. Ändra raden "#PermitRootLogin yes" till "PermitRootLogin no" (måste ta bort tecknet # i början på raden). Man kan också begränsa vilka användare som får logga in via SSH med "AllowUsers", "DenyUsers", "AllowGroups" och "DenyGroups", samt från vilka maskiner inloggning tillåts, till exempel med direktiv i filen /etc/hosts.allow.

Ytterligare sätt att försvåra intrång av den här typen är att använda olika säkerhetsdaemoner som till exempel sshguard. Dessa fungerar vanligtvis så att de automatiskt, till exempel via iptables eller /etc/hosts.conf, blockerar ip-adresser till klienter som genererat ett visst antal misslyckade inloggningsförsök. Risken med detta är att man kan utestänga legitima användare genom inloggningsförsök med samma ip-adress, antingen ifråga om fleranvändardatorer eller datorer bakom samma NAT-värd eller med förfalskade ip-adresser – eller helt enkelt så att den legitima användaren misslyckas för många gånger.

En mer avancerad metod är "dörrknackning" ("port knocking"), som innebär att man först måste kontakta vissa andra portar för att sshd-porten över huvud taget skall öppnas. På en dator med få användare kan man välja att helt enkelt låta SSH-servern lyssna på en annan port än den vanliga, varvid den inte hittas utan att en mängd portar undersöks.

På datorer med många användare är standardlösningar ofta nödvändiga. Därvid är det viktigt att så långt som möjligt tvinga användare att använda starka lösenord. I sammanhang där man lägger stor vikt vid säkerheten kan man förbjuda inloggning med lösenord och istället använda RSA- eller DSA-nycklar

Externa länkar