资源描述
一、 概述:
RADIUS协议涉及RADIUS AUTHENTICATION PROTOCOL 和 RADIUS ACCOUNTING PROTOCOL 两部分。RADIUS AUTHENTICATION PROTOCOL 完毕拨号用户的认证工作,而RADIUS ACCOUNTING PROTOCOL 则完毕用户服务的计费任务。
事实上,为了更好地向分散的众多接入用户提供互联网服务,必须对接入服务提供有效的管理支持。它需要对安全,配置,计费等提供支持,这可以通过对一个用户数据库的管理来达成, 这个数据库涉及认证信息,及细化的服务配置信息和计费信息。通常这个数据库的维护管理,对用户信息的核算及配置有一个单独的实体完毕,这个实体就是RADIUS server。由于这些管理信息的众多与繁杂,通常RADIUS server放在一个独立的计算机上,而为了向RADIUS server取得服务,必须一方面构建一个RADIUS client,通常RADIUS client 位于Network Access Server(NAS,网络接入设备)上。
下图示例了这些实体之间的关系:
用户A
RADIUS
SERVER
(AAA)
用户N
用户B
RADIUS
CLIENT
(NAS)
INTERNET
二、 RADIUS认证协议格式:
1、RADIUS AUTHENTICATION PROTOCOL 包格式
下面是协议报文格式:
LENGTH
IDENTIFIER
CODE
AUTHENTICATOR
ATTRIBUTES
CODE域可以涉及如下一些值;
1 Access-Request
2 Access-Accept
3 Access-Reject
4 Accounting-Request
5 Accounting-Response
11 Access-Challenge
12 Status-Server
13 Status-Client
255 Reserved
其中,CODE 1,2,3,11值为RADIUS AUTHENTICATION PROTOCOL使用,而CODE 4,5值为RADIUS ACCOUNTING PROTOCOL使用。其余未用或保存。CODE占一个字节
IDENTIFIER占一个字节,用于匹配请求和应答。
LENGTH 占二个字节,是整个数据报的长度,涉及CODE+IDENTIFIER+LENGTH +AUTHENTICATOR+ATTRIBUTES的所有长度。
AUTHENTICATOR 是16字节的随机数,高位在先,此域用于认证答复和加密口令字。
ATTRIBUTES是若干属性状态的集合,其长度是不拟定的,不同的CODE值可以跟随不同的属性值。下表是一个总结:
Request
Accept
Reject
Challenge
#
Attribute
1
0
0
0
1
User-Name
0-1
0
0
0
2
User-Password
0-1
0
0
0
3
CHAP-Password
0-1
0
0
0
4
NAS-IP-Address
0-1
0
0
0
5
NAS-Port
0-1
0-1
0
0
6
Service-Type
0-1
0-1
0
0
7
Framed-Protocol
0-1
0-1
0
0
8
Framed-IP-Address
0-1
0-1
0
0
9
Framed-IP-Net mask
0
0-1
0
0
10
Framed-Routing
0
0+
0
0
11
Filter-Id
0
0-1
0
0
12
Framed-MTU
0+
0+
0
0
13
Framed-Compression
0+
0+
0
0
14
Login-IP-Host
0
0-1
0
0
15
Login-Service
0
0-1
0
0
16
Login-TCP-Port
0
0+
0+
0+
18
Reply-Message
0-1
0-1
0
0
19
Callback-Number
0
0-1
0
0
20
Callback-Id
0
0+
0
0
22
Framed-Route
0
0-1
0
0
23
Framed-IPX-Network
0-1
0-1
0
0-1
24
State
0
0+
0
0
25
Class
0+
0+
0
0+
26
Vendor-Specific
0
0-1
0
0-1
27
Session-Timeout
0
0-1
0
0-1
28
Idle-Timeout
0
0-1
0
0
29
Termination-Action
0-1
0
0
0
30
Called-Station-Id
0-1
0
0
0
31
Calling-Station-Id
0-1
0
0
0
32
NAS-Identifier
0+
0+
0+
0+
33
Proxy-State
0-1
0-1
0
0
34
Login-LAT-Service
0-1
0-1
0
0
35
Login-LAT-Node
0-1
0-1
0
0
36
Login-LAT-Group
0
0-1
0
0
37
Framed-AppleTalk-Link
0
0+
0
0
38
Framed-AppleTalk-Network
0
0-1
0
0
39
Framed-AppleTalk-Zone
0-1
0-
0
0
60
CHAP-Challenge
0-1
0
0
0
61
NAS-Port-Type
0-1
0-1
0
0
62
Port-Limit
0-1
0-1
0
0
63
Login-LAT-Port
表中,
0表达在此类型包中,不可以跟随此属性状态;
1表达在此类型包中,只有一个此属性状态可跟随;
0+表达在此类型包中,0个或多个此属性状态可跟随;
0-1表达在此类型包中,0个或1个此属性状态可跟随;
2、RADIUS AUTHENTICATION PROTOCOL ACCESS-REQUEST
下面是ACCESS-REQUEST包格式:
LENGTH
IDENTIFIER
CODE
REQUEST-AUTHENTICATOR
ATTRIBUTES
其中,CODE=1;CODE占一个字节
IDENTIFIER占一个字节,用于匹配请求和应答。
LENGTH 占二个字节,是整个数据报的长度,涉及CODE+IDENTIFIER+LENGTH +REQUEST-AUTHENTICATOR+ATTRIBUTES的所有长度。
REQUEST-AUTHENTICATOR 是16字节的随机数,高位在先,此域用于认证答复和加密口令字。
ATTRIBUTES是若干属性状态的集合。参考上表。
3、RADIUS AUTHENTICATION PROTOCOL ACCESS-ACCEPT
下面是ACCESS-ACCEPT包格式:
LENGTH
IDENTIFIER
CODE
RESPONSE-AUTHENTICATOR
ATTRIBUTES
其中,CODE=2;CODE占一个字节
IDENTIFIER占一个字节,用于匹配请求和应答。
LENGTH 占二个字节,是整个数据报的长度,涉及CODE+IDENTIFIER+LENGTH +RESPONSE-AUTHENTICATOR+ATTRIBUTES的所有长度。
RESPONSE-AUTHENTICATOR 是由REQUEST-AUTHENTICATOR计算得出,高位在先。
ATTRIBUTES是若干属性状态的集合。参考上表。
4、RADIUS AUTHENTICATION PROTOCOL ACCESS-REJECT
下面是ACCESS-REJECT包格式:
LENGTH
IDENTIFIER
CODE
RESPONSE-AUTHENTICATOR
ATTRIBUTES
其中,CODE=3;CODE占一个字节
IDENTIFIER占一个字节,用于匹配请求和应答。
LENGTH 占二个字节,是整个数据报的长度,涉及CODE+IDENTIFIER+LENGTH +RESPONSE-AUTHENTICATOR+ATTRIBUTES的所有长度。
RESPONSE-AUTHENTICATOR 是由REQUEST-AUTHENTICATOR计算得出,高位在先。
ATTRIBUTES是若干属性状态的集合。参考上表。
5、RADIUS AUTHENTICATION PROTOCOL ACCESS-CHALLENGE
下面是ACCESS-CHALLENGE包格式:
LENGTH
IDENTIFIER
CODE
RESPONSE-AUTHENTICATOR
ATTRIBUTES
其中,CODE=11;CODE占一个字节
IDENTIFIER占一个字节,用于匹配请求和应答。
LENGTH 占二个字节,是整个数据报的长度,涉及CODE+IDENTIFIER+LENGTH +RESPONSE-AUTHENTICATOR+ATTRIBUTES的所有长度。
RESPONSE-AUTHENTICATOR 是由REQUEST-AUTHENTICATOR计算得出,高位在先。
ATTRIBUTES是若干属性状态的集合。参考上表。
6、RADIUS AUTHENTICATION PROTOCOL ATTRIBUTES
下面是属性状态的包格式:
TYPE
LENGTH
VALUE
TYPE占一个字节,表达属性状态的类型,、;
LENGTH占一个字节,表达属性长度,涉及TYPE+LENGTH+VALUE;
VALUE长度不定,由类型拟定。
下面是所有TYPE的集合描述:
1 User-Name
2 User-Password
3 CHAP-Password
4 NAS-IP-Address
5 NAS-Port
6 Service-Type
7 Framed-Protocol
8 Framed-IP-Address
9 Framed-IP-Netmask
10 Framed-Routing
11 Filter-Id
12 Framed-MTU
13 Framed-Compression
14 Login-IP-Host
15 Login-Service
16 Login-TCP-Port
17 (unassigned)
18 Reply-Message
19 Callback-Number
20 Callback-Id
21 (unassigned)
22 Framed-Route
23 Framed-IPX-Network
24 State
25 Class
26 Vendor-Specific
27 Session-Timeout
28 Idle-Timeout
29 Termination-Action
30 Called-Station-Id
31 Calling-Station-Id
32 NAS-Identifier
33 Proxy-State
34 Login-LAT-Service
35 Login-LAT-Node
36 Login-LAT-Group
37 Framed-AppleTalk-Link
38 Framed-AppleTalk-Network
39 Framed-AppleTalk-Zone
40-59 (reserved for accounting)
60 CHAP-Challenge
61 NAS-Port-Type
62 Port-Limit
63 Login-LAT-Port
7、单个 ATTRIBUTES介绍
由于ATTRIBUTES多达40多个,不也许一一介绍。这里选择几个重要且常用的作简朴介绍,其余可参照RFC文档。
USER-NAME属性状态:
格式:
TYPE
LENGTH
STRING
TYPE=1,表达USER-NAME属性状态;
LENGTH,表达整个属性状态长度,大于3;
STRING,是名字字符串,可认为如下几种形式:
简朴数字字符串,用于本地管理NAS;
简朴可打印字符串;
SMTP地址格式,如:
ANS.1名字:以ANS.标准出现的名字。
USER-PASSWORD属性状态:
格式:
TYPE
LENGTH
STRING
TYPE=2,表达USER-PASSWORD属性状态;
LENGTH,表达整个属性状态长度,大于18小于30;
STRING,是加密后的MD5摘要字符串。计算方法如下;
假设S表达共享密码,RA表达REQUEST-AUTHENTICATOR,而口令被分为16位BITS的快,p1,P2,等等。则:
b1 = MD5(S + RA) c(1) = p1 xor b1
b2 = MD5(S + c(1)) c(2) = p2 xor b2
. .
. .
. .
bi = MD5(S + c(i-1)) c(i) = pi xor bi
STRING = c(1)+c(2)+……+ c(i)
NAS-IP-ADDRESS属性状态:
格式:
TYPE
LENGTH
ADDRESS
ADDRESS
TYPE=4,表达NAS-IP-ADDRESS属性状态;
LENGTH,表达整个属性状态长度,6个字节;
ADDRESS,表达IP地址,4字节。
NAS-PORT属性状态:
格式:
TYPE
LENGTH
PORT
PORT
TYPE=5,表达NAS-PORT属性状态;
LENGTH,表达整个属性状态长度,6个字节;
PORT,表达PORT号码,4字节,0-65535。
SEVICE-TYPE属性状态:
格式:
TYPE
LENGTH
VALUE
VALUE
TYPE=6,表达SEVICE-TYPE属性状态;
LENGTH,表达整个属性状态长度,6个字节;
VALUE,表达服务属性,4字节,有如下一些取值:
1 Login
2 Framed
3 Callback Login
4 Callback Framed
5 Outbound
6 Administrative
7 NAS Prompt
8 Authenticate Only
9 Callback NAS Prompt
FRAMED-PROTOCOL属性状态:
格式:
TYPE
LENGTH
VALUE
VALUE
TYPE=7,表达FRAMED-PROTOCOL属性状态;
LENGTH,表达整个属性状态长度,6个字节;
VALUE,表达协议属性,4字节,有如下一些取值:
1 PPP
2 SLIP
3 AppleTalk Remote Access Protocol (ARAP)
4 Gandalf proprietary SingleLink/MultiLink protocol
5 Xylogics proprietary IPX/SLIP
三、 RADIUS计费协议格式:
1、RADIUS ACCOUNTING PROTOCOL 包格式
下面是协议报文格式:
LENGTH
IDENTIFIER
CODE
AUTHENTICATOR
ATTRIBUTES
CODE域可以涉及如下一些值;
4 Accounting-Request
5 Accounting-Response
IDENTIFIER占一个字节,用于匹配请求和应答。
LENGTH 占二个字节,是整个数据报的长度,涉及CODE+IDENTIFIER+LENGTH +AUTHENTICATOR+ATTRIBUTES的所有长度。
AUTHENTICATOR 是16字节的随机数,高位在先,此域用于认证答复和加密口令字。
ATTRIBUTES是若干属性状态的集合,其长度是不拟定的。不同的CODE值可以跟随不同的属性值。下表是一个总结:
Request
Response
#
Attribute
0-1
0
1
User-Name
0
0
2
User-Password
0
0
3
CHAP-Password
0-1
0
4
NAS-IP-Address
0-1
0
5
NAS-Port
0-1
0
6
Service-Type
0-1
0
7
Framed-Protocol
0-1
0
8
Framed-IP-Address
0-1
0
9
Framed-IP-Net mask
0-1
0
10
Framed-Routing
0+
0
11
Filter-Id
0-1
0
12
Framed-MTU
0+
0
13
Framed-Compression
0+
0
14
Login-IP-Host
0-1
0
15
Login-Service
0-1
0
16
Login-TCP-Port
0
0
18
Reply-Message
0-1
0
19
Callback-Number
0-1
0
20
Callback-Id
0+
0
22
Framed-Route
0-1
0
23
Framed-IPX-Network
0
0
24
State
0+
0
25
Class
0+
0+
26
Vendor-Specific
0-1
0
27
Session-Timeout
0-1
0
28
Idle-Timeout
0-1
0
29
Termination-Action
0-1
0
30
Called-Station-Id
0-1
0
31
Calling-Station-Id
0-1
0
32
NAS-Identifier
0+
0+
33
Proxy-State
0-1
0
34
Login-LAT-Service
0-1
0
35
Login-LAT-Node
0-1
0
36
Login-LAT-Group
0-1
0
37
Framed-AppleTalk-Link
0-1
0
38
Framed-AppleTalk-Network
0-1
0
39
Framed-AppleTalk-Zone
1
0
40
Acct-Status-Type
0-1
0
41
Acct-Delay-Time
0-1
0
42
Acct-Input-Octets
0-1
0
43
Acct-Output-Octets
1
0
44
Acct-Session-Id
0-1
0
45
Acct-Authentic
0-1
0
46
Acct-Session-Time
0-1
0
47
Acct-Input-Packets
0-1
0
48
Acct-Output-Packets
0-1
0
49
Acct-Terminate-Cause
0+
0
50
Acct-Multi-Session-Id
0+
0
51
Acct-Link-Count
0
0
60
CHAP-Challenge
0-1
0
61
NAS-Port-Type
0-1
0
62
Port-Limit
0-1
0
63
Login-LAT-Port
表中,
0表达在此类型包中,不可以跟随此属性状态;
1表达在此类型包中,只有一个此属性状态可跟随;
0+表达在此类型包中,0个或多个此属性状态可跟随;
0-1表达在此类型包中,0个或1个此属性状态可跟随;
2、RADIUS ACCOUNTING PROTOCOL ACCOUNTING-REQUEST
下面是ACCOUNTINGREQUEST包格式:
LENGTH
IDENTIFIER
CODE
REQUEST-AUTHENTICATOR
ATTRIBUTES
其中,CODE=4;CODE占一个字节
IDENTIFIER占一个字节,用于匹配请求和应答。
LENGTH 占二个字节,是整个数据报的长度,涉及CODE+IDENTIFIER+LENGTH +REQUEST-AUTHENTICATOR+ATTRIBUTES的所有长度。
REQUEST-AUTHENTICATOR 是16字节的MD5 HASH结果值,高位在先。
ATTRIBUTES是若干属性状态的集合。参考上表。
3、RADIUS ACCOUNTING PROTOCOL ACCOUNTING-RESPONSE
下面是ACCOUNTINGRESPONSE包格式:
LENGTH
IDENTIFIER
CODE
RESPONSE-AUTHENTICATOR
ATTRIBUTES
其中,CODE=5;CODE占一个字节
IDENTIFIER占一个字节,用于匹配请求和应答。
LENGTH 占二个字节,是整个数据报的长度,涉及CODE+IDENTIFIER+LENGTH +RESPONSE-AUTHENTICATOR+ATTRIBUTES的所有长度。
REQUEST-AUTHENTICATOR 是16字节的MD5 HASH结果值,高位在先。
ATTRIBUTES是若干属性状态的集合。参考上表。
4、RADIUS ACCOUNTING PROTOCOL ATTRIBUTES
下面是属性状态的包格式:
TYPE
LENGTH
VALUE
TYPE占一个字节,表达属性状态的类型,、;
LENGTH占一个字节,表达属性长度,涉及TYPE+LENGTH+VALUE;
VALUE长度不定,由类型拟定。
下面是所有TYPE的集合描述:
40 Acct-Status-Type
41 Acct-Delay-Time
42 Acct-Input-Octets
43 Acct-Output-Octets
44 Acct-Session-Id
45 Acct-Authentic
46 Acct-Session-Time
47 Acct-Input-Packets
48 Acct-Output-Packets
49 Acct-Terminate-Cause
50 Acct-Multi-Session-Id
51 Acct-Link-Count
5、单个 ATTRIBUTES介绍
由于ATTRIBUTES较多,不也许一一介绍。这里选择几个重要且常用的作简朴介绍,其余可参照RFC文档。
ACCT-STATUS-TYPE属性状态:
格式:
TYPE
LENGTH
VALUE
VALUE
TYPE=40,表达ACCT-STATUS-TYPE属性状态;
LENGTH,表达整个属性状态长度,6个字节;
VALUE,表达服务属性,4字节,有如下一些取值:
1 Start
2 Stop
7 Accounting-On
8 Accounting-Off
ACCTSESSION-ID属性状态:
格式:
TYPE
LENGTH
STRING
TYPE=44,表达ACCTSESSION-ID属性状态;
LENGTH,表达整个属性状态长度,大于3;
STRING,是可见ASCII字符;
四、 RADIUS MSC图:
1、基本实体说明
在以下的讨论中,我们使用如下三个实体:
用户实体:USER
NAS RADIUS 客户实体:CLIENT
RADIUS SERVER 实体:SERVER
2、普通认证过程MSC图
USER
SERVER
CLIENT
Access-request &set timeout
Username,password
Access-response &unset timeout
Timeout, send request again
&set timeout
Authentication end
Authentication end
3、和CHAP交互认证过程(成功)MSC图
CLIENT
USER
SERVER
Access-request &set timeout
Username,password
Timeout, send request again
&set timeout
Access-challenge &unset timeout
Prompt for response
New Access-request &set timeout
User response
Access-response &unset timeout
4、和CHAP交互认证过程(失败)MSC图
SERVER
CLIENT
USER
Access-request &set timeout
Username,password
Timeout, send request again
&set timeout
Access-challenge &unset timeout
Prompt for response
New Access-request &set timeout
User response
Access-reject & unset timeout
Authentication fail
5、计费过程(正常)MSC图
CLIENT
USER
SERVER
Access-request &set timeout
Username,password
Timeout, send request again
&set timeout
Authentication end
Access-response &unset timeout
Acct-request(B) &set timeout
Distribute services
Acct-request(E) &set timeout
Content services
Acct-response(B) &unset timeout
Acct-response(E) &unset timeout
End services
参考资料:
[1] Rivest, R., and S. Dusse, "The MD5 Message-Digest Algorithm",RFC 1321,
MIT Laboratory for Computer Science, RSA Data Security Inc., April 1992.
[2] Postel, J., "User Datagram Protocol", STD 6, RFC 768,
USC/Information Sciences Institute, August 1980.
[3] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC1700,
USC/Information Sciences Institute, October 1994.
[4] Rigney, C., "RADIUS Accounting", RFC 2139, April 1997.
[5] Rigney,C, “RADIUS Authentication, RFC2138,Aprial 1997.
展开阅读全文