OpenSSH - OpenSSH
|
"Uw communiqués geheim houden"
| |
| Ontwikkelaar(s) | Het OpenBSD- project |
|---|---|
| Eerste uitgave | 1 december 1999 |
| Stabiele vrijlating | 8.8 / 26 september 2021
|
| Opslagplaats | github |
| Geschreven in | C |
| Besturingssysteem | Cross-platform |
| Standaard (en) | RFC 4250, RFC 4251, RFC 4252, RFC 4253, RFC 4254, RFC 4255, RFC 4256, RFC 4335, RFC 4344, RFC 4345, RFC 4419, RFC 4462, RFC 5656, RFC 6594, RFC 6668, RFC 7479 |
| Type | Toegang op afstand |
| Vergunning | BSD , ISC , publiek domein |
| Website | www |
OpenSSH (ook bekend als OpenBSD Secure Shell ) is een suite van veilige netwerkhulpprogramma 's op basis van het Secure Shell (SSH) -protocol, dat een veilig kanaal biedt over een onbeveiligd netwerk in een client-serverarchitectuur .
OpenSSH begon als een afsplitsing van het gratis SSH-programma ontwikkeld door Tatu Ylönen; latere versies van Ylönen's SSH waren propriëtaire software die werd aangeboden door SSH Communications Security . OpenSSH werd voor het eerst uitgebracht in 1999 en wordt momenteel ontwikkeld als onderdeel van het OpenBSD- besturingssysteem .
OpenSSH is geen enkel computerprogramma, maar eerder een reeks programma's die dienen als alternatief voor niet-versleutelde protocollen zoals Telnet en FTP . OpenSSH is geïntegreerd in verschillende besturingssystemen, namelijk Microsoft Windows , macOS en de meeste Linux- besturingssystemen, terwijl de draagbare versie als pakket beschikbaar is in andere systemen.
Geschiedenis
OpenBSD Secure Shell is gemaakt door OpenBSD- ontwikkelaars als alternatief voor de originele SSH-software van Tatu Ylönen, die nu propriëtaire software is . Hoewel de broncode beschikbaar is voor de originele SSH, worden er verschillende beperkingen opgelegd aan het gebruik en de distributie ervan. OpenSSH is gemaakt als een fork van OSSH van Björn Grönvall, dat zelf een fork was van Tatu Ylönen's originele gratis SSH 1.2.12-release, de laatste met een licentie die geschikt was voor forking. De OpenSSH-ontwikkelaars beweren dat hun applicatie veiliger is dan het origineel, vanwege hun beleid om schone en gecontroleerde code te produceren en omdat het is vrijgegeven onder de BSD-licentie , de open-sourcelicentie waarnaar het woord open in de naam verwijst.
OpenSSH verscheen voor het eerst in OpenBSD 2.6. De eerste draagbare versie werd uitgebracht in oktober 1999. De ontwikkelingen sindsdien omvatten de toevoeging van cijfers (bijv. chacha20 - poly1305 in 6.5 van januari 2014), het verminderen van de afhankelijkheid van OpenSSL (6,7, oktober 2014) en een uitbreiding om openbare- sleuteldetectie en -rotatie voor vertrouwde hosts (voor overgang van DSA naar Ed25519 openbare hostsleutels , versie 6.8 van maart 2015).
Op 19 oktober 2015 heeft Microsoft aangekondigd dat OpenSSH native wordt ondersteund op Microsoft Windows en toegankelijk zal zijn via PowerShell , waardoor een vroege implementatie wordt vrijgegeven en de code openbaar beschikbaar wordt gemaakt. Op OpenSSH gebaseerde client- en serverprogramma's zijn sinds versie 1803 opgenomen in Windows 10. De SSH-client en key-agent zijn standaard ingeschakeld en beschikbaar, en de SSH-server is een optionele Feature-on-Demand.
In oktober 2019 werden in OpenSSH 8.1 bescherming voor private sleutels in het RAM-geheugen tegen speculatie en geheugen- side-channel-aanvallen toegevoegd.
Ontwikkeling
OpenSSH is ontwikkeld als onderdeel van het OpenBSD- besturingssysteem . In plaats van wijzigingen voor andere besturingssystemen direct in OpenSSH op te nemen, wordt een aparte portabiliteitsinfrastructuur onderhouden door het OpenSSH Portability Team, en worden er periodiek "portable releases" uitgebracht. Deze infrastructuur is aanzienlijk, deels omdat OpenSSH vereist is om authenticatie uit te voeren , een mogelijkheid die veel verschillende implementaties kent. Dit model wordt ook gebruikt voor andere OpenBSD-projecten zoals OpenNTPD .
De OpenSSH-suite bevat de volgende hulpprogramma's en daemons voor de opdrachtregel :
- scp , een vervanging voor rcp .
- sftp , een vervanging voor ftp om bestanden tussen computers te kopiëren.
- ssh , een vervanging voor rlogin , rsh en telnet om shell- toegang tot een externe machine mogelijk te maken.
- ssh-add en ssh-agent , hulpprogramma's om authenticatie te vergemakkelijken door sleutels bij de hand te houden en te voorkomen dat wachtwoordzinnen moeten worden ingevoerd telkens wanneer ze worden gebruikt.
- ssh-keygen , een tool voor het inspecteren en genereren van de RSA- , DSA- en elliptische-curvesleutels die worden gebruikt voor gebruikers- en hostauthenticatie .
- ssh-keyscan , die een lijst met hosts scant en hun openbare sleutels verzamelt.
- sshd , de SSH-serverdaemon.
De OpenSSH-server kan gebruikers authenticeren met behulp van de standaardmethoden die worden ondersteund door het ssh- protocol: met een wachtwoord; authenticatie met openbare sleutels , met behulp van sleutels per gebruiker; host-gebaseerde authenticatie, wat een veilige versie is van de host-vertrouwensrelaties van rlogin met behulp van openbare sleutels; toetsenbord-interactief, een generiek uitdaging-antwoordmechanisme , dat vaak wordt gebruikt voor eenvoudige wachtwoordauthenticatie, maar dat ook gebruik kan maken van sterkere authenticators zoals tokens ; en Kerberos / GSSAPI . De server maakt gebruik van authenticatiemethoden die eigen zijn aan het hostbesturingssysteem; dit kan het gebruik van het BSD-authenticatiesysteem of pluggable authenticatiemodules (PAM) omvatten om aanvullende authenticatie mogelijk te maken via methoden zoals eenmalige wachtwoorden . Dit heeft echter af en toe bijwerkingen: bij gebruik van PAM met OpenSSH moet het worden uitgevoerd als root , aangezien root-privileges doorgaans vereist zijn om PAM te bedienen. OpenSSH-versies na 3.7 (16 september 2003) staan toe dat PAM tijdens runtime wordt uitgeschakeld, zodat gewone gebruikers sshd-instanties kunnen uitvoeren.
Op OpenBSD gebruikt OpenSSH standaard een toegewijde sshd- gebruiker om privileges te laten vallen en privilegescheiding uit te voeren in overeenstemming met het principe van de minste privileges , toegepast door het hele besturingssysteem, inclusief de Xenocara X-server .
Functies
OpenSSH omvat de mogelijkheid om een beveiligd kanaal op te zetten waardoor gegevens die naar lokale Unix-domeinsockets aan de clientzijde of lokale TCP- poorten aan de clientzijde worden verzonden, kunnen worden " doorgestuurd " (verzonden over het beveiligde kanaal) voor routering aan de serverzijde; wanneer dit doorsturen is ingesteld, krijgt de server de opdracht om die doorgestuurde gegevens naar een socket of TCP-host/poort te sturen (de host kan de server zelf zijn, "localhost"; of de host kan een andere computer zijn, zodat het voor de andere computer lijkt dat de server de maker van de gegevens is). Het doorsturen van gegevens is bidirectioneel, wat betekent dat elke retourcommunicatie zelf op dezelfde manier terug naar de client wordt doorgestuurd; dit staat bekend als een " SSH-tunnel " en kan sinds 2004 worden gebruikt om extra TCP-verbindingen via een enkele SSH-verbinding te multiplexen, verbindingen te verbergen, protocollen te versleutelen die anders onbeveiligd zijn en om firewalls te omzeilen door op alle mogelijke manieren te verzenden/ontvangen van gegevens via één poort die is toegestaan door de firewall. Er kan bijvoorbeeld automatisch een X Window System- tunnel worden gemaakt wanneer OpenSSH wordt gebruikt om verbinding te maken met een externe host, en andere protocollen, zoals HTTP en VNC , kunnen eenvoudig worden doorgestuurd.
Tunneling van een TCP- inkapseling van payload (zoals PPP ) via een TCP-gebaseerde verbinding (zoals SSH's port forwarding ) staat bekend als "TCP-over-TCP", en dit kan leiden tot een dramatisch verlies in transmissieprestaties (een bekend probleem als "TCP meltdown"), wat de reden is waarom virtual private network software in plaats daarvan voor de tunnelverbinding een protocol kan gebruiken dat eenvoudiger is dan TCP. Dit is echter vaak geen probleem bij het gebruik van OpenSSH's port forwarding, omdat veel use-cases geen TCP-over-TCP-tunneling met zich meebrengen; de meltdown wordt vermeden omdat de OpenSSH-client de lokale, client-side TCP-verbinding verwerkt om bij de daadwerkelijke payload te komen die wordt verzonden, en die payload vervolgens rechtstreeks via de eigen TCP-verbinding van de tunnel naar de serverzijde stuurt, waar de OpenSSH server "uitpakt" de payload op dezelfde manier om deze opnieuw te "inpakken" voor routering naar zijn eindbestemming.
Bovendien biedt sommige software van derden ondersteuning voor tunneling via SSH. Deze omvatten DistCC , CVS , rsync en Fetchmail . Op sommige besturingssystemen kunnen externe bestandssystemen via SSH worden aangekoppeld met behulp van tools zoals sshfs (met FUSE ).
Met OpenSSH kan een ad-hoc SOCKS- proxyserver worden gemaakt. Dit maakt meer flexibele proxy mogelijk dan mogelijk is met gewone port forwarding.
Vanaf versie 4.3 implementeert OpenSSH een op OSI laag 2/3 tun gebaseerde VPN . Dit is de meest flexibele tunnelingcapaciteit van OpenSSH, waardoor applicaties op transparante wijze toegang hebben tot externe netwerkbronnen zonder aanpassingen om gebruik te maken van SOCKS.
Ondersteunde typen openbare sleutels
OpenSSH ondersteunt de volgende typen openbare sleutels: ·
- ecdsa -sha2-nistp256 (sinds OpenSSH 5.7 uitgebracht in 2011)
- ecdsa -sha2-nistp384 (sinds OpenSSH 5.7)
- ecdsa -sha2-nistp521 (sinds OpenSSH 5.7)
- ecdsa -sk (sinds OpenSSH 8.2 uitgebracht in 2020)
- ed25519 -sk (sinds OpenSSH 8.2)
- ssh- ed25519 (sinds OpenSSH 6.5 uitgebracht in 2014)
- ssh- dss (uitgeschakeld tijdens runtime sinds OpenSSH 7.0 uitgebracht in 2015)
- SSH- rsa (uitgeschakeld op run-time sinds OpenSSH 8.8 uitgebracht in 2021)
- rsa -sha2-256 (sinds OpenSSH 7.2 uitgebracht in 2016)
- rsa -sha2-512 (sinds OpenSSH 7.2)
Kwetsbaarheden
Vóór versie 5.2 van openssh was het voor een aanvaller mogelijk om tot 14 bits leesbare tekst te herstellen met een succeskans van 2 −14 . De kwetsbaarheid hield verband met de CBC-coderingsmodus. De AES CTR-modus en arcfour-coderingen zijn niet kwetsbaar voor deze aanval.
Er was een kwetsbaarheid voor lokale privilege-escalatie in OpenSSH 6.8 tot 6.9 ( CVE - 2015-6565 ) vanwege wereldwijd beschrijfbare (622) TTY-apparaten, waarvan werd aangenomen dat het een denial of service- kwetsbaarheid was. Met het gebruik van de TIOCSTI ioctl was het voor geauthenticeerde gebruikers mogelijk om tekens in de terminals van andere gebruikers te injecteren en willekeurige commando's op Linux uit te voeren.
Schadelijke of gecompromitteerde OpenSSH-servers kunnen gevoelige informatie op de client lezen, zoals privéaanmeldingssleutels voor andere systemen, met behulp van een kwetsbaarheid die afhankelijk is van de ongedocumenteerde functie voor het hervatten van de verbinding van de OpenSSH-client, roaming genaamd, standaard ingeschakeld op de client, maar niet ondersteund op de OpenSSH-server. Dit is van toepassing op versies 5.4 (uitgebracht op 8 maart 2010) tot 7.1 van de OpenSSH-client, en is opgelost in OpenSSH 7.1p2, uitgebracht op 14 januari 2016. CVE-nummers die aan dit beveiligingslek zijn gekoppeld, zijn CVE - 2016-0777 (informatielek) en CVE - 2016-0778 (bufferoverloop).
Handelsmerk
In februari 2001 informeerde Tatu Ylönen, voorzitter en CTO van SSH Communications Security de OpenSSH-ontwikkelmailinglijst dat het bedrijf van plan was zijn eigendom van de handelsmerken "SSH" en "Secure Shell" te doen gelden , en probeerde de verwijzingen naar het protocol te veranderen in " SecSH" of "secsh", om de controle over de naam "SSH" te behouden. Hij stelde voor dat OpenSSH de naam zou veranderen om een rechtszaak te voorkomen, een suggestie waar ontwikkelaars zich tegen verzetten. OpenSSH-ontwikkelaar Damien Miller drong er bij Ylönen op aan om het te heroverwegen, met het argument dat "SSH" al lang een generiek handelsmerk was .
Destijds waren "SSH", "Secure Shell" en "ssh" verschenen in documenten waarin het protocol werd voorgesteld als een open standaard. Zonder deze in het voorstel te markeren als geregistreerd handelsmerk, liep Ylönen het risico afstand te doen van alle exclusieve rechten op de naam als middel om het protocol te beschrijven. Onjuist gebruik van een handelsmerk, of anderen toestaan een handelsmerk verkeerd te gebruiken, leidt ertoe dat het handelsmerk een generieke term wordt, zoals Kleenex of Aspirine , waardoor het merk door anderen kan worden gebruikt. Na bestudering van de USPTO- database met handelsmerken waren veel online experts van mening dat de term "ssh" geen handelsmerk was, maar alleen het logo met de kleine letters "ssh". Bovendien wogen de zes jaar tussen de oprichting van het bedrijf en het moment waarop het zijn handelsmerk begon te verdedigen, en dat alleen OpenSSH werd gedreigd met juridische gevolgen, af tegen de geldigheid van het handelsmerk.
Beide ontwikkelaars van OpenSSH en Ylönen zelf waren lid van de IETF-werkgroep die de nieuwe standaard ontwikkelde; na verschillende bijeenkomsten weigerde deze groep Ylönen's verzoek om het protocol te hernoemen, daarbij verwijzend naar de bezorgdheid dat het een slecht precedent zou scheppen voor andere handelsmerkclaims tegen de IETF. De deelnemers voerden aan dat zowel "Secure Shell" als "SSH" generieke termen waren en geen handelsmerken konden zijn.
Zie ook
Opmerkingen:
Referenties
Externe links
- Officiële website
- – OpenBSD Algemene Commando's Handleiding
- – Handleiding voor OpenBSD Systeembeheerder
- OpenSSH bij de Super User's BSD Cross Reference (BXR.SU) OpenGrok
- SSH OpenSSH - Windows CMD - SS64.com