必威电竞|足球世界杯竞猜平台

OpenSSH
來源:互聯網

OpenSSH 是 SSH(Secure SHell)協議的免費開源實現。SSH協議族可以用來進行遠程控制,或在計算機之間傳送文件。而實現此功能的傳統方式,如telnet(終端仿真協議)、rcp ftp、rlogin、rsh都是極為不安全的,并且會使用明文傳送密碼。OpenSSH提供了服務端后臺程序和客戶端工具,用來加密遠程控制和文件傳輸過程中的數據,并由此來代替原來的類似服務。

軟件簡介

Secure Shell(安全外殼協議,簡稱SSH)是一種加密的網絡傳輸協議,可在不安全的網絡中為網絡服務提供安全的傳輸環境。SSH通過在網絡中創建安全隧道來實現SSH客戶端與服務器之間的連接。雖然任何網絡服務都可以通過SSH實現安全傳輸,SSH最常見的用途是遠程登錄系統,人們通常利用SSH來傳輸命令行界面和遠程執行命令。使用頻率最高的場合類unix系統,但是Windows操作系統也能有限度地使用SSH。2015年,微軟宣布將在未來的操作系統中提供原生SSH協議支持。在設計上,SSH是Telnet和非安全shell的替代品。Telnet和Berkeleyrlogin、rsh、rexec等協議采用明文傳輸,使用不可靠的密碼,容易遭到監聽、嗅探和中間人攻擊。SSH旨在保證非安全網絡環境(例如互聯網)中信息加密完整可靠。不過,SSH也被指出有被嗅探甚至解密的漏洞。早在2011年,中國的互聯網審查機構已經有能力針對SSH連接的刺探及干擾。而后愛德華·斯諾登泄露的文件也指出,美國國家安全局有時能夠把SSH協議傳輸的信息解密出來,從而讀出SSH會話的傳輸內容。2017年7月6日,非營利組織維基解密確認美國中央情報局已經開發出能夠在Windows或Linux操作系統中竊取SSH會話的工具。

在OpenSSH的發展歷程中,也曾發現過一些安全漏洞。例如,在OpenSSH 5.2版本之前,攻擊者可以以2?14的成功概率恢復多達14位明文。這個漏洞與CBC加密模式有關。OpenSSH 6.8到6.9存在本地特權升級漏洞(CVE-2015-6565),原因是世界可寫(622)的TTY設備,這被認為是一種拒絕服務漏洞。惡意或受損的OpenSSH服務器可以利用一個依賴于OpenSSH客戶端的未記錄的連接恢復功能的漏洞來讀取客戶端的敏感信息,這個功能稱為漫游,它默認在客戶端上啟用,但在OpenSSH服務器上不受支持。這適用于OpenSSH客戶端的5.4(2010年3月8日發布)到7.1版本,并在2016年1月14日發布的OpenSSH 7.1p2中修復。與此漏洞相關的CVE編號是CVE-2016-0777(信息泄漏)和CVE-2016-0778(緩沖區溢出)。

OpenSSH是使用SSH透過計算機網絡加密通訊的實現。它是取代由SSH Communications Security所提供的商用版本的開放源代碼方案。目前OpenSSH是OpenBSD的子計劃。OpenSSH常常被誤認以為與OpenSSL有關聯,但實際上這兩個計劃的有不同的目的,不同的發展團隊,名稱相近只是因為兩者有同樣的軟件發展目標──提供開放源代碼的加密通訊軟件。

發展歷程

OpenSSH 支持 SSH 協議的版本 1.3、1.5、和 2。自從 OpenSSH 的版本2.9以來,默認的協議是版本2,該協議默認使用 RSA 鑰匙。

OpenSSH最初是由Tatu Yl?nen開發的免費SSH程序的一個分支,后來,Yl?nen的SSH的版本成為SSH通信安全公司提供的專有軟件。OpenSSH于1999年首次發布,并目前作為OpenBSD操作系統的一部分進行開發。OpenSSH是由OpenBSD開發人員創建的,作為Tatu Yl?nen原始SSH軟件的替代品,后者現在是專有軟件。OpenSSH首次出現在OpenBSD 2.6中。第一個便攜版發布于1999年10月。此后的發展包括添加密碼、削減對OpenSSL的依賴以及擴展以便為受信任的主機進行公鑰發現和輪換。2015年10月19日,微軟宣布OpenSSH將在Microsoft Windows上獲得本地支持,并通過PowerShell訪問,發布了一個早期實現,并公開了代碼。基于OpenSSH的客戶端和服務器程序自Windows 10的1803版本以來已經包含在其中。SSH客戶端和密鑰代理默認啟用并可用,而SSH服務器是可選的按需功能。2019年10月,OpenSSH 8.1中添加了對RAM中靜止的私鑰的保護,以防止猜測和內存側信道攻擊。

服務與功能

OpenSSH服務,sshd,是一個典型的獨立守護進程(standalone daemon),但也可以根據需要通過網絡守護進程(Internet Daemon)-inetd(注3)或Ineternet Daemon's more modern-xinted加載。OpenSSH服務可以通過/etc/ssh/sshd_config文件進行配置。

程序主要包括了幾個部分:

- ssh:rlogin與Telnet的替代方案。

- scp、sftp:rcp的替代方案,將文件復制到其他電腦上。

- sshd:SSH服務器。

- ssh-keygen:產生RSA或DSA密鑰,用來認證用。

- ssh-agent、ssh-add:幫助用戶不需要每次都要輸入密鑰密碼的工具。

- ssh-keyscan:掃描一群機器,并記錄其公鑰。

OpenSSH包括建立安全通道的能力,通過該通道,發送到本地客戶端Unix域套接字或本地客戶端TCP端口的數據可以被“轉發”以在服務器端進行路由。數據的轉發是雙向的,意味著任何返回通信都會以相同的方式被轉發回客戶端;這被稱為“SSH隧道”,它可以用于在單個SSH連接上復用額外的TCP連接自2004年以來,以隱藏連接,加密其他未加密的協議,并通過發送/接收所有類型的數據來規避防火墻。例如,使用OpenSSH連接到遠程主機時,可能會自動創建X Window系統隧道,以及其他協議,如HTTP和VNC,可以輕松地進行轉發。通過TCP隧道傳輸TCP封裝的有效載荷(如PPP)通過基于TCP的連接(如SSH的端口轉發)被稱為“TCP-over-TCP”,這樣做可能會導致傳輸性能的顯著損失,這就是為什么虛擬專用網絡軟件可能會使用比TCP更簡單的協議來進行隧道連接。然而,在使用OpenSSH的端口轉發時,通常不會出現這個問題,因為許多用例不涉及TCP-over-TCP隧道。此外,一些第三方軟件包括對通過SSH進行隧道的支持。這些包括DistCC、電腦視疲勞綜合癥、rsync和Fetchmail。在一些操作系統上,可以使用諸如sshfs(使用FUSE)之類的工具通過SSH掛載遠程文件系統。可以使用OpenSSH創建一個臨時的SOCKS代理服務器。這比普通端口轉發更靈活。從4.3版本開始,OpenSSH實現了一個OSI第2/3層基于tun的VPN。這是OpenSSH隧道功能中最靈活的,允許應用程序透明地訪問遠程網絡資源,而無需修改以使用SOCKS。

OpenSSH支持多種公鑰類型,包括但不限于ssh-dss、ssh-rsa、ecdsa-sha2-nistp256、ecdsa-sha2-nistp384、ecdsa-sha2-nistp521、ssh-ed25519、rsa-sha2-256、rsa-sha2-512、ecdsa-sk、ed255成都地鐵19號線sk和NTRU Prime-x25519。其中,自2015年發布的OpenSSH 7.0起,ssh-dss在運行時被禁用,而自2021年發布的OpenSSH 8.8起,ssh-rsa也在運行時被禁用。

相關事件

2001年2月,SSH通信安全公司的主席兼首席技術官Tatu Yl?nen通知OpenSSH開發郵件列表,公司打算主張對“SSH”和“Secure Shell”商標的所有權,并尋求將對協議的引用更改為“SecSH”或“secsh”,以保持對“SSH”名稱的控制。他建議OpenSSH改變其名稱以避免訴訟,但開發人員反對了這一建議。OpenSSH的開發人員和Yl?nen本人都是IETF工作組的成員,該工作組正在開發新的標準;在幾次會議后,該組拒絕了Yl?nen的重命名協議的請求,理由是擔心這會為其他商標索賠案件開了一個壞先例。與會者認為“Secure Shell”和“SSH”都是通用術語,不能成為商標。

參考資料 >

生活家百科家居網