SSH

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 12. juni 2019; checks kræver 23 redigeringer .
SSH
Navn Sikker Shell
Niveau (ifølge OSI-modellen ) Anvendt
Familie TCP/IP
Port/ID 22/ TCP
Formål med protokollen Fjernadgang
Specifikation RFC 4251
Vigtigste implementeringer (klienter) OpenSSH , PuTTY / KitTY , SecureCRT , Xshell
Kerneimplementeringer ( servere ) ÅbnSSH
 Mediefiler på Wikimedia Commons

SSH ( eng.  Security Shell  - "secure shell" [ 1 ] ) er en applikationslagnetværksprotokol, der giver dig mulighed for at fjernstyre operativsystemet og tunnel TCP - forbindelser (for eksempel for at overføre filer). Ligner funktionaliteten til Telnet- og rlogin-protokollerne , men krypterer i modsætning til dem al trafik, inklusive overførte adgangskoder . SSH tillader et valg af forskellige krypteringsalgoritmer. SSH - klienter og SSH - servere er tilgængelige for de fleste netværksoperativsystemer.

SSH giver dig mulighed for sikkert at overføre næsten enhver anden netværksprotokol i et usikkert miljø . Du kan således ikke kun arbejde eksternt på en computer gennem en kommandoskal , men også transmittere en lydstrøm eller video over en krypteret kanal (for eksempel fra et webcam ) [2] . SSH kan også bruge komprimering af transmitterede data til efterfølgende kryptering, hvilket er praktisk, for eksempel til fjernstart af X Window System- klienter .

De fleste hostingudbydere giver kunderne SSH - adgang til deres hjemmemappe mod et gebyr. Dette kan være praktisk både til at arbejde på kommandolinjen og til fjernstart af programmer (inklusive grafiske applikationer).

Teknisk information om protokollen

SSH er en applikationslagsprotokol. SSH-serveren lytter typisk efter forbindelser på TCP-port 22. SSH-2-protokolspecifikationen er i RFC 4251 . Til servergodkendelse bruger SSH en partgodkendelsesprotokol baseret på RSA eller DSA digital signaturalgoritmer , men adgangskodegodkendelse (bagudkompatibel tilstand med Telnet ) og endda værts-IP-adresse (bagudkompatibel tilstand med rlogin ) er også tilladt.

  1. Adgangskodegodkendelse er den mest almindelige. Ligesom https genererer hver forbindelse en delt hemmelig nøgle til at kryptere trafikken.
  2. Med nøglepar-godkendelse er et par offentlige og private nøgler prægenereret til en specifik bruger. På den maskine, du vil oprette forbindelse fra, er den private nøgle gemt, og på den eksterne maskine den offentlige nøgle. Disse filer overføres ikke under godkendelse, systemet kontrollerer kun, at ejeren af ​​den offentlige nøgle også ejer den private. Med denne tilgang konfigureres som regel automatisk login på vegne af en specifik bruger i OS .
  3. Autentificering med ip-adresse er ikke sikker, denne funktion er oftest deaktiveret.

Diffie-Hellman (DH) algoritmen bruges til at skabe en delt hemmelighed (sessionsnøgle ). De transmitterede data krypteres ved hjælp af symmetrisk kryptering , AES , Blowfish eller 3DES algoritmer . Dataoverførselsintegriteten kontrolleres ved hjælp af CRC32 i SSH1 eller HMAC - SHA1 / HMAC - MD5 i SSH2.

For at komprimere de krypterede data kan LempelZiv ( LZ77 ) algoritmen bruges, som giver samme niveau af komprimering som ZIP arkiver . SSH-komprimering er kun aktiveret efter anmodning fra klienten og bruges sjældent i praksis.

Historie og udvikling

Version 1.x

I 1995 udviklede Tatu Ylönen , en forsker ved Helsinki University of Technology, Finland, den første version af protokollen (nu kaldet SSH-1), udløst af et password mining-angreb på hans universitetsnetværk. Målet med SSH var at erstatte de tidligere protokoller rlogin, TELNET, FTP [16] og rsh, som ikke gav stærk autentificering og privatliv. Ylönen udgav sin implementering som gratis software i juli 1995, og værktøjet vandt hurtigt popularitet. Ved udgangen af ​​1995 var SSH-brugerbasen vokset til 20.000 brugere i halvtreds lande.

I december 1995 grundlagde Ylönen SSH Communications Security for at fremme og udvikle SSH. Den originale version af SSH-softwaren brugte forskellige stykker gratis software såsom GNU libgmp, men senere versioner udgivet af SSH Communications Security har udviklet sig til stadig mere proprietær software.

Det blev anslået, at i 2000 var antallet af brugere vokset til 2 millioner.

Version 2.x

"Secsh" var det officielle navn på Internet Engineering Task Force (IETF) for IETF-arbejdsgruppen, der var ansvarlig for version 2 af SSH-protokollen. I 2006 blev en opdateret version af SSH-2-protokollen vedtaget som standard. Denne version er inkompatibel med SSH-1. SSH-2 har både sikkerhed og forbedrede funktioner i forhold til SSH-1. For eksempel opnås bedre sikkerhed gennem Diffie-Hellman nøgleudveksling og stærk integritetskontrol med meddelelsesgodkendelseskoder. Nye SSH-2-funktioner inkluderer muligheden for at starte et hvilket som helst antal shell-sessioner over en enkelt SSH-forbindelse. På grund af SSH-2's overlegenhed og popularitet i forhold til SSH-1, understøtter nogle implementeringer såsom libssh (v0.8.0+), Lsh og Dropbear kun SSH-2-protokollen.

Version 1.99

I januar 2006, længe efter at version 2.1 blev oprettet, specificerede RFC 4253, at en SSH-server, der understøtter både 2.0 og tidligere versioner af SSH, skulle identificere sin prototypeversion som 1.99. Dette er ikke en opdateret version, men en metode til at bestemme bagudkompatibilitet.

OpenSSH og OSSH

I 1999 vendte udviklerne, som ønskede en gratis version af softwaren, tilbage til den gamle udgivelse 1.2.12 af det originale SSH-program, som sidst blev udgivet under en open source-licens. Bjorn Grönwalls OSSH blev efterfølgende udviklet ud fra denne kodebase. Kort efter delte OpenBSD -udviklerne grønlandskoden og arbejdede meget på den, og skabte OpenSSH , som blev leveret med 2.6-versionen af ​​OpenBSD. Fra denne version blev der dannet en "portabilitets"-gren for at portere OpenSSH til andre operativsystemer.

Fra 2005 var OpenSSH den mest populære implementering af SSH, inkluderet som standard på et stort antal operativsystemer. OSSH er udfaset i mellemtiden. OpenSSH er fortsat understøttet og understøtter SSH-2-protokollen, hvilket dropper understøttelse af SSH-1 fra kodebasen med udgivelsen af ​​OpenSSH 7.6 .

Standarder og softwareimplementeringer

Den første version af protokollen, SSH-1, blev udviklet i 1995 af forsker Tatu Ulönen fra Helsinki University of Technology ( Finland ). SSH-1 blev skrevet til at være mere privat end rlogin-, telnet- og rsh-protokollerne. I 1996 blev der udviklet en mere sikker version af protokollen, SSH-2, som er inkompatibel med SSH-1. Protokollen vandt endnu mere popularitet, og i 2000 havde den omkring to millioner brugere. På nuværende tidspunkt refererer udtrykket "SSH" normalt til SSH-2, da den første version af protokollen på grund af betydelige mangler nu praktisk talt ikke bruges.

I 2006 blev protokollen godkendt af IETF -arbejdsgruppen som en internetstandard.

To implementeringer af SSH er almindelige: en privat kommerciel og en gratis. Den gratis implementering hedder OpenSSH. I 2006 brugte 80 % af computere på internettet OpenSSH. En privat implementering udvikles af SSH Communications Security, et helejet datterselskab af Tectia [3] , og er gratis til ikke-kommerciel brug. Disse implementeringer indeholder næsten det samme sæt instruktioner.

SSH-1-protokollen, i modsætning til telnet -protokollen , er modstandsdygtig over for trafik-sniffing-angreb (" sniffing "), men er ikke modstandsdygtig over for man-in-the-middle- angreb . SSH-2-protokollen er også modstandsdygtig over for angreb ved at deltage i midten ( engelsk  session hijacking ), da det er umuligt at deltage i en allerede etableret session eller opsnappe den.

For at forhindre man-in-the-middle- angreb viser klientsoftwaren brugeren et nøglefingeraftryk , når der oprettes forbindelse til en vært , hvis nøgle endnu ikke er kendt af klienten . Det anbefales omhyggeligt at sammenligne "nøglecastet" vist af klientsoftwaren med servernøglecastet, fortrinsvis opnået via pålidelige kommunikationskanaler eller personligt.  

SSH-understøttelse er tilgængelig på alle UNIX - lignende systemer, og de fleste af dem har en ssh-klient og -server som standardværktøjer. Der er også mange implementeringer af SSH-klienter til ikke-UNIX-operativsystemer. Protokollen vandt stor popularitet efter den udbredte udvikling af trafikanalysatorer og metoder til at forstyrre driften af ​​lokale netværk, som et alternativ til den usikre Telnet -protokol til styring af vigtige noder.

SSH kræver en SSH-server og en SSH-klient. Serveren lytter efter forbindelser fra klientmaskiner og, når en forbindelse er etableret, udfører den autentificering , hvorefter den begynder at servicere klienten. Klienten bruges til at logge ind på en ekstern maskine og udføre kommandoer.

For at oprette forbindelse skal serveren og klienten oprette nøglepar – offentlige og private – og udveksle offentlige nøgler. Normalt bruges også en adgangskode.

SSH-servere

SSH-klienter og -skaller

SSH-sikkerhedstips

  1. Forbud mod ekstern root- adgang.
  2. Forbyd forbindelse med en tom adgangskode eller deaktiver adgangskodelogin.
  3. Valg af en ikke-standard port til SSH-serveren.
  4. Brug af lange SSH2 RSA- nøgler (2048 bit eller mere). RSA -baserede krypteringssystemer betragtes som sikre, hvis nøglelængden er mindst 1024 bit [5] .
  5. Begrænsning af listen over IP-adresser , hvorfra adgang er tilladt (f.eks. ved at opsætte en firewall ).
  6. Forbud mod adgang fra nogle potentielt farlige adresser.
  7. Undgå at bruge almindelige eller velkendte systemlogins til SSH - adgang .
  8. Gennemgå jævnligt godkendelsesfejlmeddelelser .
  9. Installation af Intrusion Detection Systems (IDS) .
  10. Brug af kroge, der forfalsker en SSH-tjeneste ( honeypot ) .
  11. Teknologiimplementering.

Eksempler på brug af SSH

Kommandoen til at oprette forbindelse til en lokal SSH-server fra GNU/Linux- eller FreeBSD-kommandolinjen for pacify-brugeren (serveren lytter på den ikke-standardiserede port 30000):

$ ssh -p 30000 pacify@127.0.0.1

Nøglepargenerering (i UNIX-lignende OS) udføres af kommandoen

$ ssh-keygen

Generering af et par SSH-2 RSA-nøgler med en længde på 4096 bit af puttygen under UNIX-lignende OS:

$ puttygen -t rsa -b 4096 -o prøve

Nogle klienter, såsom PuTTY, har også en grafisk brugergrænseflade .

For at bruge SSH i Python er der moduler som python-paramiko og python-twisted-conch.

SSH tunneling

En SSH-tunnel er en tunnel skabt over en SSH-forbindelse og bruges til at kryptere de tunnelerede data. Bruges til at sikre datatransmission på internettet ( IPsec har et lignende formål ). Når den videresendes gennem en SSH-tunnel, krypteres ukrypteret trafik af enhver protokol i den ene ende af SSH-forbindelsen og dekrypteres i den anden.

Den praktiske implementering kan ske på flere måder:

$ ssh -L 4430 :jabber.example.com:443 somehost

I dette tilfælde er Jabber-klienten konfigureret til at oprette forbindelse til port 4430 på localhost-serveren (hvis ssh-klienten kører på samme maskine som Jabber-klienten).

For at oprette en ssh-tunnel skal du bruge en maskine med en kørende ssh-server og adgang til jabber.example.com. Denne konfiguration kan bruges, hvis adgang til jabber.example.com fra den lokale maskine er blokeret af en firewall, men der er adgang til en eller anden ssh-server, der ikke har internetadgangsbegrænsninger.

Se også

Noter

  1. Oversættelsesmulighed fra Yu. A. Semyonov Arkiveksemplar af 2. februar 2008 på Wayback Machine
  2. Dette bruger Port Forwarding Arkiveret 16. december 2005 på Wayback Machine TCP- forbindelser .
  3. Om SSH Communications Security Arkiveret 9. juli 2012 på Wayback Machine 
  4. Instruktioner til installation af en ssh-server til Windows via Cygwin (utilgængeligt link) . Dato for adgang: 27. januar 2009. Arkiveret fra originalen 20. januar 2009. 
  5. CyberSecurity.ru: "768-bit RSA-nøgle blev knækket med succes" Arkiveret 14. januar 2010 på Wayback Machine . 01/08/2010

Links

Standarder
  • RFC 4250 - The Secure Shell  (  SSH) Protocol Assigned Numbers
  • RFC 4251   - The Secure Shell (SSH) Protocol Architecture
  • RFC 4252   - The Secure Shell (SSH) Authentication Protocol
  • RFC 4253 - The Secure Shell  (  SSH) Transport Layer Protocol
  • RFC 4254   - The Secure Shell (SSH) Connection Protocol
  • RFC 4255  -  Brug af DNS til sikker publicering af Secure Shell (SSH) nøglefingeraftryk
  • RFC 4256  -  Generisk meddelelsesudvekslingsgodkendelse til Secure Shell Protocol (SSH)
  • RFC 4335 - The Secure Shell  (  SSH) Session Channel Break Extension
  • RFC 4344   - The Secure Shell (SSH) Transport Layer Encryption Modes
  • RFC 4345  -  Forbedrede Arcfour-tilstande til Secure Shell (SSH) Transport Layer Protocol
  • RFC 4419  -  Diffie-Hellman Group Exchange for Secure Shell (SSH) Transport Layer Protocol
  • RFC 4432  -  RSA Key Exchange for Secure Shell (SSH) Transport Layer Protocol
  • RFC 4716 - The Secure Shell  (  SSH) Public Key File Format
SSH klienter
  • OpenSSH  er et gratis bibliotek og et sæt værktøjer til at understøtte kryptering
  • PuTTY  er en populær SSH-klient på tværs af platforme.
  • https://serverauditor.com/ - populær mobil SSH-klient på tværs af platforme (Android, iOS, Google Chrome)
  •  Sammenligning af SSH-klienter
Programmer til filadgang Andet