1. 程式人生 > 其它 >安全通訊協議 SSH 應用與分析

安全通訊協議 SSH 應用與分析

Telent 與 SSH 相關知識

Telnet

  是 TCP/IP 協議族的其中之一,是 Internet 遠端登入服務的標準協議和主要方式,常用於網頁伺服器的遠端控制,可供使用者在本地主機執行遠端主機上的工作。

  傳統 Telnet 會話所傳輸的資料並未加密,帳號和密碼等敏感資料容易會被竊聽,因此很多伺服器都會封鎖 Telnet 服務,改用更安全的 SSH。

SSH(Secure Shell)

  是一項建立在應用層和傳輸層基礎上的安全協議,為計算機上的 Shell(殼層)提供安全的傳輸和使用環境。

  利用 SSH 協議可以有效防止遠端管理過程中的資訊洩露問題。通過 SSH 可以對所有傳輸的資料進行加密,也能夠防止 DNS 欺騙和 IP 欺騙。是目前較可靠的,專為遠端登入會話和其他網路服務提供安全性的協議。

  SSH 之另一項優點為其傳輸的資料可以是經過壓縮的,故可加快傳輸的速度。SSH 有很多功能,它既可以代替 Telnet,又可以為 FTP、 POP、甚至為 PPP 提供一個安全的通道。

SSH 的安全驗證

  SSH提供兩種級別的安全驗證

  1. 基於密碼的安全驗證

    使用者端:知道帳號和密碼,就可以登入到遠端主機。所有傳輸的資料都會被加密,但可能有其他伺服器冒充真正的伺服器,故無法避免中間人攻擊。

    伺服器端:主機將自己的公鑰分發給相關的客戶端,客戶端在訪問主機時則使用該主機的公鑰來加密資料,主機則使用自己的私鑰來解密資料,從而實現主機金鑰認證,確保資料的保密性。

  2. 基於金鑰的安全驗證

    使用者端:需要依靠金鑰,使用者必須為自己建立一對金鑰,並將其中的公鑰放在需要訪問的伺服器上。客戶端軟體訪問伺服器時會向伺服器發出請求,請求使用使用者的金鑰進行安全驗證。伺服器收到請求之後,先在使用者在該伺服器的使用者根目錄下尋找使用者的公鑰,然後將其與使用者送達的公鑰進行比較。若兩個金鑰一致,伺服器就用使用者的公鑰加密質詢(challenge),並將該質詢送往客戶端軟體。從而避免中間人攻擊。

    伺服器端:存在一個金鑰認證中心(CA),所有提供服務的主機都將自己的公鑰提交給認證中心,而任何作為客戶端的主機則只要儲存一份認證中心的公鑰即可。在這種模式下,客戶端必須訪問認證中心然後才能訪問伺服器主機。

Telent 與 SSH 的搭建

伺服器端:  系統:Windows Server 2003  IP:10.1.1.92 / 24

       使用者名稱:Administrator  密碼:fe8c15fed5

       軟體:OpenSSH

使用者端:   系統:Windows XP  IP:10.1.1.91 / 24

       軟體:Wireshark、PuTTY

Telent 伺服器端 - 搭建

  在命令提示符中輸入

1 tlntsvr /service       // 啟動 Telnet 服務程式
2 services.msc           // 開啟服務管理程式

  找到 Telnet 服務,然後更改啟動型別為自動並啟動 Telnet 服務

  接著在命令提示符中輸入

3 netstat –an      // 檢視 23 埠是否開放(是否處於 Listening 狀態)
4 telnet          // 進入 Telnet

  注:Telnet 常用命令

5 open 127.0.0.1 23  // telnet 自機

  鍵入 exit 退出當前連線,或使用 Ctrl + ] 退出 Telnet 服務。

  至此,伺服器端配置完畢。

Telnet 使用者端

  在命令提示符介面,使用伺服器端主機的使用者名稱和密碼登入到 Telnet 伺服器端。

1 telnet 10.1.1.92 23

  登入成功,接下來開啟 Wireshark 監聽,篩選 Telnet 報文。重登入 Telnet 以觀察 Telnet 所傳送的報文。

  觀察其 TCP 流,可以明顯的看到登入時的使用者名稱和密碼。(在報文包中可以看出其採用了每個包一個至兩個字元的方式傳輸)

SSH 伺服器端 - 搭建

  安裝 OpenSSH

  進入命令提示符,輸入

1 cd C:\Program Files\OpenSSH\bin         // 進入 OpenSSH 安裝路徑下的 bin 資料夾
2 mkgroup -l >> ..\etc\group              // 匯入本地組
3 mkpasswd -l >> ..\etc\passwd            // 匯入本地使用者名稱和密碼
4 net start opensshd                      // 開啟 SSH 服務

  可以看到 OpenSSH 服務已經啟動

5 netstat –an      // 檢視 22 埠的狀態

  可以看到 22 埠已經開啟

SSH 客戶端

  開啟 PuTTY,在 Session 介面的 Host NameI (or IP Address) 欄中輸入伺服器端的 IP 地址,埠部分使用預設的 22 埠。點選 Open 後在彈出的 PuTTY 安全警報(PuTTY Security Alert)中選擇是。

  之後在彈出的對話方塊中輸入伺服器端的使用者名稱及密碼,即可成功登入

  

  注:由於 SSH 是 Unix-Like 系統的標配,其目錄顯示方式是 /home/user 類,所以有不能指向主目錄(Could not chdir to home directory)的報錯,但是不影響使用。

  使用 WireShark 抓取 SSH 的報文,可以看到其中除了伺服器端和客戶端使用的軟體資訊和金鑰交換資訊外,全部使用加密傳輸。