SSH: Secure Shell
SSH står for Secure Shell. Det er også kjent som Secure Socket Shell. En kryptografisk nettverksprotokoll kalt Secure Shell (SSH) brukes til å trygt drive nettverkstjenester på tvers av usikre nettverk. Klientserverarkitektur er grunnlaget for SSH-applikasjoner, som kobler en SSH-klientforekomst med en SSH-server.
Som en etterfølger for Telnet og usikre eksterne Unix-skallprotokoller som Berkeley Remote Shell (rsh) og dets tilknyttede rlogin- og rexec-protokoller, ble SSH laget for Unix-lignende operativsystemer som bruker usikker, klartekst-autentiseringstokenkommunikasjon.
Definisjon
Vi kan bruke SSH på flere forskjellige måter. Den enkleste implementeringen krypterer data ved å bruke automatisk genererte offentlig-private nøkkelpar i begge ender av en kommunikasjonskanal og en nettverkstilkobling. Etter det autentiserer den brukeren ved hjelp av et passord. Når en bruker manuelt genererer et offentlig-privat nøkkelpar, fullføres autentiseringen tilnærmet når nøkkelparet er etablert, slik at en økt kan startes umiddelbart uten en passordforespørsel.
mylivecricket.in
I dette tilfellet holder eieren den tilhørende private nøkkelen hemmelig, og den offentlige nøkkelen er installert på alle maskiner som må gi tilgang til eieren. Selv om den private nøkkelen fungerer som grunnlaget for autentisering, sendes nøkkelen aldri over nettverket når autentisering utføres. SSH bekrefter at den offentlige nøkkelens leverandør også har den tilsvarende private nøkkelen.
Å koble den ukjente offentlige nøkkelen med en kjent privat nøkkel i alle versjoner av SSH er avgjørende før du aksepterer dem som legitime offentlige nøkler med IDer. Å godta en offentlig nøkkel fra en angriper uten å validere den, vil akseptere en uklarert angriper som en legitim bruker.
Opprettelse
Tatu Ylönen, en dataforsker fra Finland, opprettet SSH for første gang i 1995. Protokollpakkens videreutvikling fant sted i mange utviklergrupper, noe som førte til ulike implementeringsiterasjoner. Det er implementeringer tilgjengelig for alle populære operativsystemer, inkludert innebygde systemer. OpenSSH, som skaperne av OpenBSD gjorde tilgjengelig som åpen kildekode-programvare i 1999, er den mest brukte programvarestabelen.
Håndtering av OpenSSH-nøkler for autentisering
Den godkjente offentlige nøkkellisten holdes vanligvis på Unix-lignende systemer i filen ~/.ssh/autoriserte nøkler i brukerens hjemmekatalog, som har privilegier for ekstern pålogging. SSH respekterer bare denne filen hvis den ikke kan endres av andre enn eieren og roten. Passordet er ikke lenger nødvendig når både den eksterne endens offentlige nøkkel og den lokale endens samsvarende private nøkkel er til stede. Men vi kan bruke en passordfrase for å låse den private nøkkelen for mye mer beskyttelse. Vi kan også søke i den hemmelige koden på vanlige steder, og vi kan bruke et kommandolinjealternativ for å gi den fullstendige banen (alternativ -i for ssh).
SSH gir videre automatisert nøkkelgenerering-kryptert passordbasert autentisering. Angriperen i dette scenariet kan etterligne den pålitelige serversiden, be om passordet og få det (man-in-the-middle-angrep). På serversiden kan vi slå av passordautentisering.
Bruk
SSH bruker klient-server-paradigmet. Vanligvis brukes SSH for logging. Den kan også tunnelere TCP-porter, videresende X11-tilkoblinger og utføre kommandoer på et eksternt system. Vanligvis opprettes tilkoblinger til en SSH-demon som tillater eksterne tilkoblinger ved hjelp av en SSH-klientapplikasjon. Begge finnes ofte på de fleste moderne operativsystemer, som macOS, Linux-distribusjoner, OpenBSD, FreeBSD, NetBSD, Solaris og OpenVMS. Noen versjoner er proprietære, freeware og åpen kildekode med varierende grad av kompleksitet og helhet (som PuTTY og versjonen av OpenSSH inkludert med Cygwin og OpenSSH). Spesielt er SSH ikke inkludert som standard i Windows-versjoner før Windows 10 versjon 1709.
Lignende filbehandlingsfunksjonalitet (synkronisering, kopiering og fjernsletting) tilbys av gratis og åpen kildekode Windows-applikasjonen WinSCP, som bruker PuTTY som back-end. Uten å måtte installeres på klientdatamaskinen, er WinSCP og PuTTY tilgjengelig pakket for å betjenes direkte fra en USB-stasjon. Aktivering av en funksjon i innstillingsappen er ofte nødvendig for å sette opp en SSH-server i Windows.
For å håndtere tilkoblingsproblemer og forhindre sikkerhetsrisikoen ved å eksponere en skybasert virtuell maskin direkte til Internett, er SSH avgjørende i nettskybasert databehandling. En sikker tilkobling over Internett kan gjøres mulig gjennom en SSH-tunnel virtuell datamaskin via en brannmur. For denne protokollen har IANA utpekt TCP-port 22, UDP-port 22 og SCTP-port 22.
Allerede i 2001 klassifiserte IANA standard TCP-port 22 for SSH-servere som en av de velkjente portene. Den tilkoblingsorienterte transportlagprotokollen SCTP kan brukes til å kjøre SSH i stedet for TCP.
Historisk fremgang
Iterasjon 1
Et passord-sniffende angrep på nettverket til institusjonen hans inspirerte Tatu Ylönen, en forsker ved Helsinki University of Technology i Finland opprettet den første iterasjonen av protokollen (i dag kjent som SSH-1) i 1995.
SSH ble designet for å ta rollen som tidligere protokoller, inkludert rlogin, TELNET, FTP og rsh, som manglet robuste autentiserings- og hemmelighetsgarantier. Ylönen gjorde applikasjonen sin tilgjengelig som freeware. I juli 1995 ble enheten raskt godt likt. Ved utgangen av 1995 var det 20 000 SSH-brukere fordelt på 50 forskjellige nasjoner.
For å fremme og fremme SSH etablerte Ylönen SSH Communications Security i desember 1995. Ulike gratis programvarekomponenter, inkludert GNU libgmp, ble brukt i SSH-programmets første utgivelse, men senere iterasjoner levert av SSH Communications Security vokste til stadig mer proprietær programvare. Ifølge estimater var det 2 millioner brukere innen år 2000.
Iterasjon 2
Internet Engineering Task Force (IETF) utpekte arbeidsgruppen med ansvar for å lage SSH-protokollversjon 2 som 'Secsh' i sin offisielle dokumentasjon.
SSH-2, en forbedret protokolliterasjon, ble en standard i 2006. SSH-1 er ikke kompatibel med denne versjonen. SSH-2 tilbyr funksjonalitet og sikkerhetsoppgraderinger over SSH-1. For eksempel gir Diffie-Hellman nøkkelutveksling og robust integritetsverifisering via meldingsautentiseringskoder høyere sikkerhet. Muligheten til å betjene et ubegrenset antall shell-økter over en enkelt SSH-tilkobling er en av SSH-2s nye funksjoner. Fordi SSH-2 er mer avansert og mye brukt enn SSH-1, støtter visse implementeringer, som libssh (v0.8.0+), Lsh og Dropbear, kun SSH-2.
Iterasjon 1.99
RFC 4253 krevde at en SSH-server som støtter 2.0, så vel som tidligere versjoner, skulle angi sin protokollversjon som 1.99 i januar 2006, i god tid etter at versjon 2.1 ble utviklet. Dette versjonsnummeret brukes til å indikere bakoverkompatibilitet i stedet for å representere en tidligere programvarerevisjon.
ressursallokeringsgraf
OSSH og OpenSSH
Siden den siste versjonen av det originale SSH-programmet, versjon 1.2.12, ble distribuert under en åpen kildekode-lisens i 1999, har utviklere jobbet med en gratis programvareversjon. Dette ble brukt som grunnlaget for Björn Grönvalls OSSH-program. Like etter klonet OpenBSD-teamet Grönvalls arbeid for å produsere OpenSSH, som ble inkludert i OpenBSD Release 2.6. De opprettet en 'portabilitets'-gren fra denne versjonen for å overføre OpenSSH til forskjellige operativsystemer.
Den mest brukte SSH-implementeringen fra og med 2005 var OpenSSH, standardversjonen i mange operativsystemdistribusjoner. Etter å ha fjernet SSH-1-støtte fra kodebasen i OpenSSH 7.6-utgivelsen, oppdateres OpenSSH fortsatt og støtter SSH-2-protokollen. I mellomtiden er OSSH ikke lenger relevant.
Bruker
Brukeren 'josh' 'SSHed' fra den lokale datamaskinen 'foo fighter' til den fjerne maskinen 'tengwar' for å kjøre xeyes som et eksempel på tunnelering av et X11-program gjennom SSH. Folk bruker Windows SSH-klient PuTTY for å få tilgang til OpenWrt.
ascii-tabell i c
SSH er en protokoll som fungerer med mange systemer, inkludert Microsoft Windows og de fleste Unix-varianter (Linux, BSD-er, inkludert Apples macOS og Solaris). Følgende apper kan trenge funksjoner som er eksklusive for eller kompatible med bestemte SSH-klienter eller -servere. For eksempel er det foreløpig bare mulig å bruke OpenSSH-serveren og klientimplementeringen av SSH-protokollen for å konstruere en VPN.
- For å få tilgang til et skall på en fjern vert (erstatter Telnet og rlogin)
- For å utføre en ensom kommando på en fjern vert (erstatter rsh)
- For å konfigurere en fjern servers automatiserte (passordløse) pålogging (for eksempel ved bruk av OpenSSH)
- Som en fullt funksjonell kryptert VPN, husk at bare OpenSSH-klienten og serveren støtter denne muligheten.
- For overføring av X fra en fjern vert (mulig gjennom flere mellomverter)
- For bruk av SSH-klienter som støtter SOCKS-protokollen for å surfe på Internett over en kryptert proxy-tilkobling.
- For sikker montering av en ekstern servers katalog som et filsystem på en lokal maskin som bruker SSHFS.
- Gjennom en eller flere av teknologiene nevnt ovenfor for automatisk ekstern serverovervåking og administrasjon.
- For SSH-kompatibel utvikling av mobil eller innebygd enhet.
- For å beskytte filoverføringsmekanismer.
Overføringsmetoder for filer
Flere filoverføringssystemer bruker Secure Shell-protokoller som f.eks
- Over SSH er Secure Copy (SCP) utviklet fra RCP-protokollen.
- rsync som skal være mer effektivt enn SCP drives ofte gjennom en SSH-tilkobling.
- Et alternativ til FTP som er trygt er SSH File Transfer Protocol (SFTP) (må ikke forveksles med FTP over SSH eller FTPS)
- FISH, eller filer overført over skallprotokoll, ble introdusert i 1998 og utviklet fra SSH over Unix-skallinstruksjoner.
- Aspera, også kjent som Fast and Secure Protocol (FASP), bruker SSH for kommando og for datatransport, UDP-porter.
Arkitektur
Tre distinkte komponenter utgjør den lagdelte arkitekturen til SSH-protokollen:
- Transmission Control Protocol (TCP) til TCP/IP brukes ofte av transportlaget (RFC 4253), med portnummer 22 satt til side som en serverlytteport. Dette laget implementerer kryptering, komprimering, integritetskontroll, innledende nøkkelutveksling og serverautentisering. Selv om hver implementering kan tillate mer, eksponerer den for det høyere laget et grensesnitt for sending og mottak av klartekstpakker på opptil 32 768 byte hver. Vanligvis, etter at 1 GB med data har blitt transportert eller etter at en time har gått, avhengig av hva som kommer først, sørger transportlaget for ombytting av nøkkel.
- Klientautentisering håndteres via brukerautentiseringslaget (RFC 4252), som også tilbyr flere autentiseringsteknikker. Klientdrevet autentisering betyr at SSH-klienten, ikke serveren, kan be brukeren om et passord. Bare klientens forespørsler om autentisering mottar svar fra serveren. Følgende brukerautentiseringsteknikker brukes ofte:
Passord , en enkel passordautentiseringsteknikk som inkluderer muligheten til å endre passordet. Ikke all programvare bruker denne teknikken. - Støtter vanligvis minst DSA-, ECDSA- eller RSA-nøkkelpar offentlig nøkkel er en teknikk for offentlig nøkkelbasert autentisering. Andre implementeringer godtar i tillegg X.509-sertifikater.
- Enkel påloggingsfunksjonalitet for SSH-økter leveres via GSSAPI autentiseringsteknikker, som tilbyr et utvidbart system for å håndtere SSH-autentisering ved bruk av eksterne mekanismer som Kerberos 5 eller NTLM. Selv om OpenSSH har en funksjonell GSSAPI-implementering, integrerer kommersielle SSH-implementeringer ofte disse teknikkene for bruk i selskaper.
- Ideen om kanaler som definerer SSH-tjenestene som tilbys, er definert av tilkoblingslaget (RFC 4254). Vi kan multiplekse flere SSH-tilkoblinger fra en enkelt. Begge overfører data i begge retninger. Kanalforespørsler overfører data utenfor båndet som er spesifikt for en gitt kanal, for eksempel en server-side prosess utgangskode eller et terminalvindus størrelsesendring. I tillegg, ved å bruke størrelsen på mottaksvinduet, kontrollerer hver kanal sin flyt. SSH-klienten sender en global forespørsel om å videresende en port på serversiden. Kanaltyper som er vanlige inkluderer:
- Shell for SFTP, exec og terminal shell (inkludert SCP-overføringer)
- Direct-TCPIP for videresendte tilkoblinger fra klienten til serveren.
- Server-til-klient videresendte tilkoblinger ved hjelp av forwarded-tcpip
- For å bekrefte vertens legitimitet, tilbyr SSHFP DNS-posten (RFC 4255) den offentlige vertsnøkkelen fingeravtrykk.
På grunn av den åpne designen kan vi bruke SSH til et bredt spekter av oppgaver i tillegg til å sikre skjell, noe som gir den stor allsidighet.
Sårbarheter
SSH-1
På grunn av utilstrekkelig dataintegritetsbeskyttelse levert av CRC-32 i denne protokollversjonen, ble det identifisert en sårbarhet i SSH 1.5 i 1998 som tillot uautorisert innsetting av materiale i en kryptert SSH-strøm. I de fleste implementeringer la de til en oppdatering kjent som SSH Compensation Attack Detector. Flere av disse reviderte implementeringene inkluderte en ny heltallsoverløpsfeil, som gjorde det mulig for angripere å kjøre vilkårlig kode med root eller SSH-demonens evner.
En feil som gjør det mulig for angripere å endre den siste blokken i en IDEA-kryptert økt ble funnet i januar 2001. En annen feil som gjorde at en useriøs server kunne sende en klientpålogging til en annen server ble funnet i samme måned.
På grunn av dens iboende sårbarheter, anses SSH-1 generelt for å være utdatert og bør unngås ved eksplisitt å fjerne SSH-1 reserve. De fleste nåværende servere og klienter støtter SSH-2.
Rentekstgjenoppretting for CBC
En teoretisk sårbarhet som tillot innhenting av opptil 32 biter med ren tekst fra en blokk med chiffertekst kryptert med datidens standard krypteringsmetode, CBC, ble oppdaget i alle versjoner av SSH i november 2008. Den enkleste løsningen er å bytte til CTR, teller modus, i stedet for CBC-modus, som gjør SSH immun mot angrepet.
NSA mistenkt for dekryptering
Edward Snowdens utgivelse av sensitive dokumenter til Der Spiegel 28. desember 2014, antyder at National Security Agency potensielt vil være i stand til å dekode visse SSH-kommunikasjoner.