Secure Shell(SSH)簡介
談到網(wǎng)絡(luò)安全訪問,相信大家首先想到的就是安全Shell,也就是Secure Shell,通常簡寫為SSH。這是因為SSH安裝容易、使用簡單,而且比較常見,一般的Unix系統(tǒng)、Linux系統(tǒng)、FreeBSD系統(tǒng)都附帶有支持SSH的應用程序包。
1、什么是SSH ?
傳統(tǒng)的網(wǎng)絡(luò)服務程序,如FTP、 Pop和Telnet在傳輸機制和實現(xiàn)原理上是沒有考慮安全機制的,其本質(zhì)上都是不安全的;因為它們在網(wǎng)絡(luò)上用明文傳送數(shù)據(jù)、用戶帳號和用戶口令,別有用 心的人通過竊聽等網(wǎng)絡(luò)攻擊手段非常容易地就可以截獲這些數(shù)據(jù)、用戶帳號和用戶口令。而且,這些網(wǎng)絡(luò)服務程序的簡單安全驗證方式也有其弱點,那就是很容易受 到"中間人"(man-in-the-middle)這種攻擊方式的攻擊。所謂"中間人"的攻擊方式,就是"中間人"冒充真正的服務器接收你的傳給服務器的數(shù)據(jù),然后再冒充你把數(shù)據(jù)傳給真正的服務器。服務器和你之間的數(shù)據(jù)傳送被"中間人"一轉(zhuǎn)手做了手腳之后,就會出現(xiàn)很嚴重的問題。
SSH是英文Secure Shell的簡寫形式。通過使用SSH,你可以把所有傳輸?shù)臄?shù)據(jù)進行加密,這樣"中間人"這種攻擊方式就不可能實現(xiàn)了,而且也能夠防止DNS欺騙和IP欺 騙。使用SSH,還有一個額外的好處就是傳輸?shù)臄?shù)據(jù)是經(jīng)過壓縮的,所以可以加快傳輸?shù)乃俣取?/FONT>SSH有很多功能,它既可以代替Telnet,又可以為 FTP、Pop、甚至為PPP提供一個安全的"通道"。
最初的SSH是由芬蘭的一家公司開發(fā)的。但是因為受版權(quán)和加密算法的限制,現(xiàn)在很多人都轉(zhuǎn)而使用OpenSSH。OpenSSH是SSH的替代軟件包,而且是免費的,可以預計將來會有越來越多的人使用它而不是SSH。
最后,SSH在運行方式上也很有特色。不像其他的TCP/IP應用,SSH被設(shè)計為工作于自己的基礎(chǔ)之上,而不是利用包裝(wrappers)或通過Internet守護進程inetd。但是許多人想通過TCP包裝來運行SSH守護進程。雖然你可以通過tcpd(從inetd上運行啟動)來運行SSH進程,但這完全沒有必要。
2、SSH協(xié)議的內(nèi)容
SSH協(xié)議是建立在應用層和傳輸層基礎(chǔ)上的安全協(xié)議,它主要由以下三部分組成,共同實現(xiàn)SSH的安全保密機制。
傳輸層協(xié)議,它提供諸如認證、信任和完整性檢驗等安全措施,此外它還可以任意地提供數(shù)據(jù)壓縮功能。通常情況下,這些傳輸層協(xié)議都建立在面向連接的TCP數(shù)據(jù)流之上。
用戶認證協(xié)議層,用來實現(xiàn)服務器的跟客戶端用戶之間的身份認證,它運行在傳輸層協(xié)議之上。
連接協(xié)議層,分配多個加密通道至一些邏輯通道上,它運行在用戶認證層協(xié)議之上。
當安全的傳輸層連接建立之后,客戶端將發(fā)送一個服務請求。當用戶認證層連接建立之后將發(fā)送第二個服務請求。這就允許新定義的協(xié)議可以和以前的協(xié) 議共存。連接協(xié)議提供可用作多種目的通道,為設(shè)置安全交互Shell會話和傳輸任意的TCP/IP端口和X11連接提供標準方法。
3、SSH的安全驗證
從客戶端來看,SSH提供兩種級別的安全驗證。
第一種級別(基于口令的安全驗證),只要你知道自己的帳號和口令,就可以登錄到遠程主機,并且所有傳輸?shù)臄?shù)據(jù)都會被加密。但是,這種驗證方式不 能保證你正在連接的服務器就是你想連接的服務器。可能會有別的服務器在冒充真正的服務器,也就是受到"中間人"這種攻擊方式的攻擊。
第二種級別(基于密匙的安全驗證),需要依靠密匙,也就是你必須為自己創(chuàng)建一對密匙,并把公有密匙放在需要訪問的服務器上。如果你要連接到 SSH服務器上,客戶端軟件就會向服務器發(fā)出請求,請求用你的密匙進行安全驗證。服務器收到請求之后,先在你在該服務器的用戶根目錄下尋找你的公有密匙, 然后把它和你發(fā)送過來的公有密匙進行比較。如果兩個密匙一致,服務器就用公有密匙加密"質(zhì)詢"(challenge)并把它發(fā)送給客戶端軟件。客戶端軟件 收到"質(zhì)詢"之后就可以用你的私人密匙解密再把它發(fā)送給服務器。
與第一種級別相比,第二種級別不需要在網(wǎng)絡(luò)上傳送用戶口令。另外,第二種級別不僅加密所有傳送的數(shù)據(jù),而"中間人"這種攻擊方式也是不可能的(因為他沒有你的私人密匙)。但是整個登錄的過程可能慢一些。
4、SSH的應用
首先,SSH最常見的應用就是,用它來取代傳統(tǒng)的Telnet、FTP等網(wǎng)絡(luò)應用程序,通過SSH登錄到遠方機器執(zhí)行你想進行的工作與命令。在 不安全的網(wǎng)路通訊環(huán)境中,它提供了很強的驗證(authentication)機制與非常安全的通訊環(huán)境。實際上,SSH開發(fā)者的原意是設(shè)計它來取代原 UNIX系統(tǒng)上的rcp、rlogin、rsh等指令程序的;但經(jīng)過適當包裝后,發(fā)現(xiàn)它在功能上完全可以取代傳統(tǒng)的Telnet、FTP等應用程序。
傳統(tǒng) BSD 風格的 r 系列指令(如 rcp,rsh,rlogin)往往都被視為不安全的,很容易就被各種網(wǎng)絡(luò)攻擊手段所破解,幾乎所有找得到有關(guān)UNIX安全的書或文件,都會一而再、再而 三地警告系統(tǒng)管理者,留心r系列指令的設(shè)定,甚至要求系統(tǒng)管理者將r系列指令通通關(guān)閉。
而用來替代r系列指令的SSH,則在安全方面做了極大的強化,不但對通訊內(nèi)容可以進行極為安全的加密保護,同時也強化了對身份驗證的安全機制, 它應用了在密碼學(Cryptography)中已發(fā)展出來的數(shù)種安全加密機制,如 Symmetric Key Cryptography,Asymmetric Key Cryptography, One-way Hash Function,Random-number Generation等,來加強對于身份驗證與通訊內(nèi)容的安全保護。通訊時資料的加密有IDEA,three-key triple DES,DES,RC4-128,TSS,Blowfish 等數(shù)種多種安全加密算法可供選擇,加密的key則是通過 RSA 進行交換的。資料的加密可以對抗IP spoofing,RSA這種非對稱性的加密機制則可用來對抗DNS spoofing與IP routing spoofing,同時RSA也可以進行對主機身份的驗證。
其次,通過使用用SSH可以在本地主機和遠程服務器之間設(shè)置"加密通道",并且這樣設(shè)置的"加密通道"可以跟常見的Pop應用程序、X應用程序、Linuxconf應用程序相結(jié)合,提供安全保障。
SSH的"加密通道"是通過"端口轉(zhuǎn)發(fā)"來實現(xiàn)的。你可以在本地端口(沒有用到的)和在遠程服務器上運行的某個服務的端口之間建立"加密通 道"。然后只要連接到本地端口。所有對本地端口的請求都被SSH加密并且轉(zhuǎn)發(fā)到遠程服務器的端口。當然只有遠程服務器上運行SSH服務器軟件的時候"加密 通道"才能工作。



















