[摘要]文章分析RADIUS協(xié)議、RADIUS 的基本消息交互流程,以及RADIUS 協(xié)議的報文結(jié)構(gòu),最后結(jié)合上述分析,詳細(xì)討論華為交換機上的RADIUS 協(xié)議的配置及命令。
[關(guān)鍵詞]RADIUS;網(wǎng)絡(luò)安全;消息交互;報文;配置
[作者簡介]謝聲時,中國人民銀行??谥行闹熊浖こ處煟芯糠较颍壕W(wǎng)絡(luò)安全,海南???,570105
[中圖分類號] TP393[文獻(xiàn)標(biāo)識碼] A[文章編號] 1007-7723(2008)08-0036-0003
一、RADIUS協(xié)議簡介
RADIUS(Remote Authentication Dial-In User Service,遠(yuǎn)程認(rèn)證撥號用戶服務(wù)),是一種分布式的、客戶端/服務(wù)器結(jié)構(gòu)的信息交互協(xié)議,能保護(hù)網(wǎng)絡(luò)不受未授權(quán)訪問的干擾,常被應(yīng)用在既要求較高安全性又要求維持遠(yuǎn)程用戶訪問的各種網(wǎng)絡(luò)環(huán)境中。RADIUS 服務(wù)包括三個組成部分:(1)協(xié)議:RFC 2865 和RFC 2866 基于UDP/IP 層定義了RADIUS 幀格式及其消息傳輸機制,并定義了1812 作為認(rèn)證端口,1813 作為計費端口。(2)服務(wù)器:RADIUS 服務(wù)器運行在中心計算機或工作站上,包含了相關(guān)的用戶認(rèn)證和網(wǎng)絡(luò)服務(wù)訪問信息。(3)客戶端:位于撥號訪問服務(wù)器設(shè)備側(cè),可以遍布整個網(wǎng)絡(luò)。RADIUS 基于客戶端/服務(wù)器模型。交換機作為RADIUS 客戶端,負(fù)責(zé)傳輸用戶信息到指定的RADIUS 服務(wù)器,然后根據(jù)從服務(wù)器返回的信息對用戶進(jìn)行相應(yīng)處理(如接入/掛斷用戶)。RADIUS 服務(wù)器負(fù)責(zé)接收用戶連接請求,認(rèn)證用戶,然后給交換機返回所有需要的信息。RADIUS服務(wù)器通常要維護(hù)三個數(shù)據(jù)庫:
第一個數(shù)據(jù)庫“Users”用于存儲用戶信息(如用戶名、口令以及使用的協(xié)議、IP 地址等配置)。
第二個數(shù)據(jù)庫“Clients”用于存儲RADIUS 客戶端的信息(如共享密鑰)。
第三個數(shù)據(jù)庫“Dictionary”存儲的信息用于解釋RADIUS 協(xié)議中的屬性和屬性值的含義。
二、RADIUS 的基本消息交互流程
RADIUS客戶端(交換機)和RADIUS服務(wù)器之間通過共享密鑰來認(rèn)證交互的消息,增強了安全性。RADIUS協(xié)議合并了認(rèn)證和授權(quán)過程,即響應(yīng)報文中攜帶了授權(quán)信息。用戶、交換機、RADIUS服務(wù)器之間有著一定的交互流程?;窘换ゲ襟E如下:
1.用戶輸入用戶名和口令。
2.RADIUS客戶端根據(jù)用戶名和口令,向RADIUS服務(wù)器發(fā)送認(rèn)證請求包(ACCESS- Request)。
3.RADIUS 服務(wù)器將該用戶信息與Users 數(shù)據(jù)庫信息進(jìn)行對比分析,如果認(rèn)證成功,則將用戶的權(quán)限信息以認(rèn)證響應(yīng)包(Access-Accept)發(fā)送給RADIUS 客戶端;如果認(rèn)證失敗,則返回Access-Reject 響應(yīng)包。
4.RADIUS 客戶端根據(jù)接收到的認(rèn)證結(jié)果接入/拒絕用戶。如果可以接入用戶,則RADIUS 客戶端向RADIUS 服務(wù)器發(fā)送計費開始請求包(Accounting-Request),Status-Type 取值為start。
5.RADIUS 服務(wù)器返回計費開始響應(yīng)包(Accounting-Response)。
6.用戶開始訪問資源。
7.RADIUS 客戶端向RADIUS 服務(wù)器發(fā)送計費停止請求包(Accounting-Request),Status -Type 取值為stop。
8.RADIUS 服務(wù)器返回計費結(jié)束響應(yīng)包(Accounting-Response)。
9.用戶訪問資源結(jié)束。
三、RADIUS 協(xié)議的報文結(jié)構(gòu)
RADIUS協(xié)議采用UDP報文來承載數(shù)據(jù),通過定時器管理機制、重傳機制、備用服務(wù)器機制,確保RADIUS服務(wù)器和客戶端之間交互消息正確收發(fā)。RADIUS報文結(jié)構(gòu)如圖1所示。
1.Code域(1字節(jié))決定RADIUS報文的類型。
2.Identifier域(1字節(jié))用于匹配請求包和響應(yīng)包,隨著Attribute域改變、接收到有效響應(yīng)包而不斷變化,而在重傳時保持不變化。
3.Length域(2字節(jié))指明整個包的長度,內(nèi)容包括Code,Identifier,Length,Authenticator和Attribute。超過長度域的字節(jié)被視為填充,在接收時應(yīng)被忽略;如果包比長度域所指示的短時,則應(yīng)被丟棄。
4.Authenticator域(16字節(jié))用于驗證RADIUS服務(wù)器傳輸回來的報文,并且還用于密碼隱藏算法中,分為Request Authenticator和Response Authenticator。
5.Attribute域攜帶專門的認(rèn)證、授權(quán)和計費信息,提供請求和響應(yīng)報文的配置細(xì)節(jié),該域采用(Type、Length、Value)三元組的形式提供。
四、RADIUS 協(xié)議的配置
RADIUS協(xié)議配置是以RADIUS方案為單位進(jìn)行的,一個RADIUS方案在實際組網(wǎng)環(huán)境中既可以運用于一臺獨立的RADIUS服務(wù)器,也可以運用于兩臺配置相同,但I(xiàn)P地址不同的主、從RADIUS服務(wù)器。當(dāng)創(chuàng)建一個新的RADIUS方案之后,需要對屬于此方案的RADIUS服務(wù)器的IP地址和UDP端口號進(jìn)行設(shè)置。這些服務(wù)器包括認(rèn)證/授權(quán)和計費服務(wù)器,而每種服務(wù)器又有主服務(wù)器和從服務(wù)器的區(qū)別。每個RADIUS方案的屬性包括:主服務(wù)器的IP地址、從服務(wù)器的IP地址、共享密鑰以及RADIUS服務(wù)器類型等。下面以華為交換機為例討論RADIUS協(xié)議配置。
1.創(chuàng)建RADIUS方案。 RADIUS協(xié)議的配置是以RADIUS方案為單位進(jìn)行的。在進(jìn)行其他RADIUS協(xié)議配置之前,必須先創(chuàng)建RADIUS方案并進(jìn)入其視圖,命令為radius scheme radius-scheme-name,缺省情況下,系統(tǒng)中已創(chuàng)建了一個名為“system”的RADIUS方案。系統(tǒng)缺省創(chuàng)建的system方案使用的主認(rèn)證服務(wù)器的IP為127.0.0.1,端口號為1645。
2.配置RADIUS計費服務(wù)器。設(shè)置主RADIUS計費服務(wù)器的IP地址和端口號:primary accounting ip-address [ port-number ]。
設(shè)置從RADIUS計費服務(wù)器IP地址和端口號:secondary accounting ip-address [ port-number ]。
使能停止計費報文緩存功能:stop-accounting-buffer enable。
使能停止計費報文重傳功能,并配置停止計費報文可以傳送的最大次數(shù):stop-accounting-buffer enable。
設(shè)置允許實時計費失敗的最大次數(shù):etry realtime-accounting retry-times。
3.配置RADIUS報文的共享密鑰。RADIUS客戶端與RADIUS服務(wù)器使用MD5算法來加密RADIUS報文,雙方通過設(shè)置共享密鑰來驗證報文的合法性。只有在密鑰一致的情況下,雙方才能彼此接收對方發(fā)來的報文并作出響應(yīng)。
設(shè)置RADIUS認(rèn)證/授權(quán)報文的共享密鑰:key authentication string。
設(shè)置RADIUS計費報文的共享密鑰:key accounting string。
4.配置RADIUS請求報文的最大傳送次數(shù)。由于RADIUS協(xié)議采用UDP報文來承載數(shù)據(jù),因此其通信過程是不可靠的。如果RADIUS服務(wù)器在應(yīng)答超時定時器規(guī)定的時長內(nèi)沒有響應(yīng)交換機,則交換機有必要向RADIUS服務(wù)器重傳RADIUS請求報文。如果累計的傳送次數(shù)超過最大傳送次數(shù)而RADIUS服務(wù)器仍舊沒有響應(yīng),則交換機將認(rèn)為本次認(rèn)證失敗。
設(shè)置RADIUS請求報文的最大傳送次數(shù),retry retry-times,可選缺省情況下,RADIUS請求報文的最大傳送次數(shù)為3次。
5.配置支持的RADIUS服務(wù)器的類型。設(shè)置支持何種類型的RADIUS服務(wù)器:server-type { huawei | standard }。
6.配置本地RADIUS認(rèn)證服務(wù)器。創(chuàng)建本地RADIUS認(rèn)證服務(wù)器:local-server nas-ip ip-addresskey password。
7.配置RADIUS服務(wù)器的定時器。如果在RADIUS請求報文(認(rèn)證/授權(quán)請求或計費請求)傳送出去一段時間后,設(shè)備還沒有得到RADIUS服務(wù)器的響應(yīng),則有必要重傳RADIUS請求報文,以保證用戶確實能夠得到RADIUS服務(wù),這段時間被稱為RADIUS服務(wù)器響應(yīng)超時時長。交換機系統(tǒng)中用于控制這個時長的定時器就被稱為RADIUS服務(wù)器響應(yīng)超時定時器。
對于某個RADIUS方案中的主、從服務(wù)器(無論是認(rèn)證/授權(quán)服務(wù)器還是計費服務(wù)器),當(dāng)主服務(wù)器因故障而導(dǎo)致其與設(shè)備的通信中斷時,設(shè)備會主動地與從服務(wù)器交互報文。
當(dāng)主服務(wù)器變?yōu)閎lock的狀態(tài)超過timer quiet命令設(shè)定的時間后,當(dāng)有RADIUS請求時,設(shè)備會嘗試與主服務(wù)器通信,如果主服務(wù)器恢復(fù)正常,設(shè)備會立即恢復(fù)與其通信,而不繼續(xù)與從服務(wù)器通信。同時,主服務(wù)器的狀態(tài)恢復(fù)為active,從服務(wù)器的狀態(tài)不變。
為了對用戶實施實時計費,有必要設(shè)置實時計費的時間間隔。在設(shè)置了該屬性以后,每隔設(shè)定的時間,交換機會向RADIUS服務(wù)器發(fā)送一次在線用戶的計費信息。
設(shè)置RADIUS服務(wù)器應(yīng)答超時時間:timer response-timeout seconds。
設(shè)置主服務(wù)器恢復(fù)激活狀態(tài)的時間:timer quietminutes。
設(shè)置實時計費間隔:timer realtime-accounting minutes。
8.配置設(shè)備重啟用戶再認(rèn)證功能。在交換機與CAMS配合實現(xiàn)認(rèn)證/授權(quán)/計費的AAA方案中,限制唯一性用戶(指在CAMS上設(shè)置了“在線數(shù)量限制”為1的用戶)通過認(rèn)證/授權(quán)、開始計費時,如果交換機發(fā)生重啟,在CAMS進(jìn)行用戶在線檢查前,當(dāng)用戶再次登錄交換機時,交換機會提示該用戶已經(jīng)在線,導(dǎo)致該用戶無法正常訪問網(wǎng)絡(luò)資源。只有在網(wǎng)絡(luò)管理員手工刪除該用戶的在線信息后,該用戶才可以再次登錄。解決上述問題的方法是在交換機上啟動設(shè)備重啟用戶再認(rèn)證功能。啟動設(shè)備重啟用戶再認(rèn)證功能后,交換機每次發(fā)生重啟時:交換機生成Accounting-On報文,該報文主要包括NAS-ID、NAS-IP(源IP)和會話ID信息。交換機每隔設(shè)定的時間間隔向CAMS發(fā)送Accouting-on報文。CAMS收到Accounting-On報文后,立即向交換機發(fā)送一個響應(yīng)報文,并根據(jù)Accouting-On報文中的NAS-ID、NAS-IP和會話ID,找到并刪除通過交換機接入的原用戶在線信息,并按照最后一次計費更新報文結(jié)束計費。當(dāng)交換機收到CAMS的響應(yīng)報文后,即停止發(fā)送Accounting-On報文。如果交換機發(fā)送Accounting-On報文的次數(shù)已達(dá)到設(shè)定的最大發(fā)送次數(shù),但是仍沒有收到CAMS的響應(yīng)報文,則交換機停止發(fā)送Accounting-On報文。
五、結(jié)語
RADIUS協(xié)議通常是用來實現(xiàn)AAA(Authentication,Authorization and Accounting即認(rèn)證、授權(quán)和計費)機制,常被應(yīng)用在既要求較高安全性又要求維持遠(yuǎn)程用戶訪問的各種網(wǎng)絡(luò)環(huán)境中。RADIUS系統(tǒng)是NAS(Network Access Server)系統(tǒng)的重要輔助部分。RADIUS協(xié)議具有廣闊的應(yīng)用空間,需要繼續(xù)更進(jìn)一步的學(xué)習(xí)和研究。
[參考文獻(xiàn)]
[1]http://www.ietf.org/rfc/rfc2865.txt[EB/OL].
[2]http://www.faqs.org/rfcs/rfc2138.html[EB/OL].
[3]張南雨,屈雪蓮.RADIUS協(xié)議認(rèn)證和授權(quán)方法及包結(jié)構(gòu)[J].重慶郵電學(xué)院學(xué)報(自然科學(xué)版), 2001,(3).
[4]崔曉波.RADIUS協(xié)議的原理[J].中國數(shù)據(jù)通信, 2001,(2).