一、概述: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认证协议格式:1、RADIUS AUTHENTICATION PROTOCOL 包格式下面是协议报文格式:CODE域可以包括如下一些值;1Access-Request2Access-Accept3Access-Reject4Accounting-Request5Accounting-Response11Access-Challenge12Status-Server13Status-Client255Reserved其中,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值可以跟随不同的属性值。
下表是一个总结:表中,0表示在此类型包中,不可以跟随此属性状态;1表示在此类型包中,只有一个此属性状态可跟随;0+表示在此类型包中,0个或多个此属性状态可跟随;0-1表示在此类型包中,0个或1个此属性状态可跟随;2、RADIUS AUTHENTICATION PROTOCOL ACCESS-REQUEST下面是ACCESS-REQUEST包格式:其中,CODE=1;CODE占一个字节IDENTIFIER占一个字节,用于匹配请求和应答。
LENGTH 占二个字节,是整个数据报的长度,包括CODE+IDENTIFIER+LENGTH +REQUEST-AUTHENTICA TOR+ATTRIBUTES的所有长度。
REQUEST-AUTHENTICATOR 是16字节的随机数,高位在先,此域用于认证答复和加密口令字。
ATTRIBUTES是若干属性状态的集合。
参考上表。
3、RADIUS AUTHENTICATION PROTOCOL ACCESS-ACCEPT下面是ACCESS-ACCEPT包格式:其中,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包格式:其中,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包格式:其中,CODE=11;CODE占一个字节IDENTIFIER占一个字节,用于匹配请求和应答。
LENGTH 占二个字节,是整个数据报的长度,包括CODE+IDENTIFIER+LENGTH +RESPONSE-AUTHENTICATOR+A TTRIBUTES的所有长度。
RESPONSE-AUTHENTICA TOR 是由REQUEST-AUTHENTICATOR计算得出,高位在先。
ATTRIBUTES是若干属性状态的集合。
参考上表。
6、RADIUS AUTHENTICATION PROTOCOL ATTRIBUTES下面是属性状态的包格式:TYPE占一个字节,表示属性状态的类型,、;LENGTH占一个字节,表示属性长度,包括TYPE+LENGTH+V ALUE;V ALUE长度不定,由类型确定。
下面是所有TYPE的集合描述:1 User-Name2 User-Password3 CHAP-Password4 NAS-IP-Address5 NAS-Port6 Service-Type7 Framed-Protocol8 Framed-IP-Address9 Framed-IP-Netmask10 Framed-Routing11 Filter-Id12 Framed-MTU13 Framed-Compression14 Login-IP-Host15 Login-Service16 Login-TCP-Port17 (unassigned)18 Reply-Message19 Callback-Number20 Callback-Id21 (unassigned)22 Framed-Route23 Framed-IPX-Network24 State25 Class26 Vendor-Specific27 Session-Timeout28 Idle-Timeout29 Termination-Action30 Called-Station-Id31 Calling-Station-Id32 NAS-Identifier33 Proxy-State34 Login-LAT-Service35 Login-LAT-Node36 Login-LAT-Group37 Framed-AppleTalk-Link38 Framed-AppleTalk-Network39 Framed-AppleTalk-Zone40-59 (reserved for accounting)60 CHAP-Challenge61 NAS-Port-Type62 Port-Limit63Login-LAT-Port7、单个ATTRIBUTES介绍由于ATTRIBUTES多达40多个,不可能一一介绍。
这里选择几个重要且常用的作简单介绍,其余可参照RFC文档。
USER-NAME属性状态:格式:TYPE=1,表示USER-NAME属性状态;LENGTH,表示整个属性状态长度,大于3;STRING,是名字字符串,可以为如下几种形式:简单数字字符串,用于本地管理NAS;简单可打印字符串;SMTP地址格式,如:namemail.zhongxing.ANS.1名字:以ANS.标准出现的名字。
USER-PASSWORD属性状态:格式: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 b1b2 = MD5(S + c(1)) c(2) = p2 xor b2. .. .. .bi = MD5(S + c(i-1)) c(i) = pi xor biSTRING = c(1)+c(2)+……+ c(i)NAS-IP-ADDRESS属性状态:格式:TYPE=4,表示NAS-IP-ADDRESS属性状态;LENGTH,表示整个属性状态长度,6个字节;ADDRESS,表示IP地址,4字节。
NAS-PORT属性状态:格式:TYPE=5,表示NAS-PORT属性状态;LENGTH,表示整个属性状态长度,6个字节;PORT,表示PORT,4字节,0-65535。
SEVICE-TYPE属性状态:格式:TYPE=6,表示SEVICE-TYPE属性状态;LENGTH,表示整个属性状态长度,6个字节;V ALUE,表示服务属性,4字节,有如下一些取值:1Login2Framed3Callback Login4Callback Framed5Outbound6Administrative7NAS Prompt8Authenticate Only9Callback NAS PromptFRAMED-PROTOCOL属性状态:格式:TYPE=7,表示FRAMED-PROTOCOL属性状态;LENGTH,表示整个属性状态长度,6个字节;V ALUE,表示协议属性,4字节,有如下一些取值:1PPP2SLIP3AppleTalk Remote Access Protocol (ARAP)4Gandalf proprietary SingleLink/MultiLink protocol5Xylogics proprietary IPX/SLIP三、RADIUS计费协议格式:1、RADIUS ACCOUNTING PROTOCOL 包格式下面是协议报文格式:CODE域可以包括如下一些值;4Accounting-Request5Accounting-ResponseIDENTIFIER占一个字节,用于匹配请求和应答。