SSH: Secure Shell
SSH tulee sanoista Secure Shell. Se tunnetaan myös nimellä Secure Socket Shell. Salausverkkoprotokollaa nimeltä Secure Shell (SSH) käytetään verkkopalveluiden turvalliseen käyttämiseen turvattomissa verkoissa. Asiakaspalvelinarkkitehtuuri on SSH-sovellusten perusta, jotka yhdistävät SSH-asiakasesiintymän SSH-palvelimeen.
Telnetin ja vaarallisten Unix-kuoriprotokollien, kuten Berkeley Remote Shellin (rsh) ja siihen liittyvien rlogin- ja rexec-protokollien seuraajana, SSH luotiin Unixin kaltaisille käyttöjärjestelmille, jotka käyttävät suojaamatonta, selkokielistä todennustunnusviestintää.
Määritelmä
Voimme käyttää SSH:ta useilla eri tavoilla. Yksinkertaisin toteutus salaa tiedot käyttämällä automaattisesti luotuja julkisen ja yksityisen sektorin avainpareja viestintäkanavan ja verkkoyhteyden molemmissa päissä. Tämän jälkeen se todentaa käyttäjän salasanalla. Kun käyttäjä luo manuaalisesti julkisen ja yksityisen avainparin, todennus on käytännössä valmis, kun avainpari on muodostettu, jolloin istunto voidaan käynnistää välittömästi ilman salasanakehotetta.
konekirjoituspäivämäärätyyppi
Tässä tapauksessa omistaja pitää vastaavan yksityisen avaimen salassa, ja julkinen avain asennetaan kaikkiin koneisiin, joiden on myönnettävä pääsy omistajalle. Vaikka yksityinen avain toimii todennuksen perustana, avainta ei koskaan lähetetä verkon kautta todennusta suoritettaessa. SSH vahvistaa, että julkisen avaimen tarjoajalla on myös vastaava yksityinen avain.
Tuntemattoman julkisen avaimen yhdistäminen tunnettuun yksityiseen avaimeen kaikissa SSH-versioissa on ratkaisevan tärkeää, ennen kuin ne hyväksytään laillisiksi julkisiksi avaimina, joissa on tunnus. Julkisen avaimen hyväksyminen hyökkääjältä vahvistamatta sitä, hyväksyy epäluotettavan hyökkääjän lailliseksi käyttäjäksi.
Luominen
Suomalainen tietojenkäsittelytieteilijä Tatu Ylönen loi SSH:n ensimmäisen kerran vuonna 1995. Protokollapaketin jatkokehitys tapahtui useissa kehittäjäryhmissä, mikä johti erilaisiin toteutusiteraatioihin. Toteutuksia on saatavilla kaikille suosituille käyttöjärjestelmille, mukaan lukien sulautetut järjestelmät. OpenSSH, jonka OpenBSD:n luojat julkaisivat avoimen lähdekoodin ohjelmistona vuonna 1999, on yleisimmin käytetty ohjelmistopino.
OpenSSH-avainten hallinta todennusta varten
Hyväksytty julkisten avainten luettelo säilytetään yleensä Unix-tyyppisissä järjestelmissä käyttäjän kotihakemiston tiedostossa ~/.ssh/authorized keys, jolla on etäkirjautumisoikeudet. SSH kunnioittaa tätä tiedostoa vain, jos kukaan muu kuin omistaja ja pääkäyttäjä ei voi muokata sitä. Salasanaa ei enää tarvita, kun sekä etäpään julkinen avain että paikallisen pään vastaava yksityinen avain ovat läsnä. Voimme kuitenkin käyttää tunnuslausetta yksityisen avaimen lukitsemiseen saadaksemme paljon paremman suojan. Voimme myös etsiä salaista koodia yleisistä paikoista, ja voimme käyttää komentorivin vaihtoehtoa antaaksemme sen täydellisen polun (optio -i ssh:lle).
SSH tarjoaa lisäksi automaattisen avainten luomiseen salatun salasanapohjaisen todennuksen. Tässä skenaariossa hyökkääjä voi esiintyä luotettavana palvelinpuolena, pyytää salasanaa ja saada sen (man-in-the-middle -hyökkäys). Palvelinpuolella voimme kytkeä salasanatodennuksen pois päältä.
Käyttää
SSH käyttää asiakas-palvelin -paradigmaa. Tyypillisesti SSH:ta käytetään kirjaamiseen. Se voi myös tunneloida TCP-portteja, välittää X11-yhteyksiä ja suorittaa komentoja etäjärjestelmässä. Tyypillisesti yhteydet SSH-demoniin, jotka mahdollistavat etäyhteydet, muodostetaan käyttämällä SSH-asiakassovellusta. Molemmat löytyvät usein useimmista nykyaikaisista käyttöjärjestelmistä, kuten macOS, Linux-jakelu, OpenBSD, FreeBSD, NetBSD, Solaris ja OpenVMS. Jotkut versiot ovat patentoituja, ilmaisia ja avoimen lähdekoodin versioita, joiden monimutkaisuus ja kattavuus vaihtelevat (kuten PuTTY ja Cygwinin ja OpenSSH:n mukana tuleva OpenSSH-versio). Erityisesti SSH ei sisälly oletusarvoisesti Windows-versioihin ennen Windows 10 -versiota 1709.
Samanlaisia tiedostojen hallintatoimintoja (synkronointi, kopiointi ja etäpoisto) tarjoaa ilmainen ja avoimen lähdekoodin Windows-sovellus WinSCP, joka käyttää PuTTY:tä taustana. WinSCP ja PuTTY ovat saatavilla pakattuna toimimaan suoraan USB-asemalta ilman, että niitä tarvitsee asentaa asiakastietokoneeseen. SSH-palvelimen määrittäminen Windowsissa edellyttää usein ominaisuuden käyttöönottoa asetussovelluksessa.
SSH on ratkaisevan tärkeä pilvilaskennassa, jotta voidaan käsitellä yhteysongelmia ja estää tietoturvariskit, jotka liittyvät pilvipohjaisen virtuaalikoneen suoraan altistamiseen Internetiin. Turvallinen Internet-yhteys voidaan tehdä mahdolliseksi SSH-tunnelivirtuaalitietokoneen kautta palomuurin kautta. Tätä protokollaa varten IANA on määrittänyt TCP-portin 22, UDP-portin 22 ja SCTP-portin 22.
Jo vuonna 2001 IANA luokitteli SSH-palvelimien oletusarvoisen TCP-portin 22 yhdeksi tunnetuista porteista. Yhteyssuuntautunutta siirtokerrosprotokollaa SCTP voidaan käyttää SSH:n suorittamiseen TCP:n sijaan.
Historiallinen edistyminen
Iteraatio 1
Salasanojen nuuskiminen laitoksensa verkkoon inspiroi Tatu Ylöstä, Teknillisen korkeakoulun tutkija loi protokollan (nykyään SSH-1) alkuperäisen iteraation vuonna 1995.
SSH suunniteltiin ottamaan aiempien protokollien roolin, mukaan lukien rlogin, TELNET, FTP ja rsh, joista puuttui vankka todennus ja salassapitotakuu. Ylönen julkaisi sovelluksensa ilmaisohjelmana. Heinäkuussa 1995 laitteesta tuli nopeasti suosittu. Vuoden 1995 loppuun mennessä SSH-käyttäjiä oli 20 000 50 eri maassa.
kuinka muuttaa merkkijono int:ksi
SSH:n edistämiseksi ja edistämiseksi Ylönen perusti SSH Communications Securityn joulukuussa 1995. SSH-ohjelman ensimmäisessä julkaisussa hyödynnettiin erilaisia vapaita ohjelmistokomponentteja, mukaan lukien GNU libgmp, mutta myöhemmin SSH Communications Securityn tuottamat iteraatiot kasvoivat yhä enemmän omaisiksi ohjelmistoiksi. Vuoteen 2000 mennessä käyttäjiä oli arvioiden mukaan 2 miljoonaa.
Iteraatio 2
Internet Engineering Task Force (IETF) nimesi SSH-protokollan version 2 luomisesta vastaavan työryhmän virallisessa dokumentaatiossaan nimellä Secsh.
SSH-2, parannettu protokollien iteraatio, tuli standardiksi vuonna 2006. SSH-1 ei ole yhteensopiva tämän version kanssa. SSH-2 tarjoaa toimintoja ja tietoturvapäivityksiä SSH-1:n yli. Esimerkiksi Diffie-Hellman-avainten vaihto ja vankka eheyden varmistaminen viestien todennuskoodien avulla tarjoavat paremman turvallisuuden. Mahdollisuus käyttää rajoittamatonta määrää shell-istuntoja yhden SSH-yhteyden kautta on yksi SSH-2:n uusista ominaisuuksista. Koska SSH-2 on edistyneempi ja laajemmin käytetty kuin SSH-1, tietyt toteutukset, kuten libssh (v0.8.0+), Lsh ja Dropbear, tukevat vain SSH-2:ta.
Iteraatio 1.99
RFC 4253 edellytti, että SSH-palvelin, joka tukee versiota 2.0, samoin kuin aiempia versioita, ilmoittaisi protokollaversiokseen 1.99 tammikuussa 2006, paljon sen jälkeen, kun versio 2.1 oli kehitetty. Tätä versionumeroa käytetään osoittamaan taaksepäin yhteensopivuus eikä edustamaan aiempaa ohjelmistoversiota.
OSSH ja OpenSSH
Siitä lähtien, kun alkuperäisen SSH-ohjelman viimeisin versio, versio 1.2.12, jaettiin avoimen lähdekoodin lisenssillä vuonna 1999, kehittäjät ovat työstäneet ilmaista ohjelmistoversiota. Tätä käytettiin Björn Grönvallin OSSH-ohjelman perustana. Pian sen jälkeen OpenBSD-tiimi kloonasi Grönvallin työn tuottaakseen OpenSSH:n, joka sisältyi OpenBSD Release 2.6:een. He loivat tästä versiosta 'siirrettävyyden' haaran OpenSSH:n siirtämiseksi eri käyttöjärjestelmiin.
Vuodesta 2005 eniten käytetty SSH-toteutus oli OpenSSH, oletusversio monissa käyttöjärjestelmäjakeluissa. Sen jälkeen kun SSH-1-tuki on poistettu koodikannasta OpenSSH 7.6 -julkaisussa, OpenSSH:ta päivitetään edelleen ja se tukee SSH-2-protokollaa. Samaan aikaan OSSH ei ole enää relevantti.
Käyttää
Käyttäjä 'josh' 'SSHed' paikalliselta tietokoneelta 'foo fighter' etäiselle koneelle 'tengwar' ajaakseen xeyesiä esimerkkinä X11-ohjelman tunneloinnista SSH:n kautta. Ihmiset käyttävät Windows SSH -asiakasohjelmaa PuTTY käyttääkseen OpenWrt:tä.
SSH on protokolla, joka toimii monien järjestelmien kanssa, mukaan lukien Microsoft Windows ja useimmat Unix-muunnelmat (Linux, BSD:t, mukaan lukien Applen macOS ja Solaris). Seuraavat sovellukset voivat tarvita ominaisuuksia, jotka ovat erityisiä tai yhteensopivia tiettyjen SSH-asiakkaiden tai -palvelimien kanssa. Esimerkiksi tällä hetkellä on mahdollista käyttää vain OpenSSH-palvelinta ja SSH-protokollan asiakastoteutusta VPN:n rakentamiseen.
- Pääsy komentotulkoon etäisännässä (korvaa Telnetin ja rloginin)
- Yksinäisen komennon suorittamiseen kaukaisessa isännässä (korvaa rsh)
- Etäpalvelimen automaattisen (ilman salasanaa) kirjautumisen määrittämiseen (esimerkiksi OpenSSH:n avulla)
- Koska kyseessä on täysin toimiva salattu VPN, muista, että vain OpenSSH-asiakas ja -palvelin tukevat tätä ominaisuutta.
- X:n lähettämiseen etäisännästä (mahdollinen useiden väliisäntien kautta)
- SOCKS-protokollaa tukevien SSH-asiakkaiden käyttämiseen Internetin selaamiseen salatun välityspalvelinyhteyden kautta.
- Etäpalvelimen hakemiston turvalliseen liittämiseen tiedostojärjestelmänä paikalliselle koneelle, joka käyttää SSHFS:ää.
- Yhden tai useamman yllä mainitun tekniikan avulla automaattiseen etäpalvelimen valvontaan ja hallintaan.
- SSH-yhteensopivien mobiililaitteiden tai sulautettujen laitteiden kehittämiseen.
- Tiedostonsiirtomekanismien suojaaminen.
Tiedostojen siirtomenetelmät
Useat tiedostonsiirtojärjestelmät käyttävät Secure Shell -protokollia, kuten
- SSH:n yli SCP (Secure Copy) on kehitetty RCP-protokollasta.
- rsync, jonka oletetaan olevan tehokkaampi kuin SCP, toimii usein SSH-yhteyden kautta.
- Turvallinen vaihtoehto FTP:lle on SSH File Transfer Protocol (SFTP) (ei pidä sekoittaa FTP:hen SSH:n tai FTPS:n yli)
- FISH eli shell-protokollan kautta siirretyt tiedostot otettiin käyttöön vuonna 1998 ja kehitettiin SSH:sta Unixin komentotulkin kautta.
- Aspera, joka tunnetaan myös nimellä Fast and Secure Protocol (FASP), käyttää SSH:ta komentoihin ja tiedonsiirtoon, UDP-portteja.
Arkkitehtuuri
Kolme erillistä komponenttia muodostavat SSH-protokollan kerrostetun arkkitehtuurin:
- TCP/IP:n lähetyksen ohjausprotokollaa (TCP) käyttää yleisesti siirtokerros (RFC 4253), jonka portti numero 22 on varattu palvelimen kuunteluportiksi. Tämä kerros toteuttaa salauksen, pakkaamisen, eheyden tarkistuksen, avainten vaihdon ja palvelimen todennuksen. Vaikka jokainen toteutus voi sallia enemmän, se paljastaa ylemmän kerroksen rajapinnan jopa 32 768 tavun selkeiden tekstipakettien lähettämiseksi ja vastaanottamiseksi. Yleensä, kun 1 Gt dataa on siirretty tai tunnin kuluttua, kumpi tulee ensin, kuljetuskerros järjestää avainten uudelleenvaihdon.
- Asiakkaan todennus hoidetaan käyttäjätunnistuskerroksen (RFC 4252) kautta, joka tarjoaa myös useita todennustekniikoita. Asiakaslähtöinen todennus tarkoittaa, että SSH-asiakas, ei palvelin, voi pyytää käyttäjältä salasanaa. Vain asiakkaan todennuspyynnöt saavat vastauksen palvelimelta. Seuraavia käyttäjän todennustekniikoita käytetään usein:
Salasana , yksinkertainen salasanan todennustekniikka, joka sisältää mahdollisuuden muokata salasanaa. Kaikki ohjelmistot eivät käytä tätä tekniikkaa. - Tukee yleensä vähintään DSA-, ECDSA- tai RSA-avainpareja julkinen avain on julkiseen avaimeen perustuvan todennuksen tekniikka. Muut toteutukset hyväksyvät lisäksi X.509-varmenteita.
- SSH-istuntojen kertakirjautumistoiminto tarjotaan kautta GSSAPI todennustekniikat, jotka tarjoavat laajennettavan järjestelmän SSH-todennusta varten käyttämällä ulkoisia mekanismeja, kuten Kerberos 5 tai NTLM. Vaikka OpenSSH:ssa on toimiva GSSAPI-toteutus, kaupalliset SSH-toteutukset usein integroivat nämä tekniikat yritysten käyttöön.
- Ajatuksen kanavista, jotka määrittelevät tarjottavat SSH-palvelut, määrittelee yhteyskerros (RFC 4254). Voimme multipleksoida useita SSH-yhteyksiä yhdestä. Molemmat lähettävät tietoa molempiin suuntiin. Kanavapyynnöt lähettävät tietylle kanavalle erityisesti kaistan ulkopuolista dataa, kuten palvelinpuolen prosessin poistumiskoodin tai pääteikkunan koon muutosta. Lisäksi kukin kanava ohjaa kulkuaan käyttämällä vastaanottoikkunan kokoa. SSH-asiakas tekee globaalin pyynnön välittää palvelinpuolen portti. Yleisiä kanavatyyppejä ovat:
- Shell SFTP-, exec- ja päätekuorille (mukaan lukien SCP-siirrot)
- Direct-TCPIP edelleenlähetetyille yhteyksille asiakkaalta palvelimelle.
- Palvelin-asiakas välitti yhteydet edelleenlähetetty-tcpip-toiminnolla
- Isännän laillisuuden vahvistamiseksi SSHFP DNS-tietue (RFC 4255) tarjoaa julkisen isäntäavaimen sormenjäljet.
Avoimen suunnittelun ansiosta voimme käyttää SSH:ta moniin erilaisiin tehtäviin kuorien kiinnittämisen lisäksi, mikä antaa sille suurta monipuolisuutta.
Haavoittuvuudet
SSH-1
CRC-32:n tässä protokollaversiossa tarjoaman riittämättömän tietojen eheyden suojauksen vuoksi SSH 1.5:ssä havaittiin vuonna 1998 haavoittuvuus, joka mahdollisti materiaalin luvattoman lisäämisen salattuun SSH-virtaan. Useimmissa toteutuksissa he lisäsivät korjaustiedoston, joka tunnetaan nimellä SSH Compensation Attack Detector. Useat näistä tarkistetuista toteutuksista sisälsivät uuden kokonaisluvun ylivuotovirheen, jonka ansiosta hyökkääjät pystyivät suorittamaan mielivaltaista koodia rootin tai SSH-demonin ominaisuuksilla.
Virhe, jonka avulla hyökkääjät voivat muuttaa IDEA-salatun istunnon viimeistä lohkoa, löydettiin tammikuussa 2001. Samassa kuussa löydettiin toinen virhe, joka mahdollisti väärän palvelimen välittämään asiakkaan sisäänkirjautumisen toiselle palvelimelle.
Luontaisten haavoittuvuuksiensa vuoksi SSH-1:tä pidetään yleensä vanhentuneena, ja sitä tulisi välttää poistamalla SSH-1-varavaraus. Useimmat nykyiset palvelimet ja asiakkaat tukevat SSH-2:ta.
Plaintext Recovery for CBC
Kaikista SSH:n versioista marraskuussa 2008 löydettiin teoreettinen haavoittuvuus, joka mahdollisti jopa 32 bitin selkeän tekstin noudon aikansa vakiosalausmenetelmällä, CBC:llä salatusta salatekstilohkosta. Yksinkertaisin korjaus on siirtyä CTR:ään, laskuriin. CBC-tilan sijaan, mikä tekee SSH:sta immuuni hyökkäykselle.
merkkijonomuotoilija
NSA:ta epäillään salauksen purkamisesta
Edward Snowdenin julkaisema arkaluonteisia asiakirjoja Der Spiegelille 28. joulukuuta 2014 viittaa siihen, että kansallinen turvallisuusvirasto pystyy mahdollisesti purkamaan tietyn SSH-viestinnän.