一、aaa 及radius 協(xié)議簡(jiǎn)介
1. aaa 的功能
aaa 是authentication(認證)、authorization(授權)和accounting(計費)的簡(jiǎn)稱(chēng)。它提供對用戶(hù)進(jìn)行認證、授權和計費三種安全功能。具體如下:
a、認證(authentication):認證用戶(hù)是否可以獲得訪(fǎng)問(wèn)權,確定哪些用戶(hù)可以訪(fǎng)問(wèn)網(wǎng)絡(luò )。
b、授權(authorization):授權用戶(hù)可以使用哪些服務(wù)。
c、計費(accounting):記錄用戶(hù)使用網(wǎng)絡(luò )資源的情況。
aaa 一般采用客戶(hù)/服務(wù)器結構,客戶(hù)端運行于被管理的資源側,服務(wù)器上則集中存放用戶(hù)信息。這種結構既具有良好的可擴展性,又便于用戶(hù)信息的集中管理。
計費網(wǎng)關(guān)主要使用aaa 中的認證功能對終端用戶(hù)進(jìn)行認證管理。
2. radius 協(xié)議
(1) radius 簡(jiǎn)介
radius 是remote authentication dial-in user service(遠程認證撥號用戶(hù)服務(wù))的簡(jiǎn)稱(chēng),最初由livingston enterprise 公司開(kāi)發(fā),作為一種分布式的客戶(hù)機/服務(wù)器系統,能提供aaa 功能。radius 技術(shù)可以保護網(wǎng)絡(luò )不受未授權訪(fǎng)問(wèn)的干擾,常被用在既要求較高安全性、又要求維持遠程用戶(hù)訪(fǎng)問(wèn)的各種網(wǎng)絡(luò )環(huán)境中(如用來(lái)管理使用串口和調制解調器的大量分散撥號用戶(hù))。
radius 服務(wù)包括三個(gè)組成部分:
a、協(xié)議:rfc2865、2866 協(xié)議基于udp/ip 層定義了radius 幀格式及消息傳輸機制,并定義了1812 作為認證端口,1813 作為計費端口。
b、服務(wù)器:radius 服務(wù)器運行在中心計算機或
工作站上,包含了相關(guān)的用戶(hù)認證和網(wǎng)絡(luò )服務(wù)訪(fǎng)問(wèn)信息。
c、客戶(hù)端:位于撥號訪(fǎng)問(wèn)服務(wù)器nas(network access server)側,可以遍布整個(gè)網(wǎng)絡(luò )。
radius 基于客戶(hù)/服務(wù)器模型,nas(如路由器)作為radius 客戶(hù)端,負責傳輸用戶(hù)信息到指定的radius 服務(wù)器,然后根據從服務(wù)器返回的信息進(jìn)行相應處理(如接入/掛斷用戶(hù))。radius 服務(wù)器負責接收用戶(hù)連接請求,認證用戶(hù),然后給nas返回所有需要的信息。
radius 服務(wù)器通常要維護三個(gè)
數據庫:第一個(gè)數據庫“users”用于存儲用戶(hù)信息(如用戶(hù)名、口令以及使用的協(xié)議、ip 地址等配置),第二個(gè)數據庫“clients”用于存儲radius 客戶(hù)端的信息(如共享密鑰),第三個(gè)數據庫“dictionary”存儲的信息用于解釋radius 協(xié)議中的屬性和屬性值的含義。如下圖所示:
圖5-1 radius 服務(wù)器的組成
另外,radius 服務(wù)器還能夠作為其他aaa 服務(wù)器的客戶(hù)端進(jìn)行代理認證或計費。radius 服務(wù)器支持多種方法來(lái)認證用戶(hù),如基于ppp 的pap、chap 認證、基于unix 的login 等。
(2) radius 的基本消息交互流程
radius 服務(wù)器對用戶(hù)的認證過(guò)程通常需要利用nas 等設備的代理認證功能,radius 客戶(hù)端和radius 服務(wù)器之間通過(guò)共享密鑰認證相互間交互的消息,用戶(hù)密碼采用密文方式在網(wǎng)絡(luò )上傳輸,增強了安全性。radius 協(xié)議合并了認證和授權過(guò)程,即響應報文中攜帶了授權信息。操作流程圖和步驟如下所示:
圖5-2 radius 的基本消息交互流程
基本交互步驟如下:
a、用戶(hù)輸入用戶(hù)名和口令;
b、radius 客戶(hù)端根據獲取的用戶(hù)名和口令,向radius 服務(wù)器發(fā)送認證請求包(access-request)。
c、radius 服務(wù)器將該用戶(hù)信息與users 數據庫信息進(jìn)行對比分析,如果認證成功,則將用戶(hù)的權限信息以認證響應包(access-accept)發(fā)送給radius 客戶(hù)端;如果認證失敗,則返回access-reject 響應包。
d、radius 客戶(hù)端根據接收到的認證結果接入/拒絕用戶(hù),如果可以接入用戶(hù),則radius 客戶(hù)端向radius 服務(wù)器發(fā)送計費開(kāi)始請求包(accounting-request),status-type 取值為start;
e、radius 服務(wù)器返回計費開(kāi)始響應包(accounting-response);
f、radius 客戶(hù)端向radius 服務(wù)器發(fā)送計費停止請求包(accounting-request),status-type 取值為stop;
g、radius 服務(wù)器返回計費結束響應包(accounting-response)。
(3) radius 協(xié)議的報文結構
radius 采用udp 傳輸消息,通過(guò)定時(shí)器管理機制、重傳機制、備用服務(wù)器機制,確保radius 服務(wù)器和客戶(hù)端之間交互消息正確收發(fā)。radius 報文結構如下:
圖5-3 radius 報文結構
其中identifier 域用于匹配請求包和響應包,隨著(zhù)attribute 域改變、接收到有效響應包而不斷變化,而在重傳時(shí)保持不變化。authenticator域(16字節)用于驗證radius服務(wù)器傳輸回來(lái)的請求,同時(shí)用于密碼隱藏算法上,分為request authenticator 和response authenticator。
a、request authenticator 采用16 字節的隨機碼。
b、response authenticator 以對code identifier、request authenticator、length、attribute 和共享密鑰進(jìn)行md5 算法后的結果。
由code 域決定radius 報文的類(lèi)型,主要包括:
表5-8 code 域主要取值的說(shuō)明
attribute 域攜帶專(zhuān)門(mén)的認證、授權和計費信息,提供請求和響應報文的配置細節,該域采用(type、length、value)三元組的形式提供,rfc 中定義的標準attribute域大致包括:
表5-9 attribute 域主要取值的說(shuō)明
radius 協(xié)議具有良好的可擴展性,協(xié)議中定義的26 號屬性(vender-specific)可以被方便地擴展以支持用戶(hù)自己定義的擴展屬性,報文結構如下圖所示:
圖5-4 包括擴展屬性的radius 報文片斷
(4) radius 的特點(diǎn)
radius 使用udp 作為傳輸協(xié)議,具有良好的實(shí)時(shí)性;同時(shí)也支持重傳機制和備用服務(wù)器機制,從而有較好的可靠性。radius 的實(shí)現比較簡(jiǎn)單,適用于大用戶(hù)量時(shí)服務(wù)器端的多線(xiàn)程結構。正因為如此,radius 協(xié)議得到了廣泛的應用。
如果NAS向某個(gè)RADIUS服務(wù)器提交請求沒(méi)有收到返回信息,那么可以要求備份RADIUS服務(wù)器重傳。由于有多個(gè)備份RADIUS服務(wù)器,因此NAS進(jìn)行重傳的時(shí)候,可以采用輪詢(xún)的方法。如果備份RADIUS服務(wù)器的密鑰和以前RADIUS服務(wù)器的密鑰不同,則需要重新進(jìn)行認證。