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