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















 
 
 










 
 
 
 