《Radius培训.ppt》由会员分享,可在线阅读,更多相关《Radius培训.ppt(49页珍藏版)》请在三一办公上搜索。
1、Radius培训,胡凯,一、基 本 概 念,二、RADIUS协议 概述,三、RADIUS 主要特性,四、RADIUS协议属性,一、基 本 概 念,基本概念,AAA Authentication、Authorization、Accounting 验证、授权、记费 PAP Password Authentication Protocol 口令验证协议 CHAP Challenge-Handshake Authentication Protocol 盘问握手验证协议 NAS Network Access Server 网络接入服务器 RADIUS Remote Authentication Dial
2、 In User Service 远程验证拨入用户服务(拨入用户的远程验证服务)TCP Transmission Control Protocol 传输控制协议 UDP User Datagram Protocol 用户数据报协议,名词解释,AAA可以通过两种途径实现:1、在NAS端进行认证、授权和计费;2、通过协议进行远程的认证、授权和记帐。实现AAA的协议有RADIUS、Kerberos、TACACS+等(我们使用的是RADIUS协议)。,AAA实现途径,RADIUS 是Remote Authentication Dial In User Service 的简称,MA5200、ISN885
3、0和MD5500上目前使用RADIUS完成对PPP用户的认证、授权和计费。当用户想要通过某个网络(如电话网)与 NAS建立连接从而获得访问其他网络的权利时,NAS可以选择在NAS上进行本地认证计费,或把用户信息传递给RADIUS服务器,由Radius进行认证计费;RADIUS 协议规定了NAS与RADIUS 服务器之间如何传递用户信息和记账信息;RADIUS服务器负责接收用户的连接请求,完成验证,并把传递服务给用户所需的配置信息返回给NAS。,AAA实现途径,PAP(Password Authentication Protocol)是密码验证协议的简称,是认证协议的一种。用户以明文的形式把用户
4、名和他的密码传递给NAS,NAS根据用户名在NAS端查找本地数据库,如果存在相同的用户名和密码表明验证通过,否则表明验证未通过。,本地认证PAP,本地(NAS)验证PAP方式:,我查我验,CHAP(Challenge Handshake Authentication Protocol)是查询握手验证协议的简称,是我们使用的另一种认证协议。,本地(NAS)验证CHAP方式:,本地认证CHAP,Secret Password=MD5(Chap ID+Password+challenge),我查我算我验,当用户请求上网时,服务器产生一个16字节的随机码(challenge)给用户(同时还有一个ID号
5、,本地路由器的 host name)。用户端得到这个包后使用自己独用的设备或软件对传来的各域进行加密,生成一个Secret Password传给NAS。NAS根据用户名查找自己本地的数据库,得到和用户端进行加密所用的一样的密码,然后根据原来的16字节的随机码进行加密,将其结果与Secret Password作比较,如果相同表明验证通过,如果不相同表明验证失败。,本地认证CHAP,Secret Password=MD5(Chap ID+Password+challenge),远端(Radius)验证PAP方式:,远端认证PAP,Secret password=Password XOR MD5(C
6、hallenge Key)(Challenge就是Radius报文中的Authenticator),我查我算我验,远端(Radius)验证CHAP方式:,远端认证CHAP,Secret password=MD5(Chap ID+Password+challenge),我查我算我验,二、RADIUS协议 概述,Raidus(Remote Authentication Dial In User Service)是对远端拨号接入用户的认证服务,Radius服务分客户端和服务器端,通常我们公司的接入产品支持的是客户端,负责将认证等信息按照协议的格式通过UDP包送到服务器,同时对服务器返回的信息解释处理
7、。,通常对Radius协议的服务端口号是1645(认证)、1646(计费)或1812(认证)、1813(计费)。,Radius协议包结构,各个域的解释:1、Code:包类型;1字节;指示RADIUS包的类型。2、Identifier:包标识;1字节;用于匹配请求包和响应包,同一组请求包和响应包的Identifier应相同。3、Length:包长度;2字节;整个包的长度。4、Authenticator:验证字;16字节;用于对包进行签名。,Radius协议包各个域解释,1)Code:包的类型包类型占1个字节,定义如下:1 Access-Request请求认证过程 2 Access-Accept认
8、证响应过程 3 Access-Reject认证拒绝过程 4 Accounting-Request请求计费过程 5 Accounting-Response计费响应过程*12 Status-Server(experimental)实验的*13 Status-Client(experimental)实验的*255 Reserved保留的,Radius协议包:code域,NASRadius认证计费过程,1、用户拨入后(1),所拨入的设备(比如NAS)将拨入用户的用户的信息(比如用户名、口令、所占用的端口等等)打包向RADIUS服务器发送(2)。2、如果该用户是一个合法的用户,那么Radius告诉NAS
9、该用户可以上网,同时传回该用户的配置参数(3);否则,Radius反馈NAS该用户非法的信息(3)。3、如果该用户合法,MAS就根据从RADIUS服务器传回的配置参数配置用户(4)。如果用户非法,NAS反馈给用户出错信息并断开该用户连接(4)。4、如果用户可以访问网络,RADIUS客户要向RADIUS服务器发送一个记费请求包表明对该用户已经开始记费(5),RADIUS服务器收到并成功记录该请求包后要给予响应(6)。5、当用户断开连接时(连接也可以由接入服务器断开)(7),RADIUS客户向RADIUS服务器发送一个记费停止请求包,其中包含用户上网所使用网络资源的统计信息(上网时长、进/出的字节
10、/包数等)(8),RADIUS服务器收到并成功记录该请求包后要给予响应(9)。,NASRadius认证计费过程,NASRadius认证计费过程,1、RADIUS的通信是用“请求-响应”方式进行的,即:客户发送一个请求包,服务器收到包后给予响应。2、RADIUS协议采用的是UDP协议,数据包可能会在网络上丢失,如果客户没有收到响应,那么可以重新发送该请求包。多次发送之后如果仍然收不到响应,RADIUS客户可以向备用的RADIUS服务器发送请求包。,2)Identifier:包标识 包标识,用以匹配请求包和响应包。该字段的取值范围为0255;协议规定:1、在任何时间,发给同一个RADIUS服务器的
11、不同包的Identifier域不能相同,如果出现相同的情况,RADIUS将认为后一个包是前一个包的拷贝而不对其进行处理。2、Radius针对某个请求包的响应包应与该请求包在Identifier上相匹配(相同)。,Radius协议包:Identifier域,3)Length:包长度整个包长度,包括Code,Identifier,Length,Authenticator,Attributes域的长度。,Radius协议包:Length域,4)Authenticator:验证字 该验证字分为两种:1、请求验证字-Request Authenticator 用在请求报文中,必须为全局唯一的随机值。2、
12、响应验证字-Response Authenticator 用在响应报文中,用于鉴别响应报文的合法性。响应验证字MD5(Code+ID+Length+请求验证字+Attributes+Key),Radius协议包:Authenticator域,加密以后你还能认出我来吗?,5)Attributes:属性,Radius协议包:Authenticator域,Attribute(1)属性,长度为10字节,b e n l a d e n,上网用户:本拉登上网地点:阿富汗,三、RADIUS 主要特性,Radius协议主要特性,Radius是一种流行的AAA协议,同时其采用的是UDP协议传输模式,AAA协议在
13、协议栈中位置如下:,Radius协议在协议栈中的位置,Radius协议,1)为什么使用UDP?,1、NAS和RADIUS服务器之间传递的一般是几十至上百个字节长度的数据,用户可以容忍几秒到十几秒的验证等待时间。当处理大量用户时服务器端采用多线程,UDP简化了服务器端的实现过程。2、TCP是必须成功建立连接后才能进行数据传输的,这种方式在有大量用户使用的情况下实时性不好。3、当向主用服务器发送请求失败后,还要必须向备用的服务器发送请求。于是RADIUS要有重传机制和备用服务器机制,它所采用的定时,TCP不能很好的满足。,Radius协议选择UDP作为传输层协议,2)Client/Server结构
14、,RADIUS采用客户/服务器(Client/Server)结构:1、RADIUS的客户端通常运行于接入服务器(NAS)上,RADIUS服务器通常运行于一台工作站上,一个RADIUS服务器可以同时支持多个RADIUS客户(NAS)。2、RADIUS的服务器上存放着大量的信息,接入服务器(NAS)无须保存这些信息,而是通过RADUIS协议对这些信息进行访问。这些信息的集中统一的保存,使得管理更加方便,而且更加安全。3、RADIUS服务器可以作为一个代理,以客户的身份同其他的RADIUS服务器或者其他类型的验证服务器进行通信。用户的漫游通常就是通过RADIUS代理实现的。,NAS VS Radiu
15、sClient VS Server,3)网络安全,RADIUS协议的加密是使用MD5加密算法进行的,在RADIUS的客户端(NAS)和服务器端(Radius Server)保存了一个密钥(key),RADIUS协议利用这个密钥使用MD5算法对RADIUS中的数据进行加密处理。密钥不会在网络上传送。RADIUS的加密主要体现在两方面:1、包加密:在RADIUS包中,有16字节的验证字(authenticator)用于对包进行签名,收到RADIUS包的一方要查看该签名的正确性。如果包的签名不正确,那么该包将被丢弃,对包进行签名时使用的也是MD5算法(利用密钥),没有密钥的人是不能构造出该签名的。2
16、、口令加密:在认证用户时,用户的口令不会在网上明文传送,而是使用了MD5算法对口令进行加密。没有密钥的人是无法正确加密口令的,也无法正确地对加密过的口令进行解密。,网络安全,安全第一,MD5是一个算法,它的输入是一段内存,输出是一个16字节的摘要,它的运算是单向的,即从输出推算不出输入。,MD5算法,不好意思,我只会把您的手表变成兔子,变不回去了,MD5,包的签名与加密:包的签名指的是RADIUS包中16字节的Authenticator,我们称其为“验证字”。认证请求包RequestAuth=Authenticator,认证请求包的验证字是一个不可预测的16字节随机数。这个随机数将用于口令的加
17、密。认证响应包ResponseAuth=MD5(Code+ID+Length+Authenticator+Attributes+Key)。记费请求包RequestAcct=MD5(Code+ID+Length+16ZeroOctets+Attributes+Key)。记费响应包ResponseAcct=MD5(Code+ID+Length+RequestAcct+Attributes+Key)。,包的签名与加密,口令的加密:称共享密钥(key)为Key;16字节的认证请求验证字(Authenticator)为Auth;将口令(Password)分割成16字节一段(最后一段不足16字节时用0补齐
18、),为p1、p2等;加密后的口令块为c(1)、c(2)等。下面运算中b1、b2为中间值:b1=MD5(Key+Auth)c(1)=p1 xor b1 b2=MD5(Key+c(1)c(2)=p2 xor b2 bi=MD5(Key+c(i-1)c(i)=pi xor bi那么加密后的口令为c(1)+c(2)+.+c(i)。上面是协议规定的算法,也有的RADIUS服务器为了实现起来简单,修改了上述的算法,具体的讲,b1的算法同上,但bi=b2=b1(i=1),其他运算不变。当用户的口令长度不超过16字节时,两种算法的结果是一样的。,口令的加密,远端(Radius)验证PAP方式:,远端认证PAP
19、,Secret password=Password XOR MD5(Challenge Key)(Challenge就是Radius报文中的Authenticator),我查我算我验,如果用户配置了RADIUS验证,其PAP验证过程如下:,采用PAP验证:用户以明文的形式把用户名和他的密码传递给NAS。NAS把用户名和加密过的密码放到验证请求包的相应属性中传递给RADIUS服务器,根据RADIUS服务器的返回结果来决定是否允许用户上网。,远端认证PAP,用户名、密码,放行,远端认证PAP,Code=1(Access-Request)ID=0Length=56Request Authentica
20、tor=16 octet random numberAttributes:User-Name=nemo User-Password=16 octets of Password padded at end with nulls,XORed with MD5(key|Request Authenticator)NAS-IP-Address=192.168.1.16 NAS-Port=3,例1:用户telnet到特定的主机,例1:1)NAS:192.168.1.16 发送 Access-Request UDP 数据包到 RADIUS Server。User-name:nemo Port loggin
21、g in:3,Code=2(Access-Accept)ID=0(same as in Access-Request)Length=38Response Authenticator=16-octet MD-5 checksum of the code(2),id(0),Length(38),the Request Authenticator from above,the attributes in this reply,and the shared secretAttributes:Service-Type=Login-User Login-Service=Telnet Login-Host=
22、192.168.1.3,2)RADIUS server 验证了 nemo,并且发送了 Access-Accept UDP 数据包到接入服务器,告诉把用户 nemo 登陆到主机 192.168.1.3.,例1:用户telnet到特定的主机,远端(Radius)验证CHAP方式:,远端认证CHAP,Secret password=MD5(Chap ID+Password+challenge),我查我算我验,采用CHAP验证:当用户请求上网时,NAS产生一个16字节的随机码给用户(同时还有一个ID号,本地路由器的 host name)。用户端得到这个包后使用自己独有的设备或软件对传来的各域进行加密,
23、生成一个response传给NAS,NAS把传回来的CHAP ID和Response分别作为用户名和密码,并把原来的 16字节随机码传给RADIUS服务器。RADIUS根据用户名在服务器端查找数据库,得到和用户端进行加密所用的一样的密码,然后根据传来的16字节的随机码进行加密,将其结果与传来的Password作比较,如果相同表明验证通过,如果不相同表明验证失败。另外如果验证成功,RADIUS服务器同样也可以生成一个 16字节的随机码对用户进行询问(Challenge)该方式暂不支持。,如果用户配置了RADIUS验证,其CHAP验证过程如下:,远端认证CHAP,远端认证CHAP,例2:用户端进行
24、CHAP验证,Code=1(Access-Request)ID=1Length=71Request Authenticator=16 octet random number also used as CHAP challengeAttributes:User-Name=floppy CHAP-Password=1 octet CHAP ID followed by 16 octet CHAP response NAS-IP-Address=192.168.1.16 NAS-Port=20 Service-Type=Framed-User Framed-Protocol=PPP,例2:接入服务器
25、 192.168.1.16 发送一个 Access-Request UDP 数据包到 RADIUS Server。User-name:floppy Port logging in:20 Protocol:PPP接入服务器发送的数据包包含属性Service-Type=Framed user,Framed-Protocol=PPP暗示 RADIUS server 这个用户要使用PPP服务。,Code=2(Access-Accept)ID=1(same as in Access-Request)Length=56Response Authenticator=16-octet MD-5 checksu
26、m of the code(2),id(1),Length(56),the Request Authenticator from above,the attributes in this reply,and the keyAttributes:Service-Type=Framed-User Framed-Protocol=PPP Framed-IP-Address=255.255.255.254 Framed-Routing=None Framed-Compression=1(VJ TCP/IP Header Compression)Framed-MTU=1500,RADIUS server
27、 验证 floppy,并发送Access-Accept UDP 数据包到 NAS 告诉NAS可以允许PPP服务并从它的动态地址池中分配一个网络地址给用户。,例2:用户端进行CHAP验证,4)灵活的验证机制,RADIUS协议允许服务器支持多种验证方式,比如PPP的PAP和CHAP、UNIX登录以及其他认证机制。通常的RADIUS服务器都支持PAP,但有些RADIUS服务器不支持CHAP,原因在于有些RADIUS服务器在保存用户的口令时是加密保存的。而要验证一个CHAP用户的合法性,必须能够获得该用户的明文口令才行。,验证机制,5)扩展性,RADIUS协议具有很好的扩展性。RADIUS包是由包头和
28、一定数目的属性(Attribute)构成的。新属性的增加不会影响到现有协议的实现。通常的NAS厂家在生产NAS时,还同时开发与之配套的RADIUS服务器。为了提供一些功能,常常要定义一些非标准的(RFC上没有定义过的)属性。关于各个厂家有那些扩展的属性,一般可以从相应的RADIUS服务器的字典(dictionary)文件中找到。,扩展性,计费保护:,由于计费是个用户敏感的问题,我们提供的计费信息要求准确外更要求完备,不能丢失话单,而 Radius计费服务器的计费很容易受通讯不畅或计费服务器工作超负荷等意外因素的影响而丢失话单,为此我们提供了本地计费的保护能力,即话单从NAS发送出去以后如果没有
29、收到计费服务器的确认信息我们就认为计费失败,并将该话单(不论是实时计费中间话单还是离线话单)送到本地话单池中。,四、RADIUS协议属性,Radius协议主要特性,属性值属性名称 意义1 User-Name 用户名2User-Password 用户密码3Chap-Password Chap认证方式中的用户密码4 Nas-IP-Address Nas的ip地址5 Nas-Port 用户接入端口号6 Service-Type 服务类型 7 Framed-Protocol 协议类型8 Framed-IP-Address 为用户提供的IP地址9 Framed-IP-NetMask 地址掩码10 Fra
30、med-Routing 为路由器用户设置的路由方式 11 Filter-Id 过滤表的名称12 Framed-MTU 为用户配置的最大传输单元,认证报文的常用属性(1):,属性值 属性名称 意义13 Framed-Compression 该连接使用压缩协议14 Login-IP-Host 对login用户提供的可连接主机的ip地址15 Login-Service 对login用户可提供的服务 16 Login-TCP-Port TCP服务端口18 Reply-Message 认证服务器返回用户的信息24 State 认证服务器发送challenge包时传送的需在接下来的认证报文中回应的字符串(
31、与Acess-Challenge相关的属性)25 Class 认证通过时认证服务器返回的字符串信息,要求在该用户的计费报文中送给计费服务器,认证报文的常用属性(2):,属性值 属性名称 意义26 Vendor-Specific 可扩展属性 27 Session-Timeout 在认证通过报文或Challenge报文中,通知 NAS该用户可用的会话时长(时长预付费)28 Idle-Timeout 允许用户空闲在线的最大时长32 NAS-Identifier 标识NAS的字符串33 Proxy-State NAS通过代理服务器转发认证报文时服务器添加在报文中的属性60 Chap-Challenge
32、 可以代替认证字字段传送challenge的属性61 Nas-Port-Type 接入端口的类型 62 Port-Limit 服务器限制NAS为用户开放的端口数,认证报文的常用属性(3):,属性值 属性名称 意义40 Acct-Status-Type 计费请求报文的类型41 Acct-Delay-Time Radius客户端发送计费报文耗费的时间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-Case 用户下线原因 50 Acct-Multi_Session-Id 相关计费会话标识 51 Acct-Link-Count 生成计费记录时多连接会话的会话个数,认证报文的常用属性(4):,