安全殼層 (SSH) 通訊協定在電腦之間建立遠端加密連線。它還支援通道。
閱讀本文後,您將能夠:
複製文章連結
安全殼層 (SSH) 通訊協定是一種透過不安全的網路安全地向電腦傳送命令的方法。SSH 使用加密技術對裝置之間的連線進行驗證和加密。SSH 還允許通道或連接埠轉寄,即資料封包能夠穿過原本無法穿過的網路。SSH 通常用於遠端控制伺服器、管理基礎架構和傳輸檔案。
旅行時,商店老闆可能會從遠處向員工發出指示,以確保商店在他們離開時順利運作。同樣,SSH 允許管理員遠端管理伺服器和裝置。較舊的遠端管理通訊協定(例如 Telnet)以任何人都可以看到的形式傳輸管理員命令。(想像一下,如果員工在和商店老闆通話時打開免持聽筒,那麼店裡的所有顧客都可以無意中聽到私人指示。)與 Telnet 不同,SSH 是安全的,因此被稱為「安全殼層」。
遠端加密連線:SSH 在使用者裝置和遠端電腦(通常是伺服器)之間建立連線。它使用加密來擾亂通過連線的資料。攔截者只能找到靜態的隨機資料,這些資料如果不解密,就毫無意義。(SSH 使用的加密方法使外人難以解密。)
通道能力:在網路中,通道是一種使用通訊協定或通常無法使用的路徑在網路上移動封包的方法。通道的工作方式是用附加資訊(稱為標頭)包裝資料封包*,以變更其目的地。SSH 通道使用一種稱為連接埠轉送的技術將封包從一台電腦傳送到另一台電腦。下文將更詳細地說明 SSH 連接埠轉送。
*所有通過網路的資料都會被分解為更小的區塊,稱為「封包」。
SSH 在 TCP/IP 通訊協定套件之上執行,許多網際網路都依賴該套件。TCP/IP 傳輸並傳遞封包。使用 TCP 是 SSH 與其他通道通訊協定的不同之處,其中一些通訊協定使用速度較快但可靠性較差的 UDP。
這些「非對稱」金鑰(之所以如此命名,是因為它們具有不同的值)還使連線的兩端能夠交涉相同的共用對稱金鑰,以便透過通道進行進一步加密。一旦交涉完成,雙方就使用對稱金鑰來加密它們交換的資料。
在 SSH 連線中,雙方都有一個公開/私密金鑰對,並且每一方都使用這些金鑰來驗證對方。這將 SSH 與 HTTPS 區分開來,後者在大多數實作中僅驗證用戶端伺服器連線中 Web 伺服器的身分。(其他區別包括 HTTPS 通常不允許用戶端存取伺服器的命令列,防火牆有時會封鎖 SSH,但幾乎從不封鎖 HTTPS。)
雖然公開金鑰加密技術可以對 SSH 中連接的裝置進行驗證,但經過適當保護的電腦仍需要使用 SSH 的人員進行驗證。通常,這採取輸入使用者名稱和密碼的形式。
驗證完成後,使用者可以在遠端電腦上執行命令,就像在自己的本機電腦上執行命令一樣。
連接埠轉送就像在兩個人之間轉寄訊息。Bob 向 Alice 傳送了一條訊息,而 Alice 又將這條訊息傳遞給 Dave。同樣,連接埠轉送將導向到一台電腦上的 IP 位址和連接埠的封包傳送到另一台電腦上的 IP 位址和連接埠。
例如,假設管理員想要對他們管理的私人網路內的伺服器進行變更,並且他們希望從遠端位置執行此操作。但是,出於安全原因,該伺服器僅接收來自同一私人網路內其他電腦的封包。管理員可以連線到網路中的第二台伺服器(開放接收網際網路流量的伺服器),然後使用 SSH 連接埠轉送連線到第一台伺服器。從第一台伺服器的角度來看,管理員的封包來自於自私人網路內部。
Linux 和 Mac 作業系統內建了 SSH。Windows 機器可能需要安裝 SSH 用戶端應用程式。在 Mac 和 Linux 電腦上,使用者可以開啟終端應用程式並直接輸入 SSH 命令。
從技術上講,SSH 可以透過網路傳輸任意資料,並且 SSH 通道可以用於多種目的。不過,最常見的 SSH 用例是:
連接埠 22 是 SSH 的預設連接埠。有時,防火牆可能會封鎖存取防火牆後面的伺服器上的某些連接埠,但將連接埠 22 保持開啟。因此,SSH 對於存取防火牆另一側的伺服器非常有用:導向到連接埠 22 的封包不會被封鎖,然後可以轉寄到任何其他連接埠。
由於 SSH 存取通常附帶提升的權限,例如在伺服器上安裝應用程式或刪除、更改或擷取資料的能力,因此,SSH 存取在攻擊者(甚至是無善意的內部人員)手中可能會造成傷害。許多記錄在案的攻擊中都用到了 SSH,以便外洩私人資料、開啟進入安全網路的後門路由,以及獲得伺服器上的 root 存取權限。
SSH 還可以穿過未封鎖連接埠 22 的防火牆(許多防火牆都是這樣的),使攻擊者得以進入安全網路。
攻擊者還可以竊取 SSH 金鑰,以存取私人電腦和伺服器。事實上,SSH 金鑰管理對於大型組織來說是一個主要的安全問題,因為他們的許多伺服器可能使用數千個甚至數百萬個金鑰,而手動追蹤和更新這些金鑰幾乎是不可能的。除非被明確撤銷,否則 SSH 金鑰不會過期,因此一旦攻擊者獲得金鑰,他們就可以持續存取數月或數年。
SSH 和其他通道通訊協定之間的主要區別之一是它們運作所在的 OSI 層。GRE、IP-in-IP 和 IPsec VPN 都是網路層通訊協定。因此,它們不知道連接埠(傳輸層概念),而是在 IP 位址之間運作。(SSH 的確切 OSI 層並沒有嚴格定義,但大多數資料來源將其描述為第 7 層/應用程式層通訊協定,如 HTTP、FTP 和 SMTP。)
另一個差異是 SSH 使用 TCP。如上所述,TCP 是傳輸層通訊協定,是網際網路上使用的主要通訊協定之一。另一種廣泛使用的傳輸層通訊協定是UDP (User Datagram Protocol)。UDP 是一種「盡力而為」的傳輸通訊協定,它傳送封包,但不確保其送達,這使其速度更快,但有時會導致封包遺失。雖然 TCP 比 UDP 慢,但它保證了所有封包按順序送達,因此更可靠。
IPsec VPN 專門使用 UDP 而不是 TCP 來使 IPsec VPN 封包能夠通過防火牆。因此,IPsec VPN 通道通常比 SSH 通道更快,但可能會在傳輸過程中遺失封包。GRE 和 IP-in-IP 可以與 TCP 或 UDP 一起使用。
最後,SSH 一次僅加密一個應用程式,而不加密進出裝置的所有流量。這是 SSH 與 IPsec VPN 的不同之處,後者會加密所有網路流量,無論其來自哪個應用程式。因此,SSH 不用於設定 VPN。
儘管 SSH 存在安全風險,但許多組織依靠它來保持生產力。為了降低這些風險,Cloudflare 在其 SASE 平台中提供了具有基礎架構存取權限的 SSH。該服務將 Zero Trust 概念套用至 SSH,使組織能夠精細控制使用者如何連接到其 SSH 伺服器。它限制使用者可以做的事情,減少攻擊者或內部人員未經授權使用 SSH 的影響。
具有基礎架構存取權限的 SSH 也消除了管理 SSH 金鑰的需要(如上所述,這是一個巨大的挑戰)。相反,組織可以使用由 Cloudflare 管理的憑證授權單位 (CA) 簽發的短期 SSH 憑證。
Cloudflare 還允許組織監控和記錄 SSH 存取和使用情況,這對於事件復原和法規合規性都至關重要