OpenSSH/概述
OpenSSH 套件提供安全的遠端訪問和檔案傳輸。自首次釋出以來,它已成為 SSH 協議最廣泛使用的實現。在其存在的最初十年中,ssh 很大程度上取代了以前相應的未加密工具和協議。OpenSSH 客戶端預設包含在大多數作業系統發行版中,包括 MacOS、Linux、BSD、AIX 和 Solaris。您每天使用網際網路時,都在使用和依賴數十臺甚至數百臺使用 OpenSSH 操作和維護的機器。2008 年的一項調查顯示,在發現執行的 SSH 伺服器中,超過 80% 是 OpenSSH。 [1]
OpenSSH 首次釋出是在 1999 年末。它是網路通勤、遠端訪問和遠端辦公非常長且有用歷史中的最新一步。
OpenSSH 的第一個版本是 1999 年 12 月作為 OpenBSD 2.6 的一部分發布的。原始碼最初來自對最後一個可用的開放版本,特別是 SSH 1.2.12 的重寫[2]。SSH 後來成為 Tectia SSH。
OpenSSH 的持續開發由 OpenBSD 小組完成。核心開發首先在 OpenBSD 上進行,然後可移植性團隊將更改移植到其他平臺。OpenSSH 是今天幾乎所有伺服器系統以及許多網路裝置(如路由器、交換機和網路儲存)不可或缺的一部分。第一步在許多方面是最大的。
一些激發了對 SSH 需求的工具,自網際網路誕生之初,甚至從網際網路誕生之前就已經存在。遠端訪問一直是該概念的根本部分,自想法階段以來,這種訪問的性質和功能隨著網路在規模、範圍和使用方面的演變而不斷發展。請參閱 Éric Lévénez 編寫的 *Lévénez Unix 時間線* 的網頁版[3],以概述系統開發,以及 Robert H Zakon 編寫的 *Hobbes' Internet 時間線* 的網頁版[4],以概述網際網路的發展。
1969
- Telnet 是最初的 ARPAnet 應用協議之一,在 RFC 15(1969 年 9 月)中命名。它用於本地訪問遠端站點的主機。Telnet 在兩年後開始描述,如 RFC 137、RFC 139、RFC 318 以及其他 RFC,包括 RFC 97。這是一個很好的分界點,用於區分 Telnet。
1971
- Thompson Shell 由 Ken Thompson 建立,是對舊的基於文字的使用者介面的改進,即 shell。這個新的 shell 允許重定向,但它只是一個使用者介面,而不是用於指令碼編寫。
- 同年,FTP(檔案傳輸協議)在 RFC 114 中進行了描述。一個關鍵目標是透過允許網路上任何主機上的使用者使用任何協作主機的檔案系統來促進網路上計算機的使用。
1978
- Bill Joy 建立了 BSD 的 C shell,以其使用的類 C 語法而得名。它允許作業控制、歷史替換和別名,這些功能我們在今天的介面中也發現了。
- 同年,貝爾實驗室的 Steve Bourne 建立了 Bourne Shell[5]。它是今天大多數發行版中使用的預設 shell 的鼻祖:**ksh** 和 **bash**。
1983
- 遠端檔案複製實用程式 **rcp** 出現在 4.2 BSD 中。**rcp** 透過網路將檔案複製到其他主機,使用 4.2 BSD 開始出現的 **rsh** 來執行其操作。與 **telnet** 和 **ftp** 一樣,所有密碼、使用者名稱和資料都以明文形式進行傳輸。**rsh** 和 **rcp** 都是 **rlogin** 套件的一部分。
1991
- PGP 由麻省理工學院的 Philip Zimmermann 編寫[6],為加密的電子通訊開闢了新的領域,其目標是維護網路上的公民自由、確保個人隱私、使美國加密合法化以及保護商業通訊。與 SSH 一樣,它使用公鑰/私鑰對的非對稱加密。
1993
- 來自麻省理工學院 Athena 專案的 Kerberos V (RFC 1510) 身份驗證服務[7] 提供了一種在開放的、不安全的網路上進行身份驗證的方法。Kerberos 最初開始於 1988 年。
1995
1995?
- Björn Grönvall 找出了最新的開放版本 **ssh**,即 1.2.12 版[10] [11]。他和 Holger Trapp 進行了最初的工作,以免費釋出該發行版,從而產生了 OSSH。
1996
- SSH2 協議定義為
1999
- OpenSSH 基於 OSSH 開始。Niels Provos、Theo de Raadt、Markus Friedl 在移植到 OpenBSD 期間開發了加密元件,這些元件成為了我們今天所知的 OpenSSH。Dug Song、Aaron Campbell 和許多其他人提供了各種非加密貢獻。Bob Beck 解決了 openssl 庫問題。Damien Miller、Philip Hands 和其他人開始將 OpenSSH 移植到 Linux。最後,OpenSSH 1.2.2 於 1999 年 12 月 1 日與 OpenBSD 2.6 一起釋出[12]。
2000
- Markus Friedl 在 6 月釋出的 OpenSSH 2.0 版中添加了 SSH 2 協議支援[13]。OpenSSH 2.0 與 OpenBSD 2.7 一起釋出。Niels Provos 和 Theo de Raadt 進行了大部分檢查。Bob Beck 更新了 OpenSSL。Markus 也在同年晚些時候添加了對 SFTP 協議的支援。
- 2000 年 9 月,美國對 RSA 演算法的專利到期,長時間的等待終於結束了。在歐盟,1972 年的歐洲專利公約使軟體、演算法、商業方法或文學作品不受限制,這與美國不幸的、反商業狀況不同。目前,歐洲的這種自由處於岌岌可危的境地。
- SSH Tectia 再次更改許可證。
2001
- Damien Miller 完成了 SFTP 客戶端,該客戶端於 2 月釋出。
- SSH2 成為預設協議。
2008
- **sshd** 內建 chroot 支援。
2010
- 從 OpenSSH 5.4 開始,舊的 SSH1 協議預設情況下最終被停用。
2014
- 從 OpenSSH 6.7 開始,OpenSSH 的基本版本和可移植版本都可以針對 LibreSSL 而不是 OpenSSL 構建,以執行某些加密功能。
2016
- OpenSSH 7.4 刪除了對 SSH1 舊協議的伺服器支援。
2023
- OpenSSH 9.5 ssh-keygen(1) 預設生成 Ed25519 金鑰,而不是舊的 RSA 金鑰。
注意:OpenSSH 可在全球任何地方使用,因為它只使用不受軟體專利、商業方法專利、演算法專利等限制的演算法。這些型別的專利不適用於歐洲,只有物理發明才能在歐洲獲得專利,但在世界某些地區,這些問題確實存在。歐洲的中小企業一直積極參與政治,以保持這種優勢。
自 1996 年網際網路商業化以來,發生了許多變化。它曾經是大學和政府的研究網路,如果你當時在網上,你很可能應該在那裡。雖然它遠非烏托邦,但任何不當行為通常可以迅速縮小到相關個人並輕鬆處理,通常只需一個電話或幾封電子郵件。當時很少有會話被加密,密碼和使用者名稱都是以明文形式傳遞的。
到那時,全球資訊網已經發展了幾年,並且正在經歷爆炸式增長。1996 年線上網頁伺服器的估計數量從年初的 100,000 臺增長到年底的近 650,000 臺[14]。當將其他型別的伺服器包含在這些資料中時,估計的年底數量超過了 16,000,000 個主機,代表大約 828,000 個域名[14]。
如今,主機從連線到網路的那一刻起就受到惡意掃描。任何未加密的流量都會被掃描和解析以尋找使用者名稱、密碼和其他敏感資訊。目前,最大的間諜威脅來自私營公司,但政府、個人和有組織犯罪也並非沒有存在。
從一個主機到另一個主機的每個連線都經過許多網路,每個資料包可能走相同的路線或不同的路線到達並返回。此示例顯示了從學生計算機到搜尋引擎的三個組織之間的 13 個跳躍
% /usr/sbin/traceroute -n www.google.com
traceroute: Warning: www.google.com has multiple addresses; using 74.125.95.106
traceroute to www.l.google.com (74.125.95.106), 30 hops max, 40 byte packets
1 xx.xx.xx.xx 0.419 ms 0.220 ms 0.213 ms University of Michigan
2 xx.xx.xx.xx 0.446 ms 0.349 ms 0.315 ms Merit Network, Inc.
3 xx.xx.xx.xx 0.572 ms 0.513 ms 0.525 ms University of Michigan
4 xx.xx.xx.xx 0.472 ms 0.425 ms 0.402 ms University of Michigan
5 xx.xx.xx.xx 0.647 ms 0.551 ms 0.561 ms University of Michigan
6 xx.xx.xx.xx 0.945 ms 0.912 ms 0.865 ms University of Michigan
7 xx.xx.xx.xx 6.478 ms 6.503 ms 6.489 ms Merit Network, Inc.
8 xx.xx.xx.xx 6.597 ms 6.590 ms 6.604 ms Merit Network, Inc.
9 216.239.48.154 64.935 ms 6.848 ms 6.793 ms Google, Inc.
10 72.14.232.141 17.606 ms 17.581 ms 17.680 ms Google, Inc.
11 209.85.241.27 17.736 ms 17.592 ms 17.519 ms Google, Inc.
12 72.14.239.193 17.767 ms 17.778 ms 17.930 ms Google, Inc.
13 74.125.95.106 17.903 ms 17.835 ms 17.867 ms Google, Inc.:
網路很大。如今,在客戶端和伺服器之間找到 15 到 20 個跳躍的蹤跡並不少見。如果資料包沒有很好地加密,任何位於資料包經過的任何子網上的機器都可以輕鬆地竊聽。
OpenSSH 的作用
[edit | edit source]OpenSSH 套件提供以下功能:
- 加密遠端訪問,包括隧道化不安全的協議。
- 加密檔案傳輸
- 執行遠端命令、程式或指令碼,以及前面提到的:
- 替換rsh、rlogin、telnet 和ftp
更具體地說,這意味著以下不希望出現的活動將被阻止:
- 竊聽透過網路傳輸的資料。
- 操縱網路中間元素(例如路由器)中的資料。
- 地址欺騙,攻擊主機透過傳送帶有受信任主機源地址的資料包來偽裝成受信任的主機。
- IP 源路由
作為一個自由軟體專案,OpenSSH 提供:
- 開放標準
- 靈活的許可證 - 強調開發人員的自由
- 使用以下密碼的強加密
- AES
- ChaCha20[15]
- RSA
- ECDSA
- Ed25519
- 強身份驗證,支援的方法:
gssapi-with-mic, hostbased, keyboard-interactive, none , password和publickey[16] - 內建 SFTP
- 資料壓縮
- 埠轉發
- 加密傳統協議
- 用於 X Window 系統的加密 X11 轉發
- 金鑰代理
- 使用以下方法進行單點登入
- 身份驗證金鑰
- 代理轉發
- 票證傳遞
- Kerberos
- AFS
OpenSSH 不能做什麼
[edit | edit source]OpenSSH 是一款非常實用的工具,但其大部分有效性取決於正確使用。它無法保護以下任何情況。
- 錯誤配置、誤用或濫用。
- 受損系統,尤其是 root 帳戶被破壞的系統。
- 不安全或不適當的目錄設定,尤其是主目錄設定。
OpenSSH 必須正確配置,並且在正確配置的系統上才能發揮作用。安排這兩者並不難,但由於每個系統都是唯一的,因此沒有一刀切的解決方案。正確的配置取決於系統和 OpenSSH 使用的方式。
如果您從一個主機登入到伺服器,並且攻擊者控制了任一側的 root 帳戶,他可以透過讀取偽終端裝置來監聽您的會話,因為即使 SSH 在網路上是加密的,它也必須以明文形式與終端裝置通訊。
如果攻擊者可以更改您的主目錄中的檔案,例如透過網路檔案系統,他可能能夠欺騙 SSH。
最後但並非最不重要的一點是,如果 OpenSSH 設定為允許所有人訪問,無論是故意還是意外,它都會這樣做。
參考文獻
[edit | edit source]- ↑ "OpenSSH 歷史". OpenSSH. 檢索於 2012-11-17.
- ↑ "UNIX 歷史時間線". Éric Lévénez. 檢索於 2011-02-17.
- ↑ "霍布斯網際網路時間線". 羅伯特·霍布斯·扎孔. 檢索於 2011-02-17.
- ↑ 霍華德·達達赫 (2009). "程式語言 A 到 Z:Bourne shell 或 sh". Computerworld. 檢索於 2011-02-18.
- ↑ 菲爾·齊默曼 (1991). "我為什麼要寫 PGP". 麻省理工學院. 檢索於 2011-02-18.
- ↑ 比爾·布萊恩特;西奧多·茨奧 (1988). "設計身份驗證系統:四幕對話". 檢索於 2011-02-17.
- ↑ "幫助:SSH 1.0.0 許可證". FUNET. 檢索於 2013-04-13.
- ↑ Tatu Ylönen (1995-07-12). "公告:Ssh(安全外殼)遠端登入程式". news://comp.security.unix. 檢索於 2011-11-26.
{{cite web}}: 外部連結在(幫助)|publisher= - ↑ "幫助:SSH 1.2.12 許可證". friedl. 檢索於 2011-02-17.
- ↑ "幫助:SSH 1.2.12.92 許可證". friedl. 檢索於 2011-02-17.
- ↑ https://www.openssh.com/history.html
- ↑ "OpenSSH 專案歷史和貢獻者". OpenSSH. 檢索於 2011-03-10.
- ↑ a b Robert H'obbes' Zakon. "霍布斯' 網際網路時間線". Zakon Group LLC. 檢索於 2011-02-17.
- ↑ Damien Miller (2013-11-29). "ChaCha20 和 Poly1305 在 OpenSSH 中". 檢索於 2014-04-26.
- ↑ https://linux.die.net/man/5/sshd_config
- ↑ https://lists.mindrot.org/pipermail/openssh-unix-announce/2015-March/000120.html
| OpenSSH 概述 • 為什麼要加密 • 協議 • 實現 • 客戶端 • 客戶端配置 • 伺服器 • 模式 • 工具 • 第三方 • 日誌記錄和故障排除 • 開發 |