全面概括SSH協(xié)議的知識(shí)
說(shuō)到SSH協(xié)議,它和安全是密不可分的。那么具體的工作層次,以及相關(guān)的一些基本架構(gòu),發(fā)展歷史和擴(kuò)展。我們本文都有所涉及,希望能讓大家全面了解這個(gè)協(xié)議。
SSH為Secure Shell的縮寫(xiě),由IETF的網(wǎng)絡(luò)工作小組(Network Working Group)所制定;SSH為建立在應(yīng)用層和傳輸層基礎(chǔ)上的安全協(xié)議。
傳統(tǒng)的網(wǎng)絡(luò)服務(wù)程序,如FTP、POP和Telnet其本質(zhì)上都是不安全的;因?yàn)樗鼈冊(cè)诰W(wǎng)絡(luò)上用明文傳送數(shù)據(jù)、用戶帳號(hào)和用戶口令,很容易受到中間人(man-in-the-middle)攻擊方式的攻擊。就是存在另一個(gè)人或者一臺(tái)機(jī)器冒充真正的服務(wù)器接收用戶傳給服務(wù)器的數(shù)據(jù),然后再冒充用戶把數(shù)據(jù)傳給真正的服務(wù)器。
而SSH是目前較可靠,專為遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議。利用SSH協(xié)議可以有效防止遠(yuǎn)程管理過(guò)程中的信息泄露問(wèn)題。透過(guò)SSH可以對(duì)所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密,也能夠防止DNS欺騙和IP欺騙。
SSH之另一項(xiàng)優(yōu)點(diǎn)為其傳輸?shù)臄?shù)據(jù)是經(jīng)過(guò)壓縮的,所以可以加快傳輸?shù)乃俣取SH有很多功能,它既可以代替Telnet,又可以為FTP、POP、甚至為PPP提供一個(gè)安全的“通道”。
歷史
最初的SSH協(xié)議是由芬蘭的一家公司開(kāi)發(fā)的,但是因?yàn)槭馨鏅?quán)和加密算法等等的限制,現(xiàn)在很多人都轉(zhuǎn)而使用OpenSSH。OpenSSH是SSH的替代軟件包,而且是開(kāi)放源代碼和免費(fèi)的。
基本架構(gòu)
SSH協(xié)議框架中最主要的部分是三個(gè)協(xié)議:
傳輸層協(xié)議(The Transport Layer Protocol):傳輸層協(xié)議提供服務(wù)器認(rèn)證,數(shù)據(jù)機(jī)密性,信息完整性等的支持。
用戶認(rèn)證協(xié)議(The User Authentication Protocol):用戶認(rèn)證協(xié)議為服務(wù)器提供客戶端的身份鑒別。
連接協(xié)議(The Connection Protocol):連接協(xié)議將加密的信息隧道復(fù)用成若干個(gè)邏輯通道,提供給更高層的應(yīng)用協(xié)議使用。
同時(shí)還有為許多高層的網(wǎng)絡(luò)安全應(yīng)用協(xié)議提供擴(kuò)展的支持。
各種高層應(yīng)用協(xié)議可以相對(duì)地獨(dú)立于SSH基本體系之外,并依靠這個(gè)基本框架,通過(guò)連接協(xié)議使用SSH的安全機(jī)制。
SSH的安全驗(yàn)證
在客戶端來(lái)看,SSH提供兩種級(jí)別的安全驗(yàn)證。
第一種級(jí)別(基于密碼的安全驗(yàn)證),知道帳號(hào)和密碼,就可以登錄到遠(yuǎn)程主機(jī),并且所有傳輸?shù)臄?shù)據(jù)都會(huì)被加密。但是,可能會(huì)有別的服務(wù)器在冒充真正的服務(wù)器,無(wú)法避免被“中間人”攻擊。
第二種級(jí)別(基于密匙的安全驗(yàn)證),需要依靠密匙,也就是你必須為自己創(chuàng)建一對(duì)密匙,并把公有密匙放在需要訪問(wèn)的服務(wù)器上??蛻舳塑浖?huì)向服務(wù)器發(fā)出請(qǐng)求,請(qǐng)求用你的密匙進(jìn)行安全驗(yàn)證。服務(wù)器收到請(qǐng)求之后,先在你在該服務(wù)器的用戶根目錄下尋找你的公有密匙,然后把它和你發(fā)送過(guò)來(lái)的公有密匙進(jìn)行比較。如果兩個(gè)密匙一致,服務(wù)器就用公有密匙加密“質(zhì)詢”(challenge)并把它發(fā)送給客戶端軟件。從而避免被“中間人”攻擊。
在服務(wù)器端,SSH也提供安全驗(yàn)證。 在第一種方案中,主機(jī)將自己的公用密鑰分發(fā)給相關(guān)的客戶端,客戶端在訪問(wèn)主機(jī)時(shí)則使用該主機(jī)的公開(kāi)密鑰來(lái)加密數(shù)據(jù),主機(jī)則使用自己的私有密鑰來(lái)解密數(shù)據(jù),從而實(shí)現(xiàn)主機(jī)密鑰認(rèn)證,確定客戶端的可靠身份。 在第二種方案中,存在一個(gè)密鑰認(rèn)證中心,所有提供服務(wù)的主機(jī)都將自己的公開(kāi)密鑰提交給認(rèn)證中心,而任何作為客戶端的主機(jī)則只要保存一份認(rèn)證中心的公開(kāi)密鑰就可以了。在這種模式下,客戶端必須訪問(wèn)認(rèn)證中心然后才能訪問(wèn)服務(wù)器主機(jī)。
SSH協(xié)議的可擴(kuò)展能力
SSH協(xié)議框架中設(shè)計(jì)了大量可擴(kuò)展的冗余能力,比如用戶自定義算法、客戶自定義密鑰規(guī)則、高層擴(kuò)展功能性應(yīng)用協(xié)議。這些擴(kuò)展大多遵循IANA的有關(guān)規(guī)定,特別是在重要的部分,像命名規(guī)則和消息編碼方面。