1. 程式人生 > >SSH:加密傳輸 遠端管理的安全通道

SSH:加密傳輸 遠端管理的安全通道

很多裝置,如路由器、防火牆等等,都提供了一種遠端訪問與管理的介面。如Windows伺服器可以利用Telnet協議進行遠端管理等等。但是,Telnet不怎麼安全。因為其在傳輸過程中,帳戶與密碼都是明文傳輸的。在網路傳輸過程中,這是非常危險的。因為黑客通過一些網路嗅探工具,能夠輕易的竊取網路中明文傳輸的帳戶與密碼。故,筆者是不建議通過Telnet協議對網路裝置與伺服器進行遠端管理。(應用安全)

很多裝置,如路由器、防火牆等等,都提供了一種遠端訪問與管理的介面。如Windows伺服器可以利用Telnet協議進行遠端管理等等。但是,Telnet不怎麼安全。因為其在傳輸過程中,帳戶與密碼都是明文傳輸的。在網路傳輸過程中,這是非常危險的。因為黑客通過一些網路嗅探工具,能夠輕易的竊取網路中明文傳輸的帳戶與密碼。故,筆者是不建議通過Telnet協議對網路裝置與伺服器進行遠端管理。(

ARP)

針對Telnet協議不安全這種情況,有人開發出了一個SSH協議。其原理跟Telnet類似,只是其具有更高的安全性。SSH是一個執行在傳輸控制層上的應用程式。他跟Telnet相比,提供了強大的認證與加密效能。他可以保證在我們連線到網路裝置的過程中,其傳輸的資料是加密處理過的。這麼做,就是為了保障帳戶與口令的安全。

一、SSH軟體包的構成。

SSH軟體包由伺服器端與客戶端兩部分構成。伺服器端主要是安裝在被控制端,即我們需要進行遠端管理的物件。而客戶端就是安裝在操作方的主機上。SSH軟體包適用於所有的作業系統,包括微軟、Linux以及思科公司的IOS作業系統等等。不過具體的應用上,還是有一定的差別。如SSH伺服器端之能夠安裝在微軟的伺服器版本中,而在

Linux系統上在沒有這個限制,等等。

另外,現在的SSH主要包括兩個版本,分別為SSH1 與SSH2。SSH1是一個完全免費的軟體包;而SSH2則是一個需要付費的軟體包。天下沒有免費的午餐,SSH2付費版的功能要比SSH1 免費版的功能強大的多。但是,因為其要付費,所以其應用範圍還沒有SSH1 廣。在實際應用中,需要注意SSH2與SSH1版本是兩個完全不同的協議並且互不相容。也就是說,你服務端裝的是SSH2版本,但是,若你客戶端裝的是SSH1版本的,則無法利用這個客戶端連線到伺服器上去。因為兩者不相容。這是在工作中,需要十分注意的一個問題。

二、SSH的認證方式。

一般來說,SSH提供了兩種安全認證方式。

一是基於口令的安全認證。在這種認證方式下,使用者只需要知道帳戶與口令,就可以利用SSH協議遠端登陸到伺服器。在這種認證模式下,其傳輸的資料,包括使用者名稱與密碼,是密文傳輸的。但是,他有一種缺陷。也就是說,他不能夠保證你正在連線的伺服器就是你想連線的伺服器。因為他不會驗證客戶端與伺服器端的身份,所以,可能會有人冒充真正的伺服器,而管理員卻不知情。這種攻擊方式,又叫做“中間人”攻擊。也算是一個比較“著名”的攻擊方式了。

二是基於金鑰的安全認證。在這種安全認證方式下,需要依靠金鑰進行認證。此時,使用者需要為自己建立一對金鑰。使用者要通過其他安全的方式,把公鑰方在需要遠端管理的伺服器上。當管理員連線到SSH伺服器上的時候,客戶端會向伺服器發出請求,要求其利用客戶端的金鑰進行安全性認證。伺服器收到客戶端的請求後,就會利用你事先發給他的公鑰進行比較、辨別。如要兩個金鑰一致的話,伺服器就用公鑰加密質詢並把它傳送給客戶端軟體。客戶端軟體接收到伺服器的質詢後,就可以利用私人金鑰進行解密並把結果傳送給伺服器。這種方式跟第一種方式相比,就是可以保障SSH伺服器的合法性,有效的避免“中間人”攻擊。

現在SSH1與SSH2兩個版本的SSH軟體包,都支援這種安全認證方式。由於後一種安全認證方式比較複雜。故使用者登入到伺服器的時間可能會比較長,有時候甚至會需要一分鐘的等待時間,甚至更長。當開始第一個會話的時候,在SSH使用者認證提示出現之前,會在客戶端上有一個“.”號提示符。一般情況下,這個提示符並不影響SSH的功能。當用戶在SSH金鑰交換期間,使用私鑰生成伺服器金鑰或者加密一個訊息的時候,在使用者認證出現之前,這個提示符將會出現在SSH客戶端上。我們可以把它看作是一個程序指示器,表示SSH正忙,沒有當機。這個過程根據網路狀況的不同,持續的時間也有長短。一般在兩分鐘以內的,可以當作正常情況。若超過這個時間的話,則管理員就需要調整相關的配置,不然會對SSH的正常操作產生影響。

不過採用第二種認證方式的話,會給管理員一個額外的收穫。如果你的網路中,有很多個SSH伺服器。如一個FTP檔案伺服器還有一個Cisco防火牆,你都部屬了一個SSH伺服器的話,則此時你作為管理員,就可以只用一個口令就登入到所有你想登入的伺服器上去。

三、配製例項。

由於SSH採用了加密機制,所以其配製起來比Telnet協議要複雜一點。下面筆者就以Cisco的防火牆伺服器為例,看看如何配置SSH協議,讓其在伺服器上生效。

為了讓防火牆啟用SSH服務,則需要通過五個步驟。

第一步:配置防火牆主機名。

這個步驟雖然不是啟用SSH服務的必備步驟。不過,筆者還是建議使用者給防火牆起一個合適的名字。當通過客戶端訪問SSH服務期的時候,輸入名字要比輸入IP地址簡單的多。而且,名字也比枯燥無味的數字好記的多。故起一個容易記憶的SSH伺服器名字,是SSH伺服器管理的基礎。

在Cisco防火牆中,可以利用hostname命令來配置SSH伺服器的名字。為了便於識別,一般在取名的時候,需要符合一定的規則。如利用“裝置名稱-實體名字”規則來命名。

第二步:生成金鑰對。

在Cisco防火牆中,其建議採用的是“金鑰認證安裝方式”。所以,需要為其生成金鑰對。這個步驟也很簡單,因為防火牆中已經有預設的事項方式。管理員只需要在命令列中,輸入:ca generate rsa key 1024這個命令,防火牆作業系統就會自動生成一個金鑰對。金鑰對生成後,管理員還需要使用命令CA SAVE ALL命令,把這個金鑰對儲存起來。

這裡要注意,不同的系統採用的加密機制不同,所以,生成的金鑰對方式也不同。作為企業安全管理人員來說,應該對金鑰生成的方式有一個統一的規劃。在安全允許的情況下,最後在公司內部統一安全金鑰的生成方式。這可以大大的減少我們維護的工作量。

第三步:指定客戶端的IP地址。

Cisco防火牆為了提高遠端管理的安全性,特別進行了一個IP地址的過濾。在SSH伺服器上,必須指定客戶端的IP地址。只有允許的Ip地址,才可以通過SSH客戶端連線到SSH伺服器上。

這是一個很重要的安全控制手段。通過這種方式,則只有特定的客戶端才可以利用SSH協議遠端管理防火牆。而未經授權的客戶端無權進行訪問。這讓SSH遠端管理安全性更有保障。

管理員可以利用ssh ip_adress 命令,來配置允許訪問的客戶端IP地址。一般情況下,只允許管理員才可以通過SSH方式訪問遠端主機。

第四步:設定訪問口令。

為了保障SSH的安全,雖然已經限制了客戶端,但是仍然非常有必要為其設定一個訪問帳戶與口令。有時候,SSH伺服器也會有預設的使用者名稱。但是,為了SSH伺服器的安全,筆者強烈建議使用者在第一時間把這個預設密碼改掉。在第一時間更改伺服器與裝置的預設帳戶與密碼,是網路安全人員要養成的一個必備的工作習慣。在SSH中,可以採用password命令來更改SSH的登陸使用者名稱。

第五步:設定空閒時間。

最後,還需要設定一個會話在斷開前的空閒時間。這跟螢幕保護類似。有時候你可能有其他的事情,需要離開SSH客戶端一段時間。但是,此時你人已經離開了,但是SSH會話沒有中斷掉。若此時有人利用你離開的這段時間,搞破壞動作,那該怎麼辦呢?

所以,我們需要像設定螢幕保護一樣,給SSH會話設定一個最大的空閒時間。當超過這個時間後,SSH伺服器會自動中斷這個會話,從而保障SSH伺服器的安全。此時,我們可以利用ssh tineout命令來設定這個最大空閒時間。其單位是分。預設情況下,其最大的空閒時間為5分鐘。

在客戶端上,一般不需要進行額外的配置。只是在客戶端選擇上,要考慮相容性問題。即你在伺服器上若選擇的是SSH1版本的話,則客戶端也必須是SSH1版本的。若伺服器端是SSH2的,則客戶端也要選擇SSh2版本的。

若需要管理多臺SSH伺服器的話,有兩種便捷的方式。一是通過上面的“安全金鑰認證方式”。如此的話,只需要一個帳戶與口令,就可以對所有的SSH服務進行管理。二是在SSH客戶端上可以儲存相關的配置。當管理員需要訪問某臺SSh伺服器的時候,只需要在客戶端上進行選擇,而不用重複的輸入伺服器端的配置,如IP地址與埠等等。