《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 基于SSH的網(wǎng)絡(luò)安全解決方案
基于SSH的網(wǎng)絡(luò)安全解決方案
摘要: Internet是當今廣泛使用的計算機網(wǎng)絡(luò),TCP/IP協(xié)議則是Internet采用的核心網(wǎng)絡(luò)通信協(xié)議。由于TCP/IP協(xié)議本身缺乏可靠的安全機制以及Internet的開放性,其安全性就顯得更加脆弱。目前有多種網(wǎng)絡(luò)安全的解決方案,分別實現(xiàn)在TCP/IP協(xié)議棧的不同層次上:在物理層上使用機械或電器方法防止信息被非法竊取,如電磁泄漏保護;在數(shù)據(jù)鏈路層上使用硬件加密設(shè)備直接加/解密鏈路兩端的數(shù)據(jù)或采用用于組建遠程訪問VPN的安全協(xié)議PPTP和L2TP創(chuàng)建安全通道;在網(wǎng)絡(luò)層上通過基于IPSec規(guī)范的安全協(xié)議實現(xiàn)各
Abstract:
Key words :

Internet是當今廣泛使用的計算機網(wǎng)絡(luò),TCP/IP協(xié)議則是Internet采用的核心網(wǎng)絡(luò)通信協(xié)議。由于TCP/IP協(xié)議本身缺乏可靠的安全機制以及Internet的開放性,其安全性就顯得更加脆弱。目前有多種網(wǎng)絡(luò)安全" title="網(wǎng)絡(luò)安全">網(wǎng)絡(luò)安全的解決方案,分別實現(xiàn)在TCP/IP協(xié)議棧的不同層次上:在物理層上使用機械或電器方法防止信息被非法竊取,如電磁泄漏保護;在數(shù)據(jù)鏈路層上使用硬件加密設(shè)備直接加/解密鏈路兩端的數(shù)據(jù)或采用用于組建遠程訪問VPN的安全協(xié)議PPTP和L2TP創(chuàng)建安全通道;在網(wǎng)絡(luò)層上通過基于IPSec規(guī)范的安全協(xié)議實現(xiàn)各種方式的VPN;在傳輸層使用SSL,TLS等安全協(xié)議提供端對端的安全通訊;在應(yīng)用層則可以實現(xiàn)對某些特殊服務(wù)進行單獨保護,如S-HTTP等。在眾多的網(wǎng)絡(luò)安全解決方案中,當然可以采用VPN和防火墻來保護自己的信息安全。然而,除了這些措施以外,很多公司實際上遺漏了一種不起眼但卻很健壯有效的解決方案---(SSH(Secure?。樱瑁澹欤欤?。

1?。樱樱葏f(xié)議

1.1?。樱樱葏f(xié)議介紹

SSH,即Secure?。樱瑁澹欤欤且环N介于傳輸層和應(yīng)用層之間的加密隧道協(xié)議,具有C/S的體系結(jié)構(gòu)。SSH可以在本地主機和遠程服務(wù)器之間設(shè)置“加密隧道”,并且這樣設(shè)置的“加密隧道”可以跟常見的FTP,SMTP,POP應(yīng)用程序,X應(yīng)用程序相結(jié)和。目的是要在非安全的網(wǎng)絡(luò)上提供安全的遠程登陸和相應(yīng)的網(wǎng)絡(luò)安全服務(wù)。既然SSH是以提供安全服務(wù)為目標的協(xié)議,其中必不可少的是一套完備的密匙機制。由于SSH協(xié)議是面向互聯(lián)網(wǎng)中主機之間的互訪 與信息交換,所以主機密匙成為基本的密匙機制。即SSH要求每一個使用本協(xié)議的主機都必須至少有一個自己的主機密匙對,服務(wù)器方通過對客戶方主機密匙的認證之后,才允許其連接請求。一個主機可以使用多個密匙,針對不同的密匙算法而擁有不同的密匙。

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

1.2?。樱樱葏f(xié)議工作機制

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

(1)傳輸層協(xié)議(SSH-TRANS)

SSH的傳輸層協(xié)議負責進行服務(wù)器認證,數(shù)據(jù)加密和完整性保護,并可以提供數(shù)據(jù)壓縮的功能。SSH傳輸層協(xié)議是建立在提供“底層”可靠的TCP連接之上的,當然,也可以用在其他可靠的數(shù)據(jù)流協(xié)議中。傳輸層的認證是基于主機的(并非面向用戶的認證),目的就在于為真正的上層應(yīng)用提供安全保證。當SSH用在TCP/IP協(xié)議上時,SSH服務(wù)器一端一般會監(jiān)聽TCP22端口,一旦客戶端和服務(wù)器端的TCP連接建立起來,SSH傳輸層協(xié)議就開始發(fā)揮作用了。在這個階段,客戶端和服務(wù)器要約定使用的SSH協(xié)議版本,要協(xié)商選定雙方都支持的認證算法、加密算法、哈希算法和數(shù)據(jù)壓縮算法。協(xié)商好認證算法和密匙交換方法后,服務(wù)器端會向客戶端發(fā)送自己的主機密匙(HostKey),即服務(wù)器的公匙(PublicKey),以驗證服務(wù)器的身份。雙方還要依據(jù)協(xié)商好的加密算法生成一次性加密密匙,用于對整個商變更加密密匙。此外,傳輸層協(xié)議需要生成一個會話ID(Session?。桑洌澹睿簦椋妫椋澹颍糜谖┮粯俗R本次會話連接。等所有這些過程結(jié)束后,客戶端就可以向服務(wù)器發(fā)送服務(wù)請求了,服務(wù)器接受2類請求:用戶認證服務(wù)(SSH-USERAUTH)和連接服務(wù)(SSH-COMMECTION)。

SSH支持的公匙算法有DSA和RSA,支持的對稱密匙算法包括DES,3DES,Blowfish,Twofish,IDEA,ARCFOUR和CAST-128,支持的哈希算法有SHA-1,MD5等,支持Diffie-Hellman密匙交換方法。

(2)用戶認證協(xié)議(SSH-UXERAUTH)

用戶認證協(xié)議是建立在傳輸層協(xié)議之上的,當用戶進行認證時,假定底層(傳輸層)協(xié)議已經(jīng)提供了數(shù)據(jù)完整性和機密性保護。用戶認證協(xié)議接受傳輸層協(xié)議確定的會話ID,作為本次會話過程的惟一標識。服務(wù)器首先會發(fā)起用戶認證,他他會告訴客戶端服務(wù)器所支持的認證方式,客戶端可以從中選擇。一旦用戶認證成功,根據(jù)客戶端的請求,服務(wù)器將會啟動相應(yīng)的服務(wù)(在連接協(xié)議建立的邏輯通道中進行數(shù)據(jù)傳輸)。SSH支持的用戶認證方法包括:公匙認證方法、口令認證方法、基于主機的認證和PAM認證等。

(3)連接協(xié)議(SSH-CONNECT)

連接協(xié)議可以提供交互的Shell會話,支持遠程命令執(zhí)行,提供TCP端口以及X11連接轉(zhuǎn)發(fā)功能。通過將惟一一個加密隧道(tunnel)多路復(fù)用成若干個邏輯通道,提供給更高層的應(yīng)用協(xié)議使用。邏輯通道是由兩端的通道號來惟一標識的。要啟動某個應(yīng)用服務(wù),首先要建立一個新的邏輯通道,這期間,先要分配兩端的通道號,協(xié)商緩存窗口的大小,然后是建立正式的會話,啟動應(yīng)用程序。各種高層應(yīng)用協(xié)議可以相對獨立于SSH基本體系之外,并依靠這個基本框架,通過連接協(xié)議使用SSH的安全機制。

1.3 核心算法

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

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

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

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

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

#ssh username@remotecomputer

整個登錄會話在客戶端和服務(wù)器之間傳輸時都是經(jīng)過加密的,從而實現(xiàn)了安全遠程登錄。

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

#!/bin/sh

for?。恚幔悖瑁椋睿濉。椋睢。痢。隆。茫模洌?br />
rsh¥machine/usr/ucb/w

done

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

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

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

#sftp?。酰螅澹颍睿幔恚澹溃颍澹恚铮簦澹悖铮恚穑酰簦澹颍螅妫簦穑?br />
sftp>

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

其實,SSH并不執(zhí)行文件傳輸。在SSH協(xié)議中沒有任何傳輸文件的內(nèi)容,SSH通信者不能請求對方通過SSH協(xié)議來發(fā)送或接收文件。scp,sftp程序并沒有真正實現(xiàn)SSH協(xié)議,也根本沒有融合什么安全特性。實際上,他們只是在一個子進程中調(diào)用SSH進行遠程登錄,然后傳輸文件,最后調(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ù)來實現(xiàn)的。該技術(shù)通過對TCP/IP連接進行重新路由,使其通過SSH連接傳輸,并且透明地進行端到端的加密(實際上,這已經(jīng)算是基本的VPN功能了)。

2.3.1 端口轉(zhuǎn)發(fā)(port forwarding)

SSH使用的傳輸機制是TCP/IP,通常使用的都是服務(wù)器的TCP端口22,并對經(jīng)過連接傳輸?shù)臄?shù)據(jù)進行加解密操作。用SSH對其他應(yīng)用程序在別的TCP端口上建立的TCP/IP傳輸進行加密和解密,這一過程稱為端口轉(zhuǎn)發(fā)。端口轉(zhuǎn)發(fā)可以使telnet,pop3,smtp,nntp和imap等基于TCP/IP的不安全協(xié)議變得安全。

假設(shè)用戶要在家里的主機H上運行一個Email閱讀程序,訪問位于企業(yè)局域網(wǎng)內(nèi)部的一臺IMAP服務(wù)器S。要使IMAP連接通過SSH隧道,就得在主機H上選擇一個本地端口(1 024~65?。担常担?,將其發(fā)送至遠程套接字(S,143)。假設(shè)隨機選取本地端口2003,則創(chuàng)建隧道的命令為:#sshL2003:localhost:143 S,其中,-L表明是本地轉(zhuǎn)發(fā),此時TCP客戶端與SSH客戶端同在本地主機上。現(xiàn)在,Email閱讀程序連接本地套接字(localhost,2003)即可安全的閱讀IMAP服務(wù)器上的郵件。

遠程轉(zhuǎn)發(fā)與本地轉(zhuǎn)發(fā)幾乎完全相同,只是方向相反,此時TCP客戶端在遠程,服務(wù)器在本地,轉(zhuǎn)發(fā)連接由遠程主機發(fā)起(其創(chuàng)建隧道的命令為#ssh-R2003:localhost:143?。龋?。

一般意義上講,SSH端口轉(zhuǎn)發(fā)是TCP使用的一種通用代理機制,而且只能用于TCP/IP協(xié)議,如果協(xié)議不是基于TCP的,比如基于UDP的DNS,DHCP,NFS和NetBIOS或者非IP類協(xié)議,如AppleTalk或Novell的SPX/IPX,就不能使用端口轉(zhuǎn)發(fā)機制。

2.3.2 X轉(zhuǎn)發(fā)

XWindow是Unix工作站上很流行的窗口系統(tǒng),其中一項重要功能就是他的透明性。用戶可以運行遠程X應(yīng)用程序,并將其顯示在本地機器上。但是機器間的通訊不安全,他完全暴露在窺探器之下。利用SSH,可以將X協(xié)議連接導(dǎo)入SSH連接,以保障其安全性,并提供更強的認證,此項功能稱為X轉(zhuǎn)發(fā)。X轉(zhuǎn)發(fā)是端口轉(zhuǎn)發(fā)的一個特例,SSH對此提供特別支持。

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

 

 3 安全性分析

SSH解決了許多和網(wǎng)絡(luò)有關(guān)的安全漏洞,有效地防止了網(wǎng)絡(luò)竊聽(Sniffer)、IP欺騙、DNS欺騙、連接劫持(Connection Hijacking)、插入攻擊(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ā)送一些隨機的,非操作性的信息來干擾活動狀態(tài)的分析(目前的SSH產(chǎn)品還沒有實現(xiàn)這種特性);對于病毒等則需要病毒防火墻來解決。

4 結(jié)語

SSH協(xié)議既可以提供主機認證,又提供用戶認證,同時還提供數(shù)據(jù)壓縮,數(shù)據(jù)機密性和完整性保護。SSH的不足之處在于他使用的是手工分發(fā)并預(yù)配置的公匙而非基于證書的密匙管理。與SSL和TLS相比,這是SSH的主要缺陷。但從SSH2.0協(xié)議開始允許一同使用PKI證書和密匙,將來在SSH產(chǎn)品中把這種特性和通用的PKI一起實現(xiàn),這樣可以降低密匙管理的負擔并提供更強大的安全保障。雖然SSH還有其不足之處,但相對于VPN和專業(yè)防火墻的復(fù)雜性和費用來說,也不失為一種可行的網(wǎng)絡(luò)安全解決方案,尤其適合中小企業(yè)部署應(yīng)用。
 

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