SSH: Secure Shell
SSH står for Secure Shell. Det er også kendt som Secure Socket Shell. En kryptografisk netværksprotokol kaldet Secure Shell (SSH) bruges til sikker drift af netværkstjenester på tværs af usikre netværk. Klientserverarkitektur er grundlaget for SSH-applikationer, som forbinder en SSH-klientinstans med en SSH-server.
Som en efterfølger for Telnet og usikre fjerntliggende Unix-shell-protokoller som Berkeley Remote Shell (rsh) og dets tilknyttede rlogin- og rexec-protokoller, blev SSH skabt til Unix-lignende operativsystemer, der anvender usikker, almindelig tekst-godkendelsestoken-kommunikation.
Definition
Vi kan anvende SSH på flere forskellige måder. Den enkleste implementering krypterer data ved hjælp af automatisk genererede offentlig-private nøglepar i begge ender af en kommunikationskanal og en netværksforbindelse. Derefter autentificerer den brugeren ved hjælp af en adgangskode. Når en bruger manuelt genererer et offentligt-privat nøglepar, er godkendelsen praktisk talt fuldført, når nøgleparret er etableret, hvilket gør det muligt at starte en session øjeblikkeligt uden en adgangskodeprompt.
visninger og tabeller
I dette tilfælde holder ejeren den tilsvarende private nøgle hemmelig, og den offentlige nøgle er installeret på alle maskiner, der skal give adgang til ejeren. Selvom den private nøgle tjener som grundlag for godkendelse, sendes nøglen aldrig over netværket, når der udføres godkendelse. SSH bekræfter, at den offentlige nøgles udbyder også har den tilsvarende private nøgle.
Det er afgørende at forbinde den ukendte offentlige nøgle med en kendt privat nøgle i alle versioner af SSH, før de accepteres som legitime offentlige nøgler med ID'er. Accept af en offentlig nøgle fra en angriber uden at validere den vil acceptere en angriber, der ikke er tillid til, som en legitim bruger.
Skabelse
Tatu Ylönen, en datalog fra Finland, skabte SSH for første gang i 1995. Protokolpakkens videreudvikling fandt sted i mange udviklergrupper, hvilket førte til forskellige implementeringsgentagelser. Der er implementeringer tilgængelige for alle populære operativsystemer, inklusive indlejrede systemer. OpenSSH, som skaberne af OpenBSD gjorde tilgængelig som open source-software i 1999, er den mest brugte softwarestack.
Håndtering af OpenSSH-nøgler til godkendelse
Den godkendte offentlige nøgleliste opbevares almindeligvis på Unix-lignende systemer i filen ~/.ssh/autoriserede nøgler i brugerens hjemmemappe, som har fjernlogin-rettigheder. SSH respekterer kun denne fil, hvis den ikke kan ændres af andre end ejeren og rooten. Adgangskoden er ikke længere nødvendig, når både den eksterne endes offentlige nøgle og den lokale endes matchende private nøgle er til stede. Men vi kan bruge en adgangssætning til at låse den private nøgle for meget mere beskyttelse. Vi kan også søge i den hemmelige kode på almindelige steder, og vi kan bruge en kommandolinjemulighed til at angive dens komplette sti (option -i for ssh).
SSH giver yderligere automatiseret nøglegenerering, krypteret adgangskodebaseret godkendelse. Angriberen i dette scenarie kan efterligne den troværdige serverside, anmode om adgangskoden og få den (man-in-the-middle-angreb). På serversiden kan vi slå adgangskodegodkendelse fra.
Brug
SSH bruger klient-server-paradigmet. Typisk bruges SSH til logning. Den kan også tunnelere TCP-porte, videresende X11-forbindelser og udføre kommandoer på et fjernsystem. Typisk oprettes forbindelser til en SSH-dæmon, der tillader fjernforbindelser, ved hjælp af en SSH-klientapplikation. Begge findes ofte på de fleste moderne operativsystemer, såsom macOS, Linux-distributioner, OpenBSD, FreeBSD, NetBSD, Solaris og OpenVMS. Nogle versioner er proprietære, freeware og open source med varierende grader af kompleksitet og omfattendehed (såsom PuTTY og versionen af OpenSSH inkluderet med Cygwin og OpenSSH). Navnlig er SSH ikke inkluderet som standard i Windows-versioner indtil Windows 10 version 1709.
Lignende filhåndteringsfunktionalitet (synkronisering, kopiering og fjernsletning) tilbydes af den gratis og open source Windows-applikation WinSCP, som bruger PuTTY som back-end. Uden at skulle installeres på klientcomputeren, er WinSCP og PuTTY tilgængelige pakket til at betjene direkte fra et USB-drev. Aktivering af en funktion i indstillingsappen er ofte påkrævet for at konfigurere en SSH-server i Windows.
For at håndtere forbindelsesproblemer og forhindre sikkerhedsrisici ved direkte at udsætte en cloud-baseret virtuel maskine til internettet, er SSH afgørende i cloud computing. En sikker forbindelse over internettet kan gøres mulig gennem en virtuel SSH-tunnelcomputer via en firewall. Til denne protokol har IANA udpeget TCP-port 22, UDP-port 22 og SCTP-port 22.
Allerede i 2001 klassificerede IANA standard TCP-port 22 til SSH-servere som en af de velkendte porte. Den forbindelsesorienterede transportlagsprotokol SCTP kan bruges til at køre SSH i stedet for TCP.
Historisk Fremskridt
Gentagelse 1
Et password-sniffende angreb på netværket af hans institution inspirerede Tatu Ylönen, en forsker ved Helsinki University of Technology i Finland, skabte den første iteration af protokollen (i dag kendt som SSH-1) i 1995.
SSH blev designet til at tage rollen som tidligere protokoller, herunder rlogin, TELNET, FTP og rsh, som manglede robuste autentificerings- og hemmeligholdelsesgarantier. Ylönen gjorde sin applikation tilgængelig som freeware. I juli 1995 blev enheden hurtigt vellidt. Ved udgangen af 1995 var der 20.000 SSH-brugere fordelt på 50 forskellige nationer.
For at fremme og fremme SSH etablerede Ylönen SSH Communications Security i december 1995. Forskellige gratis softwarekomponenter, inklusive GNU libgmp, blev brugt i SSH-programmets første udgivelse, men senere iterationer leveret af SSH Communications Security voksede til stadig mere proprietær software. Ifølge skøn var der 2 millioner brugere i år 2000.
Gentagelse 2
Internet Engineering Task Force (IETF) udpegede arbejdsgruppen med ansvar for at skabe SSH-protokol version 2 som 'Secsh' i sin officielle dokumentation.
SSH-2, en forbedret protokoliteration, blev en standard i 2006. SSH-1 er ikke kompatibel med denne version. SSH-2 tilbyder funktionalitet og sikkerhedsopgraderinger i forhold til SSH-1. For eksempel giver Diffie-Hellman nøgleudveksling og robust integritetsverifikation via meddelelsesgodkendelseskoder højere sikkerhed. Evnen til at betjene et ubegrænset antal shell-sessioner over en enkelt SSH-forbindelse er en af SSH-2's nye muligheder. Fordi SSH-2 er mere avanceret og udbredt end SSH-1, understøtter visse implementeringer, såsom libssh (v0.8.0+), Lsh og Dropbear, kun SSH-2.
Iteration 1,99
RFC 4253 krævede, at en SSH-server, der understøttede 2.0, såvel som tidligere versioner, skulle angive sin protokolversion som 1.99 i januar 2006, længe efter at version 2.1 blev udviklet. Dette versionsnummer bruges til at angive bagudkompatibilitet i stedet for at repræsentere en tidligere softwarerevision.
java omrøring til int
OSSH og OpenSSH
Siden den sidste version af det originale SSH-program, version 1.2.12, blev distribueret under en open source-licens i 1999, har udviklere arbejdet på en gratis softwareversion. Dette blev brugt som grundlag for Björn Grönvalls OSSH-program. Kort efter klonede OpenBSD-teamet Grönvalls arbejde med at producere OpenSSH, som var inkluderet i OpenBSD Release 2.6. De skabte en 'portabilitets'-gren fra denne version for at overføre OpenSSH til forskellige operativsystemer.
Den mest udbredte SSH-implementering i 2005 var OpenSSH, standardversionen i mange operativsystemdistributioner. Efter at have fjernet SSH-1-understøttelse fra kodebasen i OpenSSH 7.6-udgivelsen, bliver OpenSSH stadig opdateret og understøtter SSH-2-protokollen. I mellemtiden er OSSH ikke længere relevant.
Bruger
Brugeren 'josh' 'SSHed' fra den lokale computer 'foo fighter' til den fjerne maskine 'tengwar' for at køre xeyes som et eksempel på tunnelering af et X11-program gennem SSH. Folk bruger Windows SSH-klient PuTTY til at få adgang til OpenWrt.
liste metoder java
SSH er en protokol, der fungerer med mange systemer, inklusive Microsoft Windows og de fleste Unix-variationer (Linux, BSD'er, inklusive Apples macOS og Solaris). Følgende apps kan have brug for funktioner, der er eksklusive for eller kompatible med bestemte SSH-klienter eller -servere. For eksempel er det i øjeblikket kun muligt at bruge OpenSSH-serveren og klientimplementeringen af SSH-protokollen til at konstruere en VPN.
- For at få adgang til en shell på en fjern vært (erstatter Telnet og rlogin)
- Til at udføre en ensom kommando på en fjern vært (erstatter rsh)
- Til konfiguration af en fjern servers automatiske (adgangskodeløse) login (for eksempel ved hjælp af OpenSSH)
- Som en fuldt funktionel krypteret VPN skal du huske på, at kun OpenSSH-klienten og serveren understøtter denne funktion.
- Til transmission af X fra en fjern vært (mulig gennem flere mellemværter)
- Til brug af SSH-klienter, der understøtter SOCKS-protokollen til at surfe på internettet via en krypteret proxyforbindelse.
- Til sikker montering af en ekstern servers mappe som et filsystem på en lokal maskine, der anvender SSHFS.
- Gennem en eller flere af de ovennævnte teknologier til automatisk fjernserverovervågning og -administration.
- Til SSH-kompatibel udvikling af mobil eller indlejret enhed.
- For at beskytte filoverførselsmekanismer.
Overførselsmetoder til filer
Flere filoverførselssystemer anvender Secure Shell-protokoller som f.eks
- Over SSH er Secure Copy (SCP) udviklet fra RCP-protokollen.
- rsync, som formodes at være mere effektivt end SCP, drives ofte gennem en SSH-forbindelse.
- Et alternativ til FTP, der er sikkert, er SSH File Transfer Protocol (SFTP) (ikke at forveksle med FTP over SSH eller FTPS)
- FISH, eller filer overført over shell-protokol, blev introduceret i 1998 og udviklet fra SSH over Unix shell instruktioner.
- Aspera, også kendt som Fast and Secure Protocol (FASP), anvender SSH til kommando og til datatransport, UDP-porte.
Arkitektur
Tre forskellige komponenter udgør SSH-protokollens lagdelte arkitektur:
- Transmission Control Protocol (TCP) af TCP/IP bruges almindeligvis af transportlaget (RFC 4253), med portnummer 22 afsat som en server-lytteport. Dette lag implementerer kryptering, komprimering, integritetskontrol, indledende nøgleudveksling og servergodkendelse. Selvom hver implementering muligvis giver mulighed for mere, udsætter den for det højere lag en grænseflade til at sende og modtage klartekstpakker på op til 32.768 bytes hver. Normalt, efter at 1 GB data er blevet transporteret eller efter en time er gået, alt efter hvad der kommer først, sørger transportlaget for genudveksling af nøgler.
- Klientgodkendelse håndteres via brugergodkendelseslaget (RFC 4252), som også tilbyder adskillige autentificeringsteknikker. Klientdrevet godkendelse betyder, at SSH-klienten, ikke serveren, kan bede brugeren om en adgangskode. Kun klientens anmodninger om godkendelse modtager et svar fra serveren. Følgende brugergodkendelsesteknikker bruges ofte:
Adgangskode , en simpel adgangskodegodkendelsesteknik, der inkluderer muligheden for at ændre adgangskoden. Ikke al software bruger denne teknik. - Normalt understøtter mindst DSA-, ECDSA- eller RSA-nøglepar offentlig nøgle er en teknik til offentlig-nøgle-baseret godkendelse. Andre implementeringer accepterer desuden X.509-certifikater.
- Single sign-on-funktionalitet til SSH-sessioner leveres via GSSAPI autentificeringsteknikker, som tilbyder et system, der kan udvides til at håndtere SSH-godkendelse ved hjælp af eksterne mekanismer som Kerberos 5 eller NTLM. Selvom OpenSSH har en funktionel GSSAPI-implementering, integrerer kommercielle SSH-implementeringer ofte disse teknikker til brug i virksomheder.
- Ideen med kanaler, der definerer de tilbudte SSH-tjenester, er defineret af forbindelseslaget (RFC 4254). Vi kan multiplekse flere SSH-forbindelser fra en enkelt. Begge sender data i begge retninger. Kanalanmodninger transmitterer data uden for båndet, der er specifikke for en given kanal, såsom en server-sideprocess exitkode eller et terminalvindues størrelsesændring. Derudover styrer hver kanal sit flow ved hjælp af modtagevinduets størrelse. SSH-klienten laver en global anmodning om at videresende en port på serversiden. Kanaltyper, der er almindelige, omfatter:
- Shell til SFTP, exec og terminal shells (inklusive SCP-overførsler)
- Direct-TCPIP for videresendte forbindelser fra klienten til serveren.
- Server-til-klient videresendte forbindelser ved hjælp af forwarded-tcpip
- For at bekræfte værtens legitimitet tilbyder SSHFP DNS-posten (RFC 4255) den offentlige værtsnøgle fingeraftryk.
På grund af dets åbne design kan vi bruge SSH til en lang række opgaver ud over at sikre skaller, hvilket giver den stor alsidighed.
Sårbarheder
SSH-1
På grund af utilstrækkelig dataintegritetsbeskyttelse leveret af CRC-32 i denne protokolversion, blev der identificeret en sårbarhed i SSH 1.5 i 1998, som tillod uautoriseret indsættelse af materiale i en krypteret SSH-strøm. I de fleste implementeringer tilføjede de en patch kendt som SSH Compensation Attack Detector. Flere af disse reviderede implementeringer inkluderede en ny heltalsoverløbsfejl, der gør det muligt for angribere at køre vilkårlig kode med root eller SSH-dæmonens muligheder.
En fejl, der gør det muligt for angribere at ændre den sidste blok af en IDEA-krypteret session, blev fundet i januar 2001. En anden fejl, der gjorde det muligt for en useriøs server at videregive et klientlogin til en anden server, blev fundet i samme måned.
På grund af dets iboende sårbarheder betragtes SSH-1 generelt som værende forældet og bør undgås ved eksplicit at fjerne SSH-1 fallback. De fleste nuværende servere og klienter understøtter SSH-2.
Plaintext Recovery for CBC
En teoretisk sårbarhed, der gjorde det muligt at hente op til 32 bit almindelig tekst fra en blok af chiffertekst krypteret ved hjælp af tidens standard krypteringsmetode, CBC, blev opdaget i alle versioner af SSH i november 2008. Den enkleste løsning er at skifte til CTR, tæller tilstand, i stedet for CBC-tilstand, som gør SSH immun over for angrebet.
NSA mistænkt for dekryptering
Edward Snowdens udgivelse af følsomme dokumenter til Der Spiegel den 28. december 2014 antyder, at National Security Agency potentielt vil være i stand til at afkode visse SSH-kommunikationer.