通俗易懂的ssh原理
很多設備,如路由器、防火墻等等,都提供了一種遠程訪問與管理的接口。如Windows服務器可以利用Telnet協(xié)議進行遠程管理等等。但是,Telnet不怎么安全。因為其在傳輸過程中,帳戶與密碼都是明文傳輸?shù)?。在網絡傳輸過程中,這是非常危險的。因為黑客通過一些網絡嗅探工具,能夠輕易的竊取網絡中明文傳輸?shù)膸襞c密碼。故,筆者是不建議通過Telnet協(xié)議對網絡設備與服務器進行遠程管理。 針對Telnet協(xié)議不安全這種情況,有人開發(fā)出了一個SSH協(xié)議。其原理跟Telnet類似,只是其具有更高的安全性。SSH是一個運行在傳輸控制層上的應用程序。他跟Telnet相比,提供了強大的認證與加密性能。他可以保證在我們連接到網絡設備的過程中,其傳輸?shù)臄?shù)據(jù)是加密處理過的。這么做,就是為了保障帳戶與口令的安全。
一、SSH軟件包的構成。
SSH軟件包由服務器端與客戶端兩部分構成。服務器端主要是安裝在被控制端,即我們需要進行遠程管理的對象。而客戶端就是安裝在操作方的主機上。SSH軟件包適用于所有的操作系統(tǒng),包括微軟、Linux以及思科公司的IOS操作系統(tǒng)等等。不過具體的應用上,還是有一定的差別。如SSH服務器端之能夠安裝在微軟的服務器版本中,而在Linux系統(tǒng)上在沒有這個限制,等等。
另外,現(xiàn)在的SSH主要包括兩個版本,分別為SSH1 與SSH2。SSH1是一個完全免費的軟件包;而SSH2則是一個需要付費的軟件包。天下沒有免費的午餐,SSH2付費版的功能要比SSH1 免費版的功能強大的多。但是,因為其要付費,所以其應用范圍還沒有SSH1 廣。在實際應用中,需要注意SSH2與SSH1版本是兩個完全不同的協(xié)議并且互不相容。也就是說,你服務端裝的是SSH2版本,但是,若你客戶端裝的是SSH1版本的,則無法利用這個客戶端連接到服務器上去。因為兩者不兼容。這是在工作中,需要十分注意的一個問題。
二、SSH的認證方式。
一般來說,SSH提供了兩種安全認證方式。
一是基于口令的安全認證。在這種認證方式下,用戶只需要知道帳戶與口令,就可以利用SSH協(xié)議遠程登陸到服務器。在這種認證模式下,其傳輸?shù)臄?shù)據(jù),包括用戶名與密碼,是密文傳輸?shù)摹5?,他有一種缺陷。也就是說,他不能夠保證你正在連接的服務器就是你想連接的服務器。因為他不會驗證客戶端與服務器端的身份,所以,可能會有人冒充真正的服務器,而管理員卻不知情。這種攻擊方式,又叫做“中間人”攻擊。也算是一個比較“著名”的攻擊方式了。
二是基于密鑰的安全認證。在這種安全認證方式下,需要依靠密鑰進行認證。此時,用戶需要為自己創(chuàng)建一對密鑰。用戶要通過其他安全的方式,把公鑰方在需要遠程管理的服務器上。當管理員連接到SSH服務器上的時候,客戶端會向服務器發(fā)出請求,要求其利用客戶端的密鑰進行安全性認證。服務器收到客戶端的請求后,就會利用你事先發(fā)給他的公鑰進行比較、辨別。如要兩個密鑰一致的話,服務器就用公鑰加密質詢并把它發(fā)送給客戶端軟件??蛻舳塑浖邮盏椒掌鞯馁|詢后,就可以利用私人密鑰進行解密并把結果發(fā)送給服務器。這種方式跟第一種方式相比,就是可以保障SSH服務器的合法性,有效的避免“中間人”攻擊。
現(xiàn)在SSH1與SSH2兩個版本的SSH軟件包,都支持這種安全認證方式。由于后一種安全認證方式比較復雜。故用戶登錄到服務器的時間可能會比較長,有時候甚至會需要一分鐘的等待時間,甚至更長。當開始第一個會話的時候,在SSH用戶認證提示出現(xiàn)之前,會在客戶端上有一個“.”號提示符。一般情況下,這個提示符并不影響SSH的功能。當用戶在SSH密鑰交換期間,使用私鑰生成服務器密鑰或者加密一個消息的時候,在用戶認證出現(xiàn)之前,這個提示符將會出現(xiàn)在SSH客戶端上。我們可以把它看作是一個進程指示器,表示SSH正忙,沒有當機。這個過程根據(jù)網絡狀況的不同,持續(xù)的時間也有長短。一般在兩分鐘以內的,可以當作正常情況。若超過這個時間的話,則管理員就需要調整相關的配置,不然會對SSH的正常操作產生影響。
不過采用第二種認證方式的話,會給管理員一個額外的收獲。如果你的網絡中,有很多個SSH服務器。如一個FTP文件服務器還有一個Cisco防火墻,你都部屬了一個SSH服務器的話,則此時你作為管理員,就可以只用一個口令就登錄到所有你想登錄的服務器上去。
三、配制實例。
由于SSH采用了加密機制,所以其配制起來比Telnet協(xié)議要復雜一點。下面筆者就以Cisco的防火墻服務器為例,看看如何配置SSH協(xié)議,讓其在服務器上生效。
為了讓防火墻啟用SSH服務,則需要通過五個步驟。
第一步:配置防火墻主機名。
這個步驟雖然不是啟用SSH服務的必備步驟。不過,筆者還是建議用戶給防火墻起一個合適的名字。當通過客戶端訪問SSH服務期的時候,輸入名字要比輸入IP地址簡單的多。而且,名字也比枯燥無味的數(shù)字好記的多。故起一個容易記憶的SSH服務器名字,是SSH服務器管理的基礎。
在Cisco防火墻中,可以利用hostname命令來配置SSH服務器的名字。為了便于識別,一般在取名的時候,需要符合一定的規(guī)則。如利用“設備名稱-實體名字”規(guī)則來命名。
第二步:生成密鑰對。
在Cisco防火墻中,其建議采用的是“密鑰認證安裝方式”。所以,需要為其生成密鑰對。這個步驟也很簡單,因為防火墻中已經有默認的事項方式。管理員只需要在命令行中,輸入:ca generate rsa key 1024這個命令,防火墻操作系統(tǒng)就會自動生成一個密鑰對。密鑰對生成后,管理員還需要使用命令CA SAVE ALL命令,把這個密鑰對保存起來。
這里要注意,不同的系統(tǒng)采用的加密機制不同,所以,生成的密鑰對方式也不同。作為企業(yè)安全管理人員來說,應該對密鑰生成的方式有一個統(tǒng)一的規(guī)劃。在安全允許的情況下,最后在公司內部統(tǒng)一安全密鑰的生成方式。這可以大大的減少我們維護的工作量。
第三步:指定客戶端的IP地址。
Cisco防火墻為了提高遠程管理的安全性,特別進行了一個IP地址的過濾。在SSH服務器上,必須指定客戶端的IP地址。只有允許的Ip地址,才可以通過SSH客戶端連接到SSH服務器上。
這是一個很重要的安全控制手段。通過這種方式,則只有特定的客戶端才可以利用SSH協(xié)議遠程管理防火墻。而未經授權的客戶端無權進行訪問。這讓SSH遠程管理安全性更有保障。
管理員可以利用ssh ip_adress 命令,來配置允許訪問的客戶端IP地址。一般情況下,只允許管理員才可以通過SSH方式訪問遠程主機。
第四步:設置訪問口令。
為了保障SSH的安全,雖然已經限制了客戶端,但是仍然非常有必要為其設置一個訪問帳戶與口令。有時候,SSH服務器也會有默認的用戶名。但是,為了SSH服務器的安全,筆者強烈建議用戶在第一時間把這個默認密碼改掉。在第一時間更改服務器與設備的默認帳戶與密碼,是網絡安全人員要養(yǎng)成的一個必備的工作習慣。在SSH中,可以采用password命令來更改ssh的登陸用戶名。
第五步:設置空閑時間。
最后,還需要設置一個會話在斷開前的空閑時間。這跟屏幕保護類似。有時候你可能有其他的事情,需要離開SSH客戶端一段時間。但是,此時你人已經離開了,但是SSH會話沒有中斷掉。若此時有人利用你離開的這段時間,搞破壞動作,那該怎么辦呢?
所以,我們需要像設置屏幕保護一樣,給SSH會話設置一個最大的空閑時間。當超過這個時間后,SSH服務器會自動中斷這個會話,從而保障SSH服務器的安全。此時,我們可以利用ssh tineout命令來設置這個最大空閑時間。其單位是分。默認情況下,其最大的空閑時間為5分鐘。
在客戶端上,一般不需要進行額外的配置。只是在客戶端選擇上,要考慮兼容性問題。即你在服務器上若選擇的是SSH1版本的話,則客戶端也必須是SSH1版本的。若服務器端是SSH2的,則客戶端也要選擇ssh2版本的。
若需要管理多臺SSH服務器的話,有兩種便捷的方式。一是通過上面的“安全密鑰認證方式”。如此的話,只需要一個帳戶與口令,就可以對所有的SSH服務進行管理。二是在SSH客戶端上可以保存相關的配置。當管理員需要訪問某臺SSh服務器的時候,只需要在客戶端上進行選擇,而不用重復的輸入服務器端的配置,如IP地址與端口等等。