《RADIUS协议的原理及应用讲义.docx》由会员分享,可在线阅读,更多相关《RADIUS协议的原理及应用讲义.docx(22页珍藏版)》请在三一办公上搜索。
1、RADIUS协议的原理及应用目 录培训目标2前言21 RADIUS协议介绍22 RADIUS协议报文结构32.1 Radius协议报文格式32.2 Code域32.3 Identifier域42.4 Length域42.5 Authenticator42.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-Start94.2 报文2:EAP-Request/Identity104.3 报文3:EAP-Respo
2、nse/Identity104.4 报文4:RADIUS Access-Request114.5 报文5:RADIUS Access-Challenge124.6 报文6:EAP-Request/MD5-Challenge134.7 报文7:EAP-Response/MD5-Challenge144.8 报文8:RADIUS Access-Request144.9 报文9:RADIUS Access-Accept154.10 报文10:EAP-Success164.11 报文11:RADIUS Accounting-Request174.12 报文12:RADIUS Accounting-Re
3、sponse184.13 报文13:EAPOL-Logoff184.14 报文14:RADIUS Accounting-Request194.15 报文15:RADIUS Accounting-Response204.16 报文16:EAP-Failure21培训目标l 了解RADIUS协议基本概念;l 熟悉RADIUS协议报文结构;l 熟悉RADIUS协议工作原理;前言企业要求只有授权的用户才能访问自己的内部网络,教育网采取根据流量计费的策略,VOD系统根据点播的时间收费等等。这些最常见的网络应用却面临一个同样的问题:如何对用户进行认证和计费?一种常见的认证计费方法RADIUS协议会帮助我们
4、解决这些问题。RADIUS是目前最常用的认证计费协议之一,它简单安全,易于管理,扩展性好,所以得到广泛应用。1 RADIUS协议简介RADIUS ( Remote Authentication Dial In User Service )是远程认证拨号用户服务的简称。RADIUS原先设计的目的是为拨号用户进行认证和计费。后来经过多次改进,形成了一项通用的认证计费协议,主要完成在网络接入设备和认证服务器之间承载认证、授权、计费和配置信息。RADIUS是一种C/S结构的协议,它的客户端最初就是NAS服务器,现在任何运行RADIUS客户端软件的计算机都可以成为RADIUS的客户端。RADIUS基本原
5、理:用户接入NAS,NAS向RADIUS服务器使用Access-Request数据包提交用户信息,包括用户名、密码等相关信息,其中用户密码是经过MD5加密的,双方使用共享密钥,这个密钥不经过网络传播;RADIUS服务器对用户名和密码的合法性进行检验,必要时可以提出一个Challenge,要求进一步对用户认证,也可以对NAS进行类似的认证;如果合法,给NAS返回Access-Accept数据包,允许用户进行下一步工作,否则返回Access-Reject数据包,拒绝用户访问;如果允许访问,NAS向RADIUS服务器提出计费请求Account-Request,RADIUS服务器响应Account-A
6、ccept,对用户开始计费,同时用户可以进行自己的相关操作。RADIUS协议具有以下特点:l 客户端/服务器结构;l 采用共享密钥保证网络传输安全性;l 良好的可扩展性;l 认证机制灵活;RADIUS 协议承载于UDP 之上,官方指定端口号为认证授权端口1812、计费端口1813。RADIUS协议在RFC2865、RFC2866 中定义。锐捷网络RG-SAM系统和NAS之间的通讯采用RADIUS协议。由于RADIUS协议的良好扩展性,很多厂家对RADIUS作了扩展,我们公司也对其进行了扩展。使用时我们应该注意不同公司对RADIUS协议扩展部分不能完全兼容。2 RADIUS协议报文结构2.1 R
7、adius协议报文格式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 |+-+-+-+-+-+-+-
8、+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 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-Cha
9、llengeCode=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服务器收到
10、从相同的源IP,相同源端口,相同标识域的报文,则认为收到的是重复的请求。2.4 Length域Length域占两个字节,用于指明报文的有效长度,多出长度域的字节部分将被视为填充。在接收时被忽略。如果报文长度小于长度域中的值,整个报文将被丢弃。长度域的范围在20和4096之间。2.5 Authenticator认证字域占用16个字节,用于Radius Client 和Server之间消息认证的有效性,和密码隐藏算法。访问请求Access-Request报文中的认证字的值是16字节随机数,认证字的值要不能被预测并且在一个共享密钥的生命期内唯一。访问请求Access-Request认证字在Acces
11、s-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
12、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
13、 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域长度域长度为
14、一个字节,指明了一个属性的类型、长度和值域的总长度。如果在认证请求报文中携带有属性长度非法的属性,则必须回应访问拒绝报文;如果在访问回应报文中存在非法的属性长度,这个报文必须被直接丢弃或被认为是访问拒绝报文。2.6.3 Value域值域由零或多个字节组成包,含详细的属性信息,它的格式由属性的长度和类型域决定。注意RADIUS 中没有一个类型的值域是以NULL(hex 00)结尾,的也就是说值域中是没有结束符的,服务器和客户端需要能够处理内嵌的NULL。值域的数据类型是下列5 种类型之一。“text”类型是“string”类型的子集:text 1-253 字节长string 1-253 字节长可
15、以包含二进制数据address 4 字节高位在前integer 4 字节无符号数高位在前time 4 字节无符号数高位在前表示从1970 年1 月1 日零点零时零秒到现在的秒数2.6.4常用属性类型列表l Type=1 用户名 User-Namel Type=2 用户密码 User-Passwordl Type=3 CHAP密码 CHAP-Passwordl Type=4 NAS IP地址 NAS-IP-Addressl Type=5 NAS端口 NAS-Portl Type=6 服务类型 Service-Typel Type=7 帧协议 Framed-Protocoll Type=8 分帧I
16、P地址配置 Framed-IP-Addressl Type=9 IP网络掩码配置 Framed-IP-Netmaskl Type=10 路由方法配置 Framed-Routingl Type=11 筛选器标识 Filter-Idl Type=12 最大传输单元配置 Framed-MTUl Type=13 压缩协议配置 Framed-Compressionl Type=14 登录的主机IP 地址 Login-IP-Hostl Type=15 登录的服务 Login-Servicel Type=16 登录的TCP端口 Login-TCP-Portl Type=17 未分配 (unassigned)
17、l Type=18 回复消息 Reply-Messagel Type=19 回叫电话号码 Callback-Numberl Type=20 回叫ID Callback-Idl Type=21 未分配 (unassigned)l Type=22 路由配置 Framed-Routel Type=23 IPX网络数字配置 Framed-IPX-Networkl Type=24 状态 Statel Type=25 类别 Classl Type=26 供应商细节 Vendor-Specificl Type=27 会话时限 Session-Timeoutl Type=28 空闲时限 Idle-Timeou
18、tl Type=29 终止动作 Termination-Actionl Type=30 用户拨打的电话号码 Called-Station-Idl Type=31 用户打出的电话号码 Calling-Station-Idl Type=32 网络接入服务器标识符 NAS-Identifierl Type=33 代理状态 Proxy-Statel Type=34 登录的LAT服务 Login-LAT-Servicel Type=35 登录的LAT节点 Login-LAT-Nodel Type=36 登录的LAT组 Login-LAT-Groupl Type=37 AppleTalk链路配置 Fram
19、ed-AppleTalk-Linkl Type=38 AppleTalk网络配置 Framed-AppleTalk-Networkl Type=39 AppleTalk区域配置 Framed-AppleTalk-Zonel Type=40-59 为记账保留 (reserved for accounting)l Type=60 CHAP盘问 CHAP-Challengel Type=61 网络接入服务器端口类型 NAS-Port-Typel Type=62 端口数限制 Port-Limitl Type=63 登录的LAT端口 Login-LAT-Port3 NAS设备RADIUS部分配置举例下面
20、以锐捷网络START-S2126G交换机作为例,介绍NAS设备关于RADIUS部分配置:test#show running-config System software version : 1.68 Build Apr 25 2007 ReleaseBuilding configuration.Current configuration : 586 bytes!version 1.0!hostname testvlan 1!radius-server host 192.168.1.102 /指定radius-server的IP地址aaa authentication dot1x /交换机全局启
21、动802.1x协议aaa accounting server 192.168.1.102 /指定记帐服务器的IP地址aaa accounting /交换机开启记帐功能enable secret level 1 5 &ZbcknA2Yzyglow5UaehIYdfimLMenable secret level 15 5 &ZS(W&-2YX)sv5UY*T7+.YtZV/,|!interface fastEthernet 0/1switchport access vlan 10 dot1x port-control auto /将此端口设置成受控端口!interface fastEthernet
22、 0/24switchport mode trunk!interface vlan 1 no shutdown ip address 192.168.1.100 256.256.256.0 !dot1x client-probe enable /打开交换机异常下线探测功能radius-server key root /设置交换机和radius-server之间的密钥snmp-server community public rw /设置交换机snmp协议采用communityip default-gateway 192.168.1.1end 4 RADIUS系统下用户认证过程SAM系统是锐捷网络
23、自主研发的集安全、认证、计费和管理于为一体的网络管理平台,它是基于标准的RADIUS协议开发的,整个系统由以下三个部分组成:l 恳请者(SU,安装锐捷认证客户端软件的PC);l 认证者(NAS,接入层交换机);l 认证服务器(RADIUS SERVER,RG-SAM软件);下面从恳请者发起认证认证成功退出认证的整个过程中,通过SNIFFER软件抓取到的报文作详细分析:4.1 报文1:EAPOL-Start首先由客户端发起一个带有组播目的MAC地址为“0180-C200-0003”的802.1X数据帧,其中802.1X头部TYPE类型值为1,标明是EAPOL-Start报文,开始802.1X认证
24、接入请求; l DLC Destination=0180-C200-0003,表示组播目的MAC地址,因为SU不知到NAS设备在哪里;l DLC Ethertype=888E,表示链路层帧内承载着802.1X报文;l 802.1X Version =1 表示当前的802.1X 协议版本是1;l 802.1X Packet Type =1 指定是EAPOL-Start报文;4.2 报文2:EAP-Request/IdentityNAS设备收到SU的EAPOL-Start报文后,向SU发送EAP-Request/Identity报文,要求SU将用户名送上来;l 802.1X Packet Type
25、 =0, 表示802.1X报文承载着EAP报文;l EAP报文中的Code=1, 表示是一个EAP-Request报文;l EAP报文中的Identifier=1, 表示这个EAP-Request报文的标识符1,这个值要和后面的EAP-Response Identifier一致;l EAP Data 中的Type=1,表示要求SU将用户名送上来;4.3 报文3:EAP-Response/IdentitySU向NAS设备回应EAP-Response/Identity报文,其中包括用户名信息;l EAP code=2,表示是EAP-Response报文;l EAP Identifier=1,表示是
26、上一个EAP-Request请求的响应,因为和上一个EAP-Request的Identifier的值相同;l EAP Type=1,表示EAP Date中包含用户名信息;l EAP Message=“liufn”,表示用户名是“liufn”;4.4 报文4:RADIUS Access-RequestNAS将SU送上来的“用户名”信息封装到RADIUS Access-Request报文中,发送给认证服务器,同时这个报文中携带着客户端IP、MAC、掩码、网关、NAS IP、NAS端口等信息;l UDP Destination Port=1812,UDP的端口号是1812,代表是一个RADIUS的认
27、证信息;l RADIUS Code=1,说明这是一个Access-Request请求认证报文;l RADIUS Identifier=1,表示Access-Request的标识,要和后面相同标识的Access-Response成对使用;l RADIUS User-Name=“liufn”,表示报文中携带用户名信息;l RADIUS NAS-IP-Address=“192.168.0.1”,表示报文中携带NAS IP信息;l 4.5 报文5:RADIUS Access-ChallengeRADIUS服务器收到上一个报文后,在数据库中查找是否有此用户,同时根据服务器的策略设置,是否来匹配NAS I
28、P、NAS端口、用户IP、用户MAC等信息,如果通过,RADIUS服务器随机产生一个加密字,用随机产生的加密字和数据库中用户的口令进行MD5加密运算,得出一个结果。同时将随机产生的加密字通过RADIUS Access-Challenge报文发送给NAS设备;l RADIUS code=11:表示是Access-Challenge挑战报文;l RADIUS Message-Authenticator=“xxxx”:表示RADIUS服务器随机产生的加密字;4.6 报文6:EAP-Request/MD5-ChallengeNAS设备将收到RADIUS服务器的“随机加密字”,然后封装到EAP-Requ
29、est/MD5-Challenge报文中发送给SU,要求SU进行认证;l EAP Type=4:表示这是一个MD5挑战;l EAP Value=“xxxx”:表示RADIUS随机产生的加密字;4.7 报文7:EAP-Response/MD5-Challenge客户端收到EAP-Request/MD5-Challenge报文后,将用户输入的密码和随机字做MD5运算,将结果通EAP-Response/MD5-Challenge回应给NAS设备;l EAP Value=“yyyy”:表示加密后的口令;4.8 报文8:RADIUS Access-RequestNAS设备通过Access-Challen
30、ge报文,将SU送上来的加密口令上传给RADIUS服务器;l RADIUS Code=1:表示是一个Access-Request报文;l RADIUS Message-Authenticator=“yyyy”:表示上传给RADIUS的加密口令;4.9 报文9:RADIUS Access-AcceptRADIUS服务器将SU产生的加密字和自己运算的结果进行比较,看是否一致,判断用户是否合法。然后回应认证成功/失败报文到NAS设备;l RADIUS Code=2:表示是一个Access-Accept报文,通知NAS允许这个用户接入网络;4.10 报文10:EAP-SuccessNAS设备通过EAP
31、-Success报文通知SU认证成功,可以接入网络;l EAP Code=3:NAS设备通知SU允许接入,是EAP-Success报文;4.11 报文11:RADIUS Accounting-Request客户端认证通过后,NAS开始向RADIUS服务器发起计费请求报文,要求对这个用户进行计费处理;l UDP Destination Port=1813:UDP的端口号为1813,说明这个一个RADIUS计费报文;l RADIUS Code=4:说明这个一个计费请求Accounting-Request报文;l RADIUS Acct-Status-Type=1:说明这是一个计费开始请求报文,习惯
32、上称为Accounting-Start;4.12 报文12:RADIUS Accounting-ResponseRADIUS服务器对该用户进行计费处理后,对NAS设备通过Accounting-Response报文响应;l RADIUS Code=5:说明是一个Accounting-Response报文,通知NAS设备,RADIUS服务器已经对这个用户进行了计费处理;4.13 报文13:EAPOL-Logoff客户端发出EAPOL-LOGOFF信息,请求下线;l 802.1X Packet Type=2:表示是EAPOL-Logoff报文,说明客户端主动请求下线;4.14 报文14:RADIUS
33、 Accounting-RequestNAS设备收到SU请求下线的EAPOL-Logoff报文后,向RADIUS发出对该用户停止计费的请求信息;l RADIUS Code=4:表示是一个Accounting-Request 报文,l RADIUS Acct-Status-Type=2:表示是一个计费结束请求,一般成为Accounting-Stop报文;4.15 报文15:RADIUS Accounting-ResponseRADIUS服务器对结束计费发出响应,通知NAS设备已经结束了对该用户计费;l RADIUS Code=5:表示这是Accouning-Response报文;4.16 报文16:EAP-FailureNAS向RADIUS服务器发出Accounting-Stop报文的同时,将NAS端口重新置于非授权状态,清除NAS设备维护的一些相关硬件表项,同时向SU发出EAP-Failure报文,通知SU下线;l EAP Code=4:说明是一个EAPOL-Failure报文;