文档库

最新最全的文档下载
当前位置:文档库 > radius协议

radius协议

一、概述:

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,网络接入设备)上。

下图示例了这些实体之间的关系:

radius协议

二、RADIUS认证协议格式:

1、RADIUS AUTHENTICATION PROTOCOL 包格式

下面是协议报文格式:

radius协议

CODE域可以包括如下一些值;

1Access-Request

2Access-Accept

3Access-Reject

4Accounting-Request

5Accounting-Response

11Access-Challenge

12Status-Server

13Status-Client

255Reserved

其中,CODE 1,2,3,11值为RADIUS AUTHENTICATION PROTOCOL使用,而CODE 4,5值为RADIUS ACCOUNTING PROTOCOL使用。其余未用或保留。CODE 占一个字节

IDENTIFIER占一个字节,用于匹配请求和应答。

LENGTH 占二个字节,是整个数据报的长度,包括CODE+IDENTIFIER+LENGTH +AUTHENTICATOR+A TTRIBUTES的所有长度。

AUTHENTICATOR 是16字节的随机数,高位在先,此域用于认证答复和加密口令字。

ATTRIBUTES是若干属性状态的集合,其长度是不确定的,不同的CODE值可以跟随不同的属性值。下表是一个总结:

radius协议

radius协议

表中,

0表示在此类型包中,不可以跟随此属性状态;

1表示在此类型包中,只有一个此属性状态可跟随;

0+表示在此类型包中,0个或多个此属性状态可跟随;

0-1表示在此类型包中,0个或1个此属性状态可跟随;

2、RADIUS AUTHENTICATION PROTOCOL ACCESS-REQUEST

下面是ACCESS-REQUEST包格式:

radius协议

其中,CODE=1;CODE占一个字节

IDENTIFIER占一个字节,用于匹配请求和应答。

LENGTH 占二个字节,是整个数据报的长度,包括CODE+IDENTIFIER+LENGTH +REQUEST-AUTHENTICA TOR+ATTRIBUTES的所有长度。

REQUEST-AUTHENTICATOR 是16字节的随机数,高位在先,此域用于认证答复和加密口令字。

ATTRIBUTES是若干属性状态的集合。参考上表。

3、RADIUS AUTHENTICATION PROTOCOL ACCESS-ACCEPT

下面是ACCESS-ACCEPT包格式:

radius协议

其中,CODE=2;CODE占一个字节

IDENTIFIER占一个字节,用于匹配请求和应答。

LENGTH 占二个字节,是整个数据报的长度,包括CODE+IDENTIFIER+LENGTH +RESPONSE-AUTHENTICATOR+A TTRIBUTES的所有长度。

RESPONSE-AUTHENTICA TOR 是由REQUEST-AUTHENTICATOR计算得出,高位在先。

ATTRIBUTES是若干属性状态的集合。参考上表。

4、RADIUS AUTHENTICATION PROTOCOL ACCESS-REJECT

下面是ACCESS-REJECT包格式:

radius协议

其中,CODE=3;CODE占一个字节

IDENTIFIER占一个字节,用于匹配请求和应答。

LENGTH 占二个字节,是整个数据报的长度,包括CODE+IDENTIFIER+LENGTH +RESPONSE-AUTHENTICATOR+A TTRIBUTES的所有长度。

RESPONSE-AUTHENTICA TOR 是由REQUEST-AUTHENTICATOR计算得出,高位在先。

ATTRIBUTES是若干属性状态的集合。参考上表。

5、RADIUS AUTHENTICATION PROTOCOL ACCESS-CHALLENGE

下面是ACCESS-CHALLENGE包格式:

radius协议

其中,CODE=11;CODE占一个字节

IDENTIFIER占一个字节,用于匹配请求和应答。

LENGTH 占二个字节,是整个数据报的长度,包括CODE+IDENTIFIER+LENGTH +RESPONSE-AUTHENTICATOR+A TTRIBUTES的所有长度。

RESPONSE-AUTHENTICA TOR 是由REQUEST-AUTHENTICATOR计算得出,高位在先。

ATTRIBUTES是若干属性状态的集合。参考上表。

6、RADIUS AUTHENTICATION PROTOCOL ATTRIBUTES

下面是属性状态的包格式:

radius协议

TYPE占一个字节,表示属性状态的类型,、;

LENGTH占一个字节,表示属性长度,包括TYPE+LENGTH+V ALUE;V ALUE长度不定,由类型确定。

下面是所有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

63Login-LAT-Port

7、单个ATTRIBUTES介绍

由于ATTRIBUTES多达40多个,不可能一一介绍。这里选择几个重要且常用的作简单介绍,其余可参照RFC文档。

USER-NAME属性状态:

格式:

radius协议

TYPE=1,表示USER-NAME属性状态;

LENGTH,表示整个属性状态长度,大于3;

STRING,是名字字符串,可以为如下几种形式:

简单数字字符串,用于本地管理NAS;

简单可打印字符串;

SMTP地址格式,如:name@http://www.wendangku.net/doc/ebd98c27ccbff121dd368386.html

ANS.1名字:以ANS.标准出现的名字。

USER-PASSWORD属性状态:

格式:

radius协议

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属性状态:

格式:

radius协议

TYPE=4,表示NAS-IP-ADDRESS属性状态;LENGTH,表示整个属性状态长度,6个字节;ADDRESS,表示IP地址,4字节。

NAS-PORT属性状态:

格式:

radius协议

TYPE=5,表示NAS-PORT属性状态;

LENGTH,表示整个属性状态长度,6个字节;PORT,表示PORT号码,4字节,0-65535。

SEVICE-TYPE属性状态:

格式:

radius协议

TYPE=6,表示SEVICE-TYPE属性状态;LENGTH,表示整个属性状态长度,6个字节;

V ALUE,表示服务属性,4字节,有如下一些取值:

1Login

2Framed

3Callback Login

4Callback Framed

5Outbound

6Administrative

7NAS Prompt

8Authenticate Only

9Callback NAS Prompt

FRAMED-PROTOCOL属性状态:

格式:

radius协议

TYPE=7,表示FRAMED-PROTOCOL属性状态;

LENGTH,表示整个属性状态长度,6个字节;

V ALUE,表示协议属性,4字节,有如下一些取值:

1PPP

2SLIP

3AppleTalk Remote Access Protocol (ARAP)

4Gandalf proprietary SingleLink/MultiLink protocol

5Xylogics proprietary IPX/SLIP

三、RADIUS计费协议格式:

1、RADIUS ACCOUNTING PROTOCOL 包格式

下面是协议报文格式:

radius协议

CODE域可以包括如下一些值;

4Accounting-Request

5Accounting-Response

IDENTIFIER占一个字节,用于匹配请求和应答。

LENGTH 占二个字节,是整个数据报的长度,包括CODE+IDENTIFIER+LENGTH +AUTHENTICATOR+A TTRIBUTES的所有长度。

AUTHENTICATOR 是16字节的随机数,高位在先,此域用于认证答复和加密口令字。

ATTRIBUTES是若干属性状态的集合,其长度是不确定的。不同的CODE值可以跟随不同的属性值。下表是一个总结:

radius协议

radius协议

表中,

0表示在此类型包中,不可以跟随此属性状态;

1表示在此类型包中,只有一个此属性状态可跟随;

0+表示在此类型包中,0个或多个此属性状态可跟随;

0-1表示在此类型包中,0个或1个此属性状态可跟随;

2、RADIUS ACCOUNTING PROTOCOL ACCOUNTING-REQUEST

下面是ACCOUNTINGREQUEST包格式:

radius协议

radius协议

其中,CODE=4;CODE占一个字节

IDENTIFIER占一个字节,用于匹配请求和应答。

LENGTH 占二个字节,是整个数据报的长度,包括CODE+IDENTIFIER+LENGTH +REQUEST-AUTHENTICA TOR+ATTRIBUTES的所有长度。

REQUEST-AUTHENTICATOR 是16字节的MD5 HASH结果值,高位在先。

ATTRIBUTES是若干属性状态的集合。参考上表。

3、RADIUS ACCOUNTING PROTOCOL ACCOUNTING-RESPONSE

下面是ACCOUNTINGRESPONSE包格式:

radius协议

其中,CODE=5;CODE占一个字节

IDENTIFIER占一个字节,用于匹配请求和应答。

LENGTH 占二个字节,是整个数据报的长度,包括CODE+IDENTIFIER+LENGTH +RESPONSE-AUTHENTICATOR+A TTRIBUTES的所有长度。

REQUEST-AUTHENTICATOR 是16字节的MD5 HASH结果值,高位在先。

ATTRIBUTES是若干属性状态的集合。参考上表。

4、RADIUS ACCOUNTING PROTOCOL ATTRIBUTES

下面是属性状态的包格式:

radius协议

TYPE占一个字节,表示属性状态的类型,、;

LENGTH占一个字节,表示属性长度,包括TYPE+LENGTH+V ALUE;

V ALUE长度不定,由类型确定。

下面是所有TYPE的集合描述:

40Acct-Status-Type

41Acct-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

49Acct-Terminate-Cause

50Acct-Multi-Session-Id

51 Acct-Link-Count

5、单个ATTRIBUTES介绍

由于ATTRIBUTES较多,不可能一一介绍。这里选择几个重要且常用的作简单介绍,其余可参照RFC文档。

ACCT-STATUS-TYPE属性状态:

格式:

radius协议

TYPE=40,表示ACCT-STATUS-TYPE属性状态;

LENGTH,表示整个属性状态长度,6个字节;

V ALUE,表示服务属性,4字节,有如下一些取值:

1 Start

2 Stop

7 Accounting-On

8 Accounting-Off

ACCTSESSION-ID属性状态:

格式:

radius协议

TYPE=44,表示ACCTSESSION-ID属性状态;

LENGTH,表示整个属性状态长度,大于3;

STRING,是可见ASCII字符;

四、RADIUS MSC图:

1、基本实体说明

在以下的讨论中,我们使用如下三个实体:

用户实体:USER

NAS RADIUS 客户实体:CLIENT

RADIUS SERVER 实体:SERVER

2、普通认证过程MSC图

radius协议

3、和CHAP交互认证过程(成功)MSC图

radius协议

4、和CHAP交互认证过程(失败)MSC图

radius协议

5、计费过程(正常)MSC图

radius协议

参考资料:

[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.