?? rfc2866.txt
字號:
組織:中國互動出版網(http://www.china-pub.com/)
RFC文檔中文翻譯計劃(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang@china-pub.com
譯者:劉偉娜(superwinner, starfield@xanet.edu.cn)
譯文發布時間:2001-3-30
版權:本中文翻譯文檔版權歸中國互動出版網所有。可以用于非商業用途自由轉載,但必須保留本文檔的翻譯及版權信息。
Network Working Group C. Rigney
Request for Comments: 2866 Livingston
Category: Informational June 2000
Obsoletes: 2139
RADIUS(遠程用戶撥號認證系統)記帳協議
(RFC2866 ADIUS Accounting)
Status of this Memo
This memo provides information for the Internet community. It does
not specify an Internet standard of any kind. Distribution of this
memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (2000). All Rights Reserved.
摘要
本文描述了在網絡接入服務器和共享的記帳服務器之間傳送記帳信息的協議。
實現RADIUS記帳協議的注意事項
本文證明了RADIUS記帳協議。早期開發的RADIUS記帳協議使用的是端口號為1646的UDP端口,它和“sa-msg-port"服務互相沖突。為RADIUS協議正式分配的端口號為1813。
目 錄
RADIUS(遠程用戶撥號認證系統)記帳協議 1
摘要 1
實現RADIUS記帳協議的注意事項 1
1.簡介 2
1.1 必要的說明 2
1.2 術語 2
2.操作 2
2.1 代理 3
3.包格式 3
4.包的類型 4
4.1 記帳請求 4
4.2 記帳響應 4
5. 屬性 5
5.1 記帳狀態類型 6
5.2 記帳延遲時間 6
5.3 輸入字節數 7
5.4 輸出字節數 7
5.5 會話Id 7
5.6 授權 8
5.7 會話時間 8
5.8 輸入數據包 8
5.9 輸出包總數 9
5.10 記帳中止事件 9
5.11 多會話Id 10
5.12 記帳鏈路計數 10
5.13 屬性列表 11
6. IANA(國際互聯網分配的數字標準)因素 12
7. 安全因素 12
8. 更改記錄 12
9.參考文獻 12
10. 說明 13
1.簡介
經營為眾多的用戶提供的串口線路和modem池會帶來巨大的管理支持方面的需求。由于根據定義,modem池是通向外部世界的鏈路,因此它對安全、認證、記帳都有很高的要求。這些需求可以通過維護一個用戶數據庫來實現,該數據庫包含認證(驗證用戶的名字和密碼)和配置細節——為用戶提供的服務的類型(如:SLIP,PPP,telnet,rlogin等)。
RADIUS(遠程用戶撥號認證系統)文檔【2】詳細說明了用于認證和授權的RADIUS協議。本文擴展了RADIUS協議的應用,使其包括了從網絡接入服務器給RADIUS記帳服務器傳遞信息的應用。
本文廢棄了RFC 2139【1】。它與RFC 2139之間的差別的概要在附錄“更改記錄”中可以找到。
RADIUS記帳協議的主要特征如下:
客戶/服務器模式
網絡接入服務器是RADIUS記帳服務器的客戶端。客戶端負責將用戶的記帳信息傳遞給指定的RADIUS記帳服務器。
RADIUS記帳服務器負責接收記帳請求,并給客戶端返回一個響應信息,表明記帳請求被成功的接收。RADIUS記帳服務器可以作為其他類型的記帳服務器的代理。
網絡安全
客戶端與RADIUS記帳服務器之間的交互是通過共享密鑰的使用來鑒別的,這個共享密鑰根本不會通過網絡傳送。
協議的可擴充性
所有的事務都是由不同長度的屬性-長度-值的三元組構成的。新的屬性值的加入不會影響到原有協議的執行。
1.1 必要的說明
本文中的關鍵詞"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 以及"OPTIONAL"與RFC 2119【3】中的描述的意義是相同的。這些關鍵詞意義與其是否大寫無關。
1.2 術語
本文使用了以下的術語:
服務 網絡接入服務器為撥入用戶提供的某種服務,如:PPP或者Telnet。
會話 網絡接入服務器為撥入用戶提供的每一個服務都會建立一個會話。會話的開始給出了最初提供服務的位置,會話的最后給出了服務結束的位置。如果網絡接入服務器支持的話,一個用戶可以有多個并行或者串行的會話。對于每一個會話,都會產生一個獨立的H會話ID(Acct-Session-ID)。
直接丟棄
這就是說應用程序不對包進行任何處理就直接丟棄。SHOULD的執行提供了記錄錯誤的能力,其中包括了被直接丟棄的包的內容;而且,SHOULD會記錄下統計計數器中的事件。
2.操作
當一個客戶端的配置采用RADIUS記帳協議時,在開始提供服務的時候它會生成一個記帳包,該記帳包描述了正在提供的服務的類型以及為之提供服務的用戶,它將被送至RADIUS記帳服務器。記帳服務器會返回一個表明該記帳包已經收到的應答。服務中止時,客戶端會產生一個記帳中止數據包,該數據包中描述了提供的服務的類型以及隨機統計報表(如:服務所用的時間、輸入輸出的字節數或者輸入、輸出包的情況)。該數據包會被送至RADIUS記帳服務器,服務器會返回一個表示該數據包已經收到的應答。
記帳請求(無論是開始記帳還是中止記帳的請求)是通過網絡提交給RADIUS記帳服務器的。最好是讓客戶端使用某種形式的后退機制,使得客戶端不斷的發送記帳請求包直到收到應答信息為止。如果在一段時間內沒有收到返回的響應信息,記帳請求就會被重發幾次。如果主服務器壞掉或者是無法到達客戶端可以向后備服務器轉發記帳請求信息。可以規定在對主服務器重試失敗一定的次數之后或者是采用循環調度算法的方式允許使用后備服務器。重試和放棄算法是目前正在研究的一個課題,在本文中就不再贅述了。
RADIUS記帳服務器可以向其他的服務器發出請求,來滿足記帳請求,被請求的服務器充當一個客戶端。
如果RADIUS記帳服務器不能成功的處理記帳包,服務器一定不能(MUST NOT)給客戶端發送應答信息。
2.1 代理
參閱“RADIUS”RFC【2】中關于RADIUS代理的描述,RADIUS記帳代理服務器的工作方式與RADIUS代理服務器是相同的,如下例所示。
1. NAS向轉發服務器發送記帳請求。
2. 轉發服務器將記帳請求記錄下來(如果必要的話),在其他的代理服務器的狀態屬性之后增加自己的代理狀態信息(如果必要的話),更新鑒別碼,將這些請求轉發給遠程服務器。
3. 遠程服務器將記帳請求記錄下(如果必要的話),將所有的代理狀態屬性按順序原封不動的從請求數據報復制到響應數據包,把記帳響應送給轉發服務器。
4. 轉發服務器剝離最后的代理狀態(如果在第二步加了的話),更新響應鑒別碼,將記帳響應發給NAS。
轉發服務器不得更改當前數據包中已經存在的代理狀態或者類屬性。
轉發服務器可能以通過(pass through)的方式完成轉發的功能,也就是說,轉發服務器一收到數據包就重新發送;或者轉發服務器自身完成重發功能,例如:在轉發服務器和遠程服務器之間的網絡鏈接與網絡接入服務器(NAS)和轉發服務器之間的鏈接相比有很大不同的情況。
當代理服務器被用來執行轉發功能的時候,要特別的注意確保轉發算法是健壯的、可擴展的。
3.包格式
嚴格的講,RADIUS記帳協議包應該位于UDP數據域【4】,它的目標端口號是1813(十進制數)。
當產生一個應答的時候,源端口和目的地址端口互換。
本文定義了RADIUS協議。早期的RADIUS記帳是通過端口號為1646的UDP端口來實現的,它和“sa-msg-port”服務相沖突。為RADIUS記帳服務正式分配的端口號是1813。
RADIUS數據格式的概況如下所示。各個域的數據是從左向右傳輸的。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 編碼 | 標識符 | 長度 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| 鑒別碼 |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 屬性 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-
編碼
編碼域是一個八位字節,用來標識RADIUS包的類型。當收到的包的編碼域非法時,該數據包將會被自動丟棄。
RADIUS記帳編碼分配如下:
4 記帳請求
5 記帳相應
標識符
標識符域是一個八位字節,用于請求和應答的匹配。如果請求包具有相同的源ip地址、源UDP端口號,并且在很短的一段時間內出現了相同的標識符,RADIUS就可以檢測到重復的請求。
長度
長度域占有兩個八位的字節。它表明了該包所包含的編碼、標識符、長度、鑒別碼以及屬性域的總長度。在長度域限定的范圍之外的八位字節必須作為填充字節,在接收時不予處理。如果包的實際長度小于長度域中給出的值,該包必須被直接丟棄。包的最小長度是20,最大長度是4095。
鑒別碼
鑒別碼域占有16個八位的字節。最重要的字節先傳輸。該域的值用來鑒別客戶端和RADIUS記帳服務器之間的信息。
請求鑒別碼
在記帳請求包中,鑒別碼的值是一個占有16個八位字節的MD5【5】校驗和,稱作請求鑒別碼。
網絡接入服務器(NAS)和RADIUS記帳服務器共享一個密鑰。記帳請求包中的鑒別碼中包含對一個由編碼+標識符+長度+16個為0的八位字節+請求屬性+共享密鑰(在這里,+表示將各個字符連接起來)所構成的八位字節流進行某種方式的MD5哈希計算得到的代碼。這個占有16個8位字節的MD5哈希值被存儲到記帳請求包的鑒別碼域中。
注意記帳請求中的請求鑒別碼不得與RADIUS接入請求的請求鑒別碼的生成方式相同,因為在記帳請求中沒有用戶口令這一屬性。
響應鑒別碼
在記帳響應包中的鑒別碼域稱作響應鑒別碼。它包含對一個由記帳響應編碼、標識符、長度、來自于將要被應答的記帳請求包的請求鑒別碼以及響應屬性(如果有的話)、共享密鑰構成的八位字節流進行某種方式的MD5哈希計算得到的代碼。這個占有16個8位字節的MD5哈希值被存儲到記帳響應包的鑒別碼域中。
屬性
屬性可能會包含多個實例,在這種情況下同種類型的各個屬性的排列應當保持一定的順序。但是,不同類型的各個屬性的排列順序是任意的。
4.包的類型
RADIUS包的類型是由位于包的第一個八位字節的編碼域的值決定的。
4.1 記帳請求
描述
記帳請求包是由客戶端(典型的情況是網絡接入服務器或者它的代理)送到RADIUS記帳服務器,并將用于為某個用戶提供的某種服務提供記帳的信息通知RADIUS記帳服務器。客戶端發送一個將編碼域置為4(記帳請求)的RADIUS數據包。
一收到記帳請求,如果服務器能夠成功的記錄下記帳包的話,必須馬上發送一個記帳響應應答;如果記錄記帳包失敗,不得發送任何應答。在RADIUS接入請求和接入許可包中的任何有效屬性出了一下的幾種屬性:用戶密碼、CHAP密碼、應答信息、狀態不能出現在RADIUS記帳請求包中之外,其他的屬性在RADIUS記帳請求包中都是有效的。在RADIUS記帳請求中必須包含NAS-IP-Address(網絡接入服務器的IP地址)或者NAS-Identifer(網絡接入服務器標識符)。在請求包中還應當包含NAS-port(網絡接入服務器端口號)或者NAS-Port-Type(網絡接入服務器端口類型)屬性,或者兩者都包含;除非該服務不會設計任何端口或者網絡接入服務器(NAS)對它的各個端口不作區分。
如果記帳請求包包含了一個Framed-IP-Address,該屬性中必須包含用戶的IP地址。如果接入許可使用了一個專門的值以告訴網絡接入服務器(NAS)為用戶分配一個IP地址,記帳請求中的Framed-IP-Address(如果有的話)必須包含實際分配給用戶的IP地址。
記帳請求包的格式概況如下所示。各個域是自左向右傳輸的。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 編碼 | 標識符 | 長度 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| 請求鑒別碼 |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 屬性...
+-+-+-+-+-+-+-+-+-+-+-+-+-
編碼
4代表記帳請求
標識符
當屬性域的內容發生改變或者是已經收到當前請求的有效的應答,標識符域必須改變。在內容不發生任何改變的情況下的重發,標識符必須保持不變。
需要注意的是,如果記帳請求屬性中包括訪問延遲時間,該包重發時,訪問延遲時間值會被更新。同時也改變了屬性域的內容,需要新的新的標識符和請求鑒別碼。
請求鑒別碼
記帳請求的請求鑒別碼是一個占有16個8位字節的MD5哈希值,該值的計算方法已在上述的“請求鑒別碼”中給出。
屬性
屬性域的長度各不相同,其中包含著一系列的屬性。
4.2 記帳響應
描述
記帳響應包是由RADIUS記帳服務器發給客戶端的,用來通知客戶端記帳請求已被接收,并且成功的記錄下來。如果記帳請求被成功的記錄下來,RADIUS記帳服務器必須發送一個編碼域被置為5(記帳響應)的數據包。客戶端一收到記帳響應,標識符域就會去和一個等待應答的記帳請求相匹配。響應鑒別碼域必須含有對等待應答的記帳請求的正確響應。無效的數據包會被直接丟棄。
RADIUS記帳響應不需要任何屬性。
響應數據包的格式概況如下所示。各個域是自左向右傳輸的。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 編碼 | 標識符 | 長度 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| 響應鑒別碼 |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 屬性 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-
編碼
5代表記帳響應
標識符
標識符域是對引起這次響應的記帳請求的標識符域的一個拷貝。
響應鑒別碼
記帳響應的響應鑒別碼是一個占有16個8位字節的MD5哈希值,該值的計算方法已在上述的“響應鑒別碼”中給出。
屬性
屬性域的長度各不相同,它可能包含了一系列的零或者更多的屬性。
5. 屬性
RADIUS屬性包括有請求和響應的鑒別、授權、記帳方面的詳細信息。
有些屬性可能會不止一次的被包括進去。這樣做的結果是該屬性在每個屬性域中都得到詳盡的描述。
屬性列表的結束是由RADIUS包的長度來決定的。
屬性域格式的概況如下所示。各個域是自左向右發送的。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -