
RADIUS协议的原理及应用.doc
30页Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.------------------------------------------author------------------------------------------dateRADIUS协议的原理及应用以太网安全技术提纲RADIUS协议的原理及应用目 录培训目标 2前言 21 RADIUS协议介绍 22 RADIUS协议报文结构 32.1 Radius协议报文格式 32.2 Code域 32.3 Identifier域 42.4 Length域 42.5 Authenticator 42.6 Attributes域 52.6.1 Type域 52.6.2 Length域 52.6.3 Value域 62.6.4常用属性类型列表 63 NAS设备RADIUS部分配置举例 84 RADIUS系统下用户认证过程 94.1 报文1:EAPOL-Start 94.2 报文2:EAP-Request/Identity 104.3 报文3:EAP-Response/Identity 104.4 报文4:RADIUS Access-Request 114.5 报文5:RADIUS Access-Challenge 124.6 报文6:EAP-Request/MD5-Challenge 134.7 报文7:EAP-Response/MD5-Challenge 144.8 报文8:RADIUS Access-Request 144.9 报文9:RADIUS Access-Accept 154.10 报文10:EAP-Success 164.11 报文11:RADIUS Accounting-Request 174.12 报文12:RADIUS Accounting-Response 184.13 报文13:EAPOL-Logoff 184.14 报文14:RADIUS Accounting-Request 194.15 报文15:RADIUS Accounting-Response 204.16 报文16:EAP-Failure 21--------------------------------------------------培训目标l 了解RADIUS协议基本概念;l 熟悉RADIUS协议报文结构;l 熟悉RADIUS协议工作原理;前言企业要求只有授权的用户才能访问自己的内部网络,教育网采取根据流量计费的策略,VOD系统根据点播的时间收费等等。
这些最常见的网络应用却面临一个同样的问题:如何对用户进行认证和计费?一种常见的认证计费方法——RADIUS协议会帮助我们解决这些问题RADIUS是目前最常用的认证计费协议之一,它简单安全,易于管理,扩展性好,所以得到广泛应用1 RADIUS协议简介RADIUS ( Remote Authentication Dial In User Service )是远程认证拨号用户服务的简称RADIUS原先设计的目的是为拨号用户进行认证和计费后来经过多次改进,形成了一项通用的认证计费协议,主要完成在网络接入设备和认证服务器之间承载认证、授权、计费和配置信息RADIUS是一种C/S结构的协议,它的客户端最初就是NAS服务器,现在任何运行RADIUS客户端软件的计算机都可以成为RADIUS的客户端RADIUS基本原理:用户接入NAS,NAS向RADIUS服务器使用Access-Request数据包提交用户信息,包括用户名、密码等相关信息,其中用户密码是经过MD5加密的,双方使用共享密钥,这个密钥不经过网络传播;RADIUS服务器对用户名和密码的合法性进行检验,必要时可以提出一个Challenge,要求进一步对用户认证,也可以对NAS进行类似的认证;如果合法,给NAS返回Access-Accept数据包,允许用户进行下一步工作,否则返回Access-Reject数据包,拒绝用户访问;如果允许访问,NAS向RADIUS服务器提出计费请求Account-Request,RADIUS服务器响应Account-Accept,对用户开始计费,同时用户可以进行自己的相关操作。
RADIUS协议具有以下特点:l 客户端/服务器结构;l 采用共享密钥保证网络传输安全性;l 良好的可扩展性;l 认证机制灵活;RADIUS 协议承载于UDP 之上,官方指定端口号为认证授权端口1812、计费端口1813RADIUS协议在RFC2865、RFC2866 中定义锐捷网络RG-SAM系统和NAS之间的通讯采用RADIUS协议由于RADIUS协议的良好扩展性,很多厂家对RADIUS作了扩展,我们公司也对其进行了扩展使用时我们应该注意不同公司对RADIUS协议扩展部分不能完全兼容2 RADIUS协议报文结构2.1 Radius协议报文格式RADIUS报文格式如下图所示,各域内容按照从左向右传送0 1 2 30 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+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Code | Identifier | Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Authenticator |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Attributes ...+-+-+-+-+-+-+-+-+-+-+-+-+-2.2 Code域Code域长度为1个字节,用于标明RADIUS报文的类型,如果Code域中的内容是无效值,报文将被丢弃RADIUS Code域的有效值如下:Code=1 Access-RequestCode=2 Access-AcceptCode=3 Access-RejectCode=4 Accounting-RequestCode=5 Accounting-ResponseCode=11 Access-ChallengeCode=12 Status-Server (experimental)Code=13 Status-Client (experimental)Code=65 业务修改请求消息Code=66 业务修改请求回应消息Code=67 业务修改请求回应拒绝消息Code=255 Reserved其中12 13 255 为保留的Code值一般不会遇到,1 2 3 4 5 11比较常见,分别标明报文类型为认证请求、认证接受、认证拒绝、计费请求、计费回应、计费成功和访问质询。
2.3 Identifier域Identifier域长度为1个字节,用于匹配请求的回应如果在短时间内RADIUS服务器收到从相同的源IP,相同源端口,相同标识域的报文,则认为收到的是重复的请求2.4 Length域Length域占两个字节,用于指明报文的有效长度,多出长度域的字节部分将被视为填充在接收时被忽略如果报文长度小于长度域中的值,整个报文将被丢弃长度域的范围在20和4096之间2.5 Authenticator认证字域占用16个字节,用于Radius Client 和Server之间消息认证的有效性,和密码隐藏算法访问请求Access-Request报文中的认证字的值是16字节随机数,认证字的值要不能被预测并且在一个共享密钥的生命期内唯一访问请求Access-Request认证字在Access-Request包中认证字的值是16字节随机数,认证字的值要不能被预测,并且在一个共享密钥的生命期内唯一;访问回应认证字Access-Accept Access-Reject 和Access-Challenge包中的认证字称为访问回应认证字,访问回应认证字的值定义为MD5(Code+ID+Length+RequestAuth+Attributes+Secret);计费请求Accounting-Request认证字在计费请求包中的认证字域称为计费请求认证字,它是一个16字节的MD5校验和,计费请求认证字的值定义为MD5(Code + Identifier + Length + 16 zero octets + request attributes +shared secret);计费回应Accounting-Response认证字在计费回应报文中的认证字域称为计费回应认证字,它的值定义为MD5(Accounting-Response Code + Identifier + Length + the RequestAuthenticator field from the Accounting-Request packet being replied to +the response attributes + shared secret);2.6 Attributes域0 1 20 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| Type | Length | Value ...+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-属性域的长度是可变的,它是一个由业务类型必需的属性和可选属性组成的属性链。
一个属性包含如下三个部分:2.6.1 Type域类型域长度为一个字节,RADIUS服务器和客户端当遇到不可识别的属性时,可以将其忽略常用的属性类型请参见RFC2865 RFC2866;2.6.2 Length域长度域长度为一个字节,指明了一个属性的类型、长度和值域的总长度如果在认证请求报文中携带有属性长度非法的属性,则必须回应访问拒绝报文;如果在访问回应报文中存在非法的属性长度,这个报文必须被直接丢弃或被认为是访问拒绝报文2.6.3 Value域值域由零或多个字节组成包,含详细的属性信息,它的格式由属性的长度和类型域决定注意RADIUS 中没有一个类型的值域是以NULL(hex 00)结尾,的也就是说值域中是没有结束符的,服务器和客户端需要能够处理内嵌的NULL值域的数据类型是下列5 种类型之一text”类型是“string”类型的子集:text 1-253 字节长string 1-253 字节长可以包含二进制数据address 4 字节高位在前integer 4 字节无符号数高位在前time 4 字节无符号数高位在前。












