Internet是當(dāng)今廣泛使用的計(jì)算機(jī)網(wǎng)絡(luò),TCP/IP協(xié)議則是Internet采用的核心網(wǎng)絡(luò)通信協(xié)議。由于TCP/IP協(xié)議本身缺乏可靠的安全機(jī)制以及Internet的開放性,其安全性就顯得更加脆弱。目前有多種網(wǎng)絡(luò)安全" title="網(wǎng)絡(luò)安全">網(wǎng)絡(luò)安全的解決方案,分別實(shí)現(xiàn)在TCP/IP協(xié)議棧的不同層次上:在物理層上使用機(jī)械或電器方法防止信息被非法竊取,如電磁泄漏保護(hù);在數(shù)據(jù)鏈路層上使用硬件加密設(shè)備直接加/解密鏈路兩端的數(shù)據(jù)或采用用于組建遠(yuǎn)程訪問VPN的安全協(xié)議PPTP和L2TP創(chuàng)建安全通道;在網(wǎng)絡(luò)層上通過基于IPSec規(guī)范的安全協(xié)議實(shí)現(xiàn)各種方式的VPN;在傳輸層使用SSL,TLS等安全協(xié)議提供端對(duì)端的安全通訊;在應(yīng)用層則可以實(shí)現(xiàn)對(duì)某些特殊服務(wù)進(jìn)行單獨(dú)保護(hù),如S-HTTP等。在眾多的網(wǎng)絡(luò)安全解決方案中,當(dāng)然可以采用VPN和防火墻來保護(hù)自己的信息安全。然而,除了這些措施以外,很多公司實(shí)際上遺漏了一種不起眼但卻很健壯有效的解決方案---(SSH(Secure Shell)。
1?。樱樱葏f(xié)議
1.1 SSH協(xié)議介紹
SSH,即Secure?。樱瑁澹欤?,是一種介于傳輸層和應(yīng)用層之間的加密隧道協(xié)議,具有C/S的體系結(jié)構(gòu)。SSH可以在本地主機(jī)和遠(yuǎn)程服務(wù)器之間設(shè)置“加密隧道”,并且這樣設(shè)置的“加密隧道”可以跟常見的FTP,SMTP,POP應(yīng)用程序,X應(yīng)用程序相結(jié)和。目的是要在非安全的網(wǎng)絡(luò)上提供安全的遠(yuǎn)程登陸和相應(yīng)的網(wǎng)絡(luò)安全服務(wù)。既然SSH是以提供安全服務(wù)為目標(biāo)的協(xié)議,其中必不可少的是一套完備的密匙機(jī)制。由于SSH協(xié)議是面向互聯(lián)網(wǎng)中主機(jī)之間的互訪 與信息交換,所以主機(jī)密匙成為基本的密匙機(jī)制。即SSH要求每一個(gè)使用本協(xié)議的主機(jī)都必須至少有一個(gè)自己的主機(jī)密匙對(duì),服務(wù)器方通過對(duì)客戶方主機(jī)密匙的認(rèn)證之后,才允許其連接請(qǐng)求。一個(gè)主機(jī)可以使用多個(gè)密匙,針對(duì)不同的密匙算法而擁有不同的密匙。
SSH在運(yùn)行方式上,不像其他TCP/IP應(yīng)用,被設(shè)計(jì)為工作于自己的基礎(chǔ)之上,而不是利用包裝(Wrappers)或通過Internet守護(hù)進(jìn)程inetd運(yùn)行。
1.2?。樱樱葏f(xié)議工作機(jī)制
根據(jù)IETF關(guān)于SSH草案的定義,SSH協(xié)議包含3個(gè)組成部分(層次)。
(1)傳輸層協(xié)議(SSH-TRANS)
SSH的傳輸層協(xié)議負(fù)責(zé)進(jìn)行服務(wù)器認(rèn)證,數(shù)據(jù)加密和完整性保護(hù),并可以提供數(shù)據(jù)壓縮的功能。SSH傳輸層協(xié)議是建立在提供“底層”可靠的TCP連接之上的,當(dāng)然,也可以用在其他可靠的數(shù)據(jù)流協(xié)議中。傳輸層的認(rèn)證是基于主機(jī)的(并非面向用戶的認(rèn)證),目的就在于為真正的上層應(yīng)用提供安全保證。當(dāng)SSH用在TCP/IP協(xié)議上時(shí),SSH服務(wù)器一端一般會(huì)監(jiān)聽TCP22端口,一旦客戶端和服務(wù)器端的TCP連接建立起來,SSH傳輸層協(xié)議就開始發(fā)揮作用了。在這個(gè)階段,客戶端和服務(wù)器要約定使用的SSH協(xié)議版本,要協(xié)商選定雙方都支持的認(rèn)證算法、加密算法、哈希算法和數(shù)據(jù)壓縮算法。協(xié)商好認(rèn)證算法和密匙交換方法后,服務(wù)器端會(huì)向客戶端發(fā)送自己的主機(jī)密匙(HostKey),即服務(wù)器的公匙(PublicKey),以驗(yàn)證服務(wù)器的身份。雙方還要依據(jù)協(xié)商好的加密算法生成一次性加密密匙,用于對(duì)整個(gè)商變更加密密匙。此外,傳輸層協(xié)議需要生成一個(gè)會(huì)話ID(Session?。桑洌澹睿簦椋妫椋澹颍?,用于惟一標(biāo)識(shí)本次會(huì)話連接。等所有這些過程結(jié)束后,客戶端就可以向服務(wù)器發(fā)送服務(wù)請(qǐng)求了,服務(wù)器接受2類請(qǐng)求:用戶認(rèn)證服務(wù)(SSH-USERAUTH)和連接服務(wù)(SSH-COMMECTION)。
SSH支持的公匙算法有DSA和RSA,支持的對(duì)稱密匙算法包括DES,3DES,Blowfish,Twofish,IDEA,ARCFOUR和CAST-128,支持的哈希算法有SHA-1,MD5等,支持Diffie-Hellman密匙交換方法。
(2)用戶認(rèn)證協(xié)議(SSH-UXERAUTH)
用戶認(rèn)證協(xié)議是建立在傳輸層協(xié)議之上的,當(dāng)用戶進(jìn)行認(rèn)證時(shí),假定底層(傳輸層)協(xié)議已經(jīng)提供了數(shù)據(jù)完整性和機(jī)密性保護(hù)。用戶認(rèn)證協(xié)議接受傳輸層協(xié)議確定的會(huì)話ID,作為本次會(huì)話過程的惟一標(biāo)識(shí)。服務(wù)器首先會(huì)發(fā)起用戶認(rèn)證,他他會(huì)告訴客戶端服務(wù)器所支持的認(rèn)證方式,客戶端可以從中選擇。一旦用戶認(rèn)證成功,根據(jù)客戶端的請(qǐng)求,服務(wù)器將會(huì)啟動(dòng)相應(yīng)的服務(wù)(在連接協(xié)議建立的邏輯通道中進(jìn)行數(shù)據(jù)傳輸)。SSH支持的用戶認(rèn)證方法包括:公匙認(rèn)證方法、口令認(rèn)證方法、基于主機(jī)的認(rèn)證和PAM認(rèn)證等。
(3)連接協(xié)議(SSH-CONNECT)
連接協(xié)議可以提供交互的Shell會(huì)話,支持遠(yuǎn)程命令執(zhí)行,提供TCP端口以及X11連接轉(zhuǎn)發(fā)功能。通過將惟一一個(gè)加密隧道(tunnel)多路復(fù)用成若干個(gè)邏輯通道,提供給更高層的應(yīng)用協(xié)議使用。邏輯通道是由兩端的通道號(hào)來惟一標(biāo)識(shí)的。要啟動(dòng)某個(gè)應(yīng)用服務(wù),首先要建立一個(gè)新的邏輯通道,這期間,先要分配兩端的通道號(hào),協(xié)商緩存窗口的大小,然后是建立正式的會(huì)話,啟動(dòng)應(yīng)用程序。各種高層應(yīng)用協(xié)議可以相對(duì)獨(dú)立于SSH基本體系之外,并依靠這個(gè)基本框架,通過連接協(xié)議使用SSH的安全機(jī)制。
1.3 核心算法
以SSH協(xié)議2.0為例,其常用公匙算法RSA或DSA進(jìn)行身份認(rèn)證,用對(duì)稱密匙算法3DES進(jìn)行傳輸數(shù)據(jù)加密, 用Diffie-Hellman密匙協(xié)議算法交換密匙,用散列函數(shù)SHA-1或MD5進(jìn)行完整性檢測(cè),用zlib進(jìn)行數(shù)據(jù)壓縮。
2 具體應(yīng)用及安全模型
具體應(yīng)用時(shí),SSH可以提供3類服務(wù):
2.1 安全遠(yuǎn)程登錄和安全遠(yuǎn)程命令執(zhí)行:替代傳統(tǒng)的telnet和rlogin,rsh命令
網(wǎng)絡(luò)遭受攻擊,很多情況是由于服務(wù)器提供了Telnet服務(wù)引起的。對(duì)于UNIX系統(tǒng),如果要遠(yuǎn)程管理他,必定要使用遠(yuǎn)程終端,而要使用遠(yuǎn)程終端,自然要在服務(wù)器上啟動(dòng)Telnet服務(wù)。但是Telnet服務(wù)有一個(gè)致命的弱點(diǎn)他以明文的方式傳輸用戶名及口令,所以,很容易被第三者竊取口令。一種有效代替Telnet服務(wù)的工具就是SSH。用戶要登錄到遠(yuǎn)程計(jì)算機(jī)用戶賬號(hào)中,可以使用命令:
#ssh?。酰螅澹颍睿幔恚澹溃颍澹恚铮簦澹悖铮恚穑酰簦澹?br />
整個(gè)登錄會(huì)話在客戶端和服務(wù)器之間傳輸時(shí)都是經(jīng)過加密的,從而實(shí)現(xiàn)了安全遠(yuǎn)程登錄。
對(duì)系統(tǒng)管理員來說,如果要查看局域網(wǎng)中4臺(tái)計(jì)算機(jī)(A,B,C,D)上的每個(gè)用戶啟動(dòng)的進(jìn)程,按傳統(tǒng)方法,可以使用rsh:
#?。猓椋睿螅?br />
for?。恚幔悖瑁椋睿濉。椋睢。痢。隆。茫模洌?br />
rsh¥machine/usr/ucb/w
done
雖然這種方法可以達(dá)到目的,卻不安全。/usr/ucb/w的結(jié)果在網(wǎng)絡(luò)上是明文傳輸?shù)?。可以利用SSH代替RSH,?shí)現(xiàn)安全遠(yuǎn)程命令執(zhí)行。
2.2 安全文件傳輸:替代傳統(tǒng)的rcp,ftp命令
傳統(tǒng)的文件傳輸程序(ftp.rcp或E-mail)都不能提供一種安全的解決方案。當(dāng)文件在網(wǎng)絡(luò)上傳輸時(shí),第三方總可以將其截獲并讀取其中的數(shù)據(jù)包。要防止這種問題,可以采取很多措施,例如,在源計(jì)算機(jī)上使用PGP(PrettyGood?。校颍椋觯幔悖┲惖某绦?qū)ξ募M(jìn)行加密,然后使用傳統(tǒng)的方法把文件傳輸?shù)侥康挠?jì)算機(jī),并在此處解密文件。然而,這個(gè)過程比較復(fù)雜,而且對(duì)用戶不是透明的。利用?。樱樱?,用戶只需使用一個(gè)拷貝命令scp就可以在兩臺(tái)計(jì)算機(jī)之間安全的傳輸文件:#scp?。睿幔恚澹铮妫螅铮酰颍悖濉。睿幔恚澹铮妫洌澹螅簦椋睿幔簦椋铮?,文件在離開源計(jì)算機(jī)時(shí) 加密,到達(dá)目的計(jì)算機(jī)時(shí)自動(dòng)解密。雖然scp命令十分有效,但用戶可能更熟悉ftp的命令。sftp是在SSH之上的一個(gè)基于SFTP協(xié)議的獨(dú)立的文件傳輸工具:
#sftp?。酰螅澹颍睿幔恚澹溃颍澹恚铮簦澹悖铮恚穑酰簦澹颍螅妫簦穑?br />
sftp>
在一個(gè)sftp會(huì)話中可以調(diào)用多個(gè)命令進(jìn)行文件拷貝和處理,而scp每次調(diào)用時(shí)都要打開一個(gè)新會(huì)話。
其實(shí),SSH并不執(zhí)行文件傳輸。在SSH協(xié)議中沒有任何傳輸文件的內(nèi)容,SSH通信者不能請(qǐng)求對(duì)方通過SSH協(xié)議來發(fā)送或接收文件。scp,sftp程序并沒有真正實(shí)現(xiàn)SSH協(xié)議,也根本沒有融合什么安全特性。實(shí)際上,他們只是在一個(gè)子進(jìn)程中調(diào)用SSH進(jìn)行遠(yuǎn)程登錄,然后傳輸文件,最后調(diào)用SSH關(guān)閉本次連接而已。
2.3 轉(zhuǎn)發(fā):包括對(duì)各種TCP應(yīng)用的端口轉(zhuǎn)發(fā)以及X11連接轉(zhuǎn)發(fā)
SSH可以增加基于TCP/IP的應(yīng)用程序的安全性。這是通過一種稱為轉(zhuǎn)發(fā)(forwarding)或隧道(tunneling)的技術(shù)來實(shí)現(xiàn)的。該技術(shù)通過對(duì)TCP/IP連接進(jìn)行重新路由,使其通過SSH連接傳輸,并且透明地進(jìn)行端到端的加密(實(shí)際上,這已經(jīng)算是基本的VPN功能了)。
2.3.1 端口轉(zhuǎn)發(fā)(port?。妫铮颍鳎幔颍洌椋睿纾?br />
SSH使用的傳輸機(jī)制是TCP/IP,通常使用的都是服務(wù)器的TCP端口22,并對(duì)經(jīng)過連接傳輸?shù)臄?shù)據(jù)進(jìn)行加解密操作。用SSH對(duì)其他應(yīng)用程序在別的TCP端口上建立的TCP/IP傳輸進(jìn)行加密和解密,這一過程稱為端口轉(zhuǎn)發(fā)。端口轉(zhuǎn)發(fā)可以使telnet,pop3,smtp,nntp和imap等基于TCP/IP的不安全協(xié)議變得安全。
假設(shè)用戶要在家里的主機(jī)H上運(yùn)行一個(gè)Email閱讀程序,訪問位于企業(yè)局域網(wǎng)內(nèi)部的一臺(tái)IMAP服務(wù)器S。要使IMAP連接通過SSH隧道,就得在主機(jī)H上選擇一個(gè)本地端口(1?。埃玻础叮怠。担常担瑢⑵浒l(fā)送至遠(yuǎn)程套接字(S,143)。假設(shè)隨機(jī)選取本地端口2003,則創(chuàng)建隧道的命令為:#sshL2003:localhost:143?。?,其中,-L表明是本地轉(zhuǎn)發(fā),此時(shí)TCP客戶端與SSH客戶端同在本地主機(jī)上?,F(xiàn)在,Email閱讀程序連接本地套接字(localhost,2003)即可安全的閱讀IMAP服務(wù)器上的郵件。
遠(yuǎn)程轉(zhuǎn)發(fā)與本地轉(zhuǎn)發(fā)幾乎完全相同,只是方向相反,此時(shí)TCP客戶端在遠(yuǎn)程,服務(wù)器在本地,轉(zhuǎn)發(fā)連接由遠(yuǎn)程主機(jī)發(fā)起(其創(chuàng)建隧道的命令為#ssh-R2003:localhost:143?。龋?。
一般意義上講,SSH端口轉(zhuǎn)發(fā)是TCP使用的一種通用代理機(jī)制,而且只能用于TCP/IP協(xié)議,如果協(xié)議不是基于TCP的,比如基于UDP的DNS,DHCP,NFS和NetBIOS或者非IP類協(xié)議,如AppleTalk或Novell的SPX/IPX,就不能使用端口轉(zhuǎn)發(fā)機(jī)制。
2.3.2 X轉(zhuǎn)發(fā)
XWindow是Unix工作站上很流行的窗口系統(tǒng),其中一項(xiàng)重要功能就是他的透明性。用戶可以運(yùn)行遠(yuǎn)程X應(yīng)用程序,并將其顯示在本地機(jī)器上。但是機(jī)器間的通訊不安全,他完全暴露在窺探器之下。利用SSH,可以將X協(xié)議連接導(dǎo)入SSH連接,以保障其安全性,并提供更強(qiáng)的認(rèn)證,此項(xiàng)功能稱為X轉(zhuǎn)發(fā)。X轉(zhuǎn)發(fā)是端口轉(zhuǎn)發(fā)的一個(gè)特例,SSH對(duì)此提供特別支持。
以SSH2.0協(xié)議的實(shí)現(xiàn)為例,在客戶端配置文件中將關(guān)鍵字ForwardX11設(shè)置成yes或no來啟用或禁用X轉(zhuǎn)發(fā)。服務(wù)器范圍配置關(guān)鍵字X11Forwarding及其同義詞ForwardX11和AllowX11Forwarding可以在服務(wù)器端啟用/禁用X轉(zhuǎn)發(fā)。
在以上SSH所提供的3種服務(wù)的基礎(chǔ)上,可以建構(gòu)基于SSH的網(wǎng)絡(luò)安全模型,如圖1所示。
企業(yè)實(shí)際部署時(shí)可將防火墻與SSH服務(wù)器實(shí)現(xiàn)于同一臺(tái)計(jì)算機(jī),即企業(yè)局域網(wǎng)的網(wǎng)關(guān)主機(jī)中。SSH可采用免費(fèi)的OpenSSH或商業(yè)產(chǎn)品F-Secure?。樱樱?,而防火墻則采用普通的軟件防火墻產(chǎn)品,例如東大阿爾派NetEye?。玻?。
3 安全性分析
SSH解決了許多和網(wǎng)絡(luò)有關(guān)的安全漏洞,有效地防止了網(wǎng)絡(luò)竊聽(Sniffer)、IP欺騙、DNS欺騙、連接劫持(Connection?。龋椋辏幔悖耄椋睿纾?、插入攻擊(Compensation?。粒簦簦幔悖耄┖椭虚g人攻擊(man-in-the-middle)等,但并沒有解決全部問題,尤其是他仍然容易受到針對(duì)底層TCP/IP缺陷而發(fā)起的服務(wù)器拒絕攻擊(DoS);他也不能解決一些考慮環(huán)境因素而產(chǎn)生的攻擊方法,例如流量分析和隱秘通道;也不能防止出現(xiàn)病毒,Trojin木馬和咖啡豆(coffee?。螅穑椋欤欤?。對(duì)于TCP/IP的缺陷引起的問題,只能通過更低級(jí)的網(wǎng)絡(luò)層技術(shù)才能很好的解決,例如硬件鏈路加密或IPSec;對(duì)于流量分析攻擊,SSH可以在空閑時(shí)發(fā)送一些隨機(jī)的,非操作性的信息來干擾活動(dòng)狀態(tài)的分析(目前的SSH產(chǎn)品還沒有實(shí)現(xiàn)這種特性);對(duì)于病毒等則需要病毒防火墻來解決。
4 結(jié)語
SSH協(xié)議既可以提供主機(jī)認(rèn)證,又提供用戶認(rèn)證,同時(shí)還提供數(shù)據(jù)壓縮,數(shù)據(jù)機(jī)密性和完整性保護(hù)。SSH的不足之處在于他使用的是手工分發(fā)并預(yù)配置的公匙而非基于證書的密匙管理。與SSL和TLS相比,這是SSH的主要缺陷。但從SSH2.0協(xié)議開始允許一同使用PKI證書和密匙,將來在SSH產(chǎn)品中把這種特性和通用的PKI一起實(shí)現(xiàn),這樣可以降低密匙管理的負(fù)擔(dān)并提供更強(qiáng)大的安全保障。雖然SSH還有其不足之處,但相對(duì)于VPN和專業(yè)防火墻的復(fù)雜性和費(fèi)用來說,也不失為一種可行的網(wǎng)絡(luò)安全解決方案,尤其適合中小企業(yè)部署應(yīng)用。