《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于SSH的網(wǎng)絡(luò)安全解決方案
基于SSH的網(wǎng)絡(luò)安全解決方案
摘要: Internet是當(dāng)今廣泛使用的計(jì)算機(jī)網(wǎng)絡(luò),,TCP/IP協(xié)議則是Internet采用的核心網(wǎng)絡(luò)通信協(xié)議,。由于TCP/IP協(xié)議本身缺乏可靠的安全機(jī)制以及Internet的開放性,其安全性就顯得更加脆弱。目前有多種網(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)各
Abstract:
Key words :

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é)議提供端對端的安全通訊,;在應(yīng)用層則可以實(shí)現(xiàn)對某些特殊服務(wù)進(jìn)行單獨(dú)保護(hù),,如S-HTTP等。在眾多的網(wǎng)絡(luò)安全解決方案中,,當(dāng)然可以采用VPN和防火墻來保護(hù)自己的信息安全,。然而,除了這些措施以外,,很多公司實(shí)際上遺漏了一種不起眼但卻很健壯有效的解決方案---(SSH(Secure?。樱瑁澹欤欤?br />
1?。樱樱葏f(xié)議

1.1?。樱樱葏f(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要求每一個使用本協(xié)議的主機(jī)都必須至少有一個自己的主機(jī)密匙對,服務(wù)器方通過對客戶方主機(jī)密匙的認(rèn)證之后,,才允許其連接請求,。一個主機(jī)可以使用多個密匙,針對不同的密匙算法而擁有不同的密匙,。

SSH在運(yùn)行方式上,,不像其他TCP/IP應(yīng)用,被設(shè)計(jì)為工作于自己的基礎(chǔ)之上,,而不是利用包裝(Wrappers)或通過Internet守護(hù)進(jìn)程inetd運(yùn)行,。

1.2 SSH協(xié)議工作機(jī)制

根據(jù)IETF關(guān)于SSH草案的定義,,SSH協(xié)議包含3個組成部分(層次),。

(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é)議上時,,SSH服務(wù)器一端一般會監(jiān)聽TCP22端口,一旦客戶端和服務(wù)器端的TCP連接建立起來,,SSH傳輸層協(xié)議就開始發(fā)揮作用了,。在這個階段,客戶端和服務(wù)器要約定使用的SSH協(xié)議版本,,要協(xié)商選定雙方都支持的認(rèn)證算法,、加密算法、哈希算法和數(shù)據(jù)壓縮算法,。協(xié)商好認(rèn)證算法和密匙交換方法后,,服務(wù)器端會向客戶端發(fā)送自己的主機(jī)密匙(HostKey),即服務(wù)器的公匙(PublicKey),,以驗(yàn)證服務(wù)器的身份,。雙方還要依據(jù)協(xié)商好的加密算法生成一次性加密密匙,用于對整個商變更加密密匙,。此外,,傳輸層協(xié)議需要生成一個會話ID(Session Identifier),,用于惟一標(biāo)識本次會話連接,。等所有這些過程結(jié)束后,,客戶端就可以向服務(wù)器發(fā)送服務(wù)請求了,服務(wù)器接受2類請求:用戶認(rèn)證服務(wù)(SSH-USERAUTH)和連接服務(wù)(SSH-COMMECTION),。

SSH支持的公匙算法有DSA和RSA,,支持的對稱密匙算法包括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)證時,,假定底層(傳輸層)協(xié)議已經(jīng)提供了數(shù)據(jù)完整性和機(jī)密性保護(hù),。用戶認(rèn)證協(xié)議接受傳輸層協(xié)議確定的會話ID,作為本次會話過程的惟一標(biāo)識,。服務(wù)器首先會發(fā)起用戶認(rèn)證,,他他會告訴客戶端服務(wù)器所支持的認(rèn)證方式,客戶端可以從中選擇,。一旦用戶認(rèn)證成功,,根據(jù)客戶端的請求,服務(wù)器將會啟動相應(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會話,,支持遠(yuǎn)程命令執(zhí)行,提供TCP端口以及X11連接轉(zhuǎn)發(fā)功能,。通過將惟一一個加密隧道(tunnel)多路復(fù)用成若干個邏輯通道,,提供給更高層的應(yīng)用協(xié)議使用。邏輯通道是由兩端的通道號來惟一標(biāo)識的,。要啟動某個應(yīng)用服務(wù),,首先要建立一個新的邏輯通道,這期間,,先要分配兩端的通道號,,協(xié)商緩存窗口的大小,然后是建立正式的會話,啟動應(yīng)用程序,。各種高層應(yīng)用協(xié)議可以相對獨(dú)立于SSH基本體系之外,,并依靠這個基本框架,通過連接協(xié)議使用SSH的安全機(jī)制,。

1.3 核心算法

以SSH協(xié)議2.0為例,其常用公匙算法RSA或DSA進(jìn)行身份認(rèn)證,,用對稱密匙算法3DES進(jìn)行傳輸數(shù)據(jù)加密,, 用Diffie-Hellman密匙協(xié)議算法交換密匙,用散列函數(shù)SHA-1或MD5進(jìn)行完整性檢測,,用zlib進(jìn)行數(shù)據(jù)壓縮,。

2 具體應(yīng)用及安全模型

具體應(yīng)用時,SSH可以提供3類服務(wù):

2.1 安全遠(yuǎn)程登錄和安全遠(yuǎn)程命令執(zhí)行:替代傳統(tǒng)的telnet和rlogin,,rsh命令

網(wǎng)絡(luò)遭受攻擊,,很多情況是由于服務(wù)器提供了Telnet服務(wù)引起的。對于UNIX系統(tǒng),,如果要遠(yuǎn)程管理他,,必定要使用遠(yuǎn)程終端,而要使用遠(yuǎn)程終端,,自然要在服務(wù)器上啟動Telnet服務(wù),。但是Telnet服務(wù)有一個致命的弱點(diǎn)他以明文的方式傳輸用戶名及口令,所以,,很容易被第三者竊取口令,。一種有效代替Telnet服務(wù)的工具就是SSH。用戶要登錄到遠(yuǎn)程計(jì)算機(jī)用戶賬號中,,可以使用命令:

#ssh?。酰螅澹颍睿幔恚澹溃颍澹恚铮簦澹悖铮恚穑酰簦澹?br />
整個登錄會話在客戶端和服務(wù)器之間傳輸時都是經(jīng)過加密的,從而實(shí)現(xiàn)了安全遠(yuǎn)程登錄,。

對系統(tǒng)管理員來說,,如果要查看局域網(wǎng)中4臺計(jì)算機(jī)(A,B,,C,,D)上的每個用戶啟動的進(jìn)程,按傳統(tǒng)方法,,可以使用rsh:

#?。猓椋睿螅?br />
for machine?。椋睢,。痢。隆。茫模洌?br />
rsh¥machine/usr/ucb/w

done

雖然這種方法可以達(dá)到目的,,卻不安全,。/usr/ucb/w的結(jié)果在網(wǎng)絡(luò)上是明文傳輸?shù)摹,?梢岳茫樱樱却妫遥樱?,?shí)現(xiàn)安全遠(yuǎn)程命令執(zhí)行。

2.2 安全文件傳輸:替代傳統(tǒng)的rcp,,ftp命令

傳統(tǒng)的文件傳輸程序(ftp.rcp或E-mail)都不能提供一種安全的解決方案,。當(dāng)文件在網(wǎng)絡(luò)上傳輸時,第三方總可以將其截獲并讀取其中的數(shù)據(jù)包,。要防止這種問題,,可以采取很多措施,例如,,在源計(jì)算機(jī)上使用PGP(PrettyGood?。校颍椋觯幔悖┲惖某绦?qū)ξ募M(jìn)行加密,然后使用傳統(tǒng)的方法把文件傳輸?shù)侥康挠?jì)算機(jī),,并在此處解密文件,。然而,這個過程比較復(fù)雜,,而且對用戶不是透明的,。利用 SSH,,用戶只需使用一個拷貝命令scp就可以在兩臺計(jì)算機(jī)之間安全的傳輸文件:#scp?。睿幔恚澹铮妫螅铮酰颍悖濉。睿幔恚澹铮妫洌澹螅簦椋睿幔簦椋铮?,文件在離開源計(jì)算機(jī)時 加密,,到達(dá)目的計(jì)算機(jī)時自動解密。雖然scp命令十分有效,,但用戶可能更熟悉ftp的命令,。sftp是在SSH之上的一個基于SFTP協(xié)議的獨(dú)立的文件傳輸工具:

#sftp username@remotecomputersftp>

sftp>

在一個sftp會話中可以調(diào)用多個命令進(jìn)行文件拷貝和處理,,而scp每次調(diào)用時都要打開一個新會話,。

其實(shí),SSH并不執(zhí)行文件傳輸,。在SSH協(xié)議中沒有任何傳輸文件的內(nèi)容,,SSH通信者不能請求對方通過SSH協(xié)議來發(fā)送或接收文件。scp,,sftp程序并沒有真正實(shí)現(xiàn)SSH協(xié)議,,也根本沒有融合什么安全特性。實(shí)際上,他們只是在一個子進(jìn)程中調(diào)用SSH進(jìn)行遠(yuǎn)程登錄,,然后傳輸文件,,最后調(diào)用SSH關(guān)閉本次連接而已。

2.3 轉(zhuǎn)發(fā):包括對各種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ù)通過對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,,并對經(jīng)過連接傳輸?shù)臄?shù)據(jù)進(jìn)行加解密操作,。用SSH對其他應(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)行一個Email閱讀程序,訪問位于企業(yè)局域網(wǎng)內(nèi)部的一臺IMAP服務(wù)器S,。要使IMAP連接通過SSH隧道,,就得在主機(jī)H上選擇一個本地端口(1 024~65?。担常担?,將其發(fā)送至遠(yuǎn)程套接字(S,143),。假設(shè)隨機(jī)選取本地端口2003,,則創(chuàng)建隧道的命令為:#sshL2003:localhost:143 S,,其中,,-L表明是本地轉(zhuǎn)發(fā),此時TCP客戶端與SSH客戶端同在本地主機(jī)上?,F(xiàn)在,,Email閱讀程序連接本地套接字(localhost,2003)即可安全的閱讀IMAP服務(wù)器上的郵件,。

遠(yuǎn)程轉(zhuǎn)發(fā)與本地轉(zhuǎn)發(fā)幾乎完全相同,,只是方向相反,此時TCP客戶端在遠(yuǎn)程,服務(wù)器在本地,,轉(zhuǎn)發(fā)連接由遠(yuǎn)程主機(jī)發(fā)起(其創(chuàng)建隧道的命令為#ssh-R2003:localhost:143?。龋?br />
一般意義上講,,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?。剞D(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ā)的一個特例,,SSH對此提供特別支持,。

以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í)際部署時可將防火墻與SSH服務(wù)器實(shí)現(xiàn)于同一臺計(jì)算機(jī),即企業(yè)局域網(wǎng)的網(wǎng)關(guān)主機(jī)中,。SSH可采用免費(fèi)的OpenSSH或商業(yè)產(chǎn)品F-Secure?。樱樱龋阑饓t采用普通的軟件防火墻產(chǎn)品,,例如東大阿爾派NetEye?。玻?。

 

 3 安全性分析

SSH解決了許多和網(wǎng)絡(luò)有關(guān)的安全漏洞,有效地防止了網(wǎng)絡(luò)竊聽(Sniffer),、IP欺騙,、DNS欺騙、連接劫持(Connection?。龋椋辏幔悖耄椋睿纾?、插入攻擊(Compensation Attack)和中間人攻擊(man-in-the-middle)等,,但并沒有解決全部問題,,尤其是他仍然容易受到針對底層TCP/IP缺陷而發(fā)起的服務(wù)器拒絕攻擊(DoS);他也不能解決一些考慮環(huán)境因素而產(chǎn)生的攻擊方法,,例如流量分析和隱秘通道,;也不能防止出現(xiàn)病毒,Trojin木馬和咖啡豆(coffee?。螅穑椋欤欤?。對于TCP/IP的缺陷引起的問題,只能通過更低級的網(wǎng)絡(luò)層技術(shù)才能很好的解決,,例如硬件鏈路加密或IPSec,;對于流量分析攻擊,,SSH可以在空閑時發(fā)送一些隨機(jī)的,,非操作性的信息來干擾活動狀態(tài)的分析(目前的SSH產(chǎn)品還沒有實(shí)現(xiàn)這種特性);對于病毒等則需要病毒防火墻來解決,。

4 結(jié)語

SSH協(xié)議既可以提供主機(jī)認(rèn)證,,又提供用戶認(rèn)證,同時還提供數(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還有其不足之處,但相對于VPN和專業(yè)防火墻的復(fù)雜性和費(fèi)用來說,,也不失為一種可行的網(wǎng)絡(luò)安全解決方案,,尤其適合中小企業(yè)部署應(yīng)用。
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。