Radius原理与应用培训教材0404CWord文档格式.docx
《Radius原理与应用培训教材0404CWord文档格式.docx》由会员分享,可在线阅读,更多相关《Radius原理与应用培训教材0404CWord文档格式.docx(48页珍藏版)》请在冰豆网上搜索。
4.1.2可靠性、安全性与Radius相同17
4.2Radius+报文18
4.2.1Radius+认证报文18
4.2.2Radius+计费报文22
4.2.3Radius+新增报文26
第五章华为NAS设备与RadiusServer对接应用实例29
5.1组网图29
5.2用户认证计费应用实例分析29
5.2.1合法用户29
5.2.2非法用户32
关键词:
RADIUS、AAA、PAP、CHAP、PPP、NAS、TCP、UDP。
摘要:
90年代中期以来,Internet业务量的增长已构成数据业务的主要增长因素,IP成为电信网是不争的事实。
但是目前的IP网络还不是一个电信级的网络,它的可运营、可管理特性同PSTN相比还存在较大差距。
从可运营性方面来说,针对个人用户,IP网络目前仅仅解决了一个上网的问题,用户仅能收发一些电子邮件和从网络上搜索一些信息而已,还不能提供个性化的业务以吸引更多个人用户上网,如Portal、个性化业务管理、本地特色内容业务、内容过滤、看广告免费上网等等。
同时,不可忽视的是,提高IP网络的可管理性是当前宽带网络发展急需解决的问题。
从可管理性方面来说,对用户实施业务管理的前提就是解决用户的认证、授权和计费问题,即众所周知的AAA。
目前,电信运营商和服务提供商所采用的认证方式主要有本地认证、Radius认证和不认证;
而计费策略更是丰富多采,常见的有不计费(包月)、按时长计费、按流量计费、按端口计费等等。
目前在所有这些认证计费方式中,以采用RadiusServer进行集中认证计费应用的最为普及和广泛。
Radius是RemoteAuthenticationDialInUserService的简称,即远程验证拨入用户服务。
当用户想要通过某个网络(如电话网)与NAS(网络接入服务器)建立连接从而获得访问其他网络的权利时,NAS可以选择在NAS上进行本地认证计费,或把用户信息传递给RADIUS服务器,由Radius进行认证计费;
RADIUS协议规定了NAS与RADIUS服务器之间如何传递用户信息和记账信息;
RADIUS服务器负责接收用户的连接请求,完成验证,并把传递服务给用户所需的配置信息返回给NAS。
以下即针对Radius协议的基本原理和应用做详细介绍。
缩略语清单:
RADIUS:
RemoteAuthenticationDial-InUserService——远程验证拨入用户服务,一种实现远程AAA的协议。
AAA:
Authentication,Authorization,andAccounting——验证、授权、计费。
PAP:
PasswordAuthenticationProtocol——口令验证协议。
CHAP:
Challenge-HandshakeAuthenticationProtocol——挑战握手验证协议。
PPP:
Point-to-PointProtocol——点到点协议,一种链路层协议。
NAS:
NatworkAccessServer——网络接入服务器。
TCP:
TransmissionControlProtocol——传输控制协议。
UDP:
UserDatagramProtocol——用户数据报协议。
第一章AAA和RADIUS介绍
图1PSTN,ISDN用户通过NAS上网示意图
如图:
用户lqz,lst要求得到某些服务(如SLIP,PPP,telnet),但必须通过NAS,由NAS依据某种顺序与所连服务器通信从而进行验证。
注:
lst通过拨号进入NAS,然后NAS按配置好的验证方式(如PPPPAP,CHAP等)要求lst输入用户名,密码等信息。
lst端出现提示,用户按提示输入。
通过与NAS的连接,NAS得到这些信息。
而后,NAS把这些信息传递给响应验证或记账的服务器,并根据服务器的响应来决定用户是否可以获得他所要求的服务。
AAA是验证,授权和记账(Authentication,Authorization,andAccounting)的简称。
它是运行于NAS上的客户端程序。
它提供了一个用来对验证,授权和记账这三种安全功能进行配置的一致的框架。
AAA的配置实际上是对网络安全的一种管理。
这里的网络安全主要指访问控制。
包括哪些用户可以访问网络服务器?
具有访问权的用户可以得到哪些服务?
如何对正在使用网络资源的用户进行记账?
下面简单介绍一下验证,授权,记账的作用。
•验证(Authentication):
验证用户是否可以获得访问权。
可以选择使用RADIUS协议。
•授权(Authorization):
授权用户可以使用哪些服务。
•记账(Accounting):
记录用户使用网络资源的情况。
AAA的实现可采用RADIUS协议。
RADIUS是RemoteAuthenticationDialInUserService的简称,用来管理使用串口和调制解调器的大量分散用户。
网络接入服务器简称NAS(NetworkAccessServer)。
当用户想要通过某个网络(如电话网)与NAS建立连接从而获得访问其他网络的权利(或取得使用某些网络资源的权利)时,NAS起到了过问用户(或这个连接)的作用。
NAS负责把用户的验证,授权,记账信息传递给RADIUS服务器。
RADIUS协议规定了NAS与RADIUS服务器之间如何传递用户信息和记账信息,即两者之间的通信规则。
用户获得授权后,在其正常上线、在线和下线过程中,Radius服务器还完成对用户帐号计费的功能。
第二章RADIUS协议
2.1引论
RADIUS协议的认证端口号为1812或1645,计费端口号为1813或1646。
一个网络允许外部用户通过公用网对其进行访问,于是用户在地理上可以极为分散。
大量分散用户通过Modem等设备从不同的地方可以对这个网络进行随机的访问。
用户可以把自己的信息传递给这个网络,也可以从这个网络得到自己想要的信息。
由于存在内外的双向数据流动,网络安全就成为很重要的问题了。
大量的modem形成了Modempools。
对modempool的管理就成为网络接入服务器或路由器的任务。
管理的内容有:
哪些用户可以获得访问权,获得访问权的用户可以允许使用哪些服务,如何对使用网络资源的用户进行记费。
AAA很好的完成了这三项任务。
RADIUS通过建立一个唯一的用户数据库,存储用户名,用户的密码来进行验证;
存储传递给用户的服务类型以及相应的配置信息来完成授权。
2.2客户服务器模式
图2用户,NAS,RADIUS服务器的关系
RADIUS采用客户/服务器(Client/Server)结构:
NAS上运行的AAA程序对用户来讲为服务器端,对RADIUS服务器来讲是作为客户端。
1、RADIUS的客户端通常运行于接入服务器(NAS)上,RADIUS服务器通常运行于一台工作站上,一个RADIUS服务器可以同时支持多个RADIUS客户(NAS)。
2、RADIUS的服务器上存放着大量的信息,接入服务器(NAS)无须保存这些信息,而是通过RADUIS协议对这些信息进行访问。
这些信息的集中统一的保存,使得管理更加方便,而且更加安全。
3、RADIUS服务器可以作为一个代理,以客户的身份同其他的RADIUS服务器或者其他类型的验证服务器进行通信。
用户的漫游通常就是通过RADIUS代理实现的。
Radius业务流程说明
图3用户——NAS——Radius认证计费流程
1、用户拨入后
(1),所拨入的设备(比如NAS)将拨入用户的用户的信息(比如用户名、口令、所占用的端口等等)打包向RADIUS服务器发送
(2)。
2、如果该用户是一个合法的用户,那么Radius告诉NAS该用户可以上网,同时传回该用户的配置参数(3);
否则,Radius反馈NAS该用户非法的信息(3)。
3、如果该用户合法,MAS就根据从RADIUS服务器传回的配置参数配置用户(4)。
如果用户非法,NAS反馈给用户出错信息并断开该用户连接(4)。
4、如果用户可以访问网络,RADIUS客户要向RADIUS服务器发送一个记费请求包表明对该用户已经开始记费(5),RADIUS服务器收到并成功记录该请求包后要给予响应(6)。
5、当用户断开连接时(连接也可以由接入服务器断开)(7),RADIUS客户向RADIUS服务器发送一个记费停止请求包,其中包含用户上网所使用网络资源的统计信息(上网时长、进/出的字节/包数等)(8),RADIUS服务器收到并成功记录该请求包后要给予响应(9)。
2.4网络安全
RADIUS协议的加密是使用MD5加密算法进行的,在RADIUS的客户端(NAS)和服务器端(RadiusServer)保存了一个密钥(key),RADIUS协议利用这个密钥使用MD5算法对RADIUS中的数据进行加密处理。
密钥不会在网络上传送。
RADIUS的加密主要体现在两方面:
在RADIUS包中,有16字节的验证字(authenticator)用于对包进行签名,收到RADIUS包的一方要查看该签名的正确性。
如果包的签名不正确,那么该包将被丢弃,对包进行签名时使用的也是MD5算法(利用密钥),没有密钥的人是不能构造出该签名的。
3包的签名与加密详细说明如下:
包的签名指的是RADIUS包中16字节的Authenticator,我们称其为"
验证字"
。
●认证请求包
RequestAuth=Authenticator,认证请求包的验证字是一个不可预测的16字节随机数。
这个随机数将用于口令的加密。
●认证响应包
ResponseAuth=MD5(Code+ID+Length+Authenticator+Attributes+Key)。
●记费请求包
RequestAcct=MD5(Code+ID+Length+16ZeroOctets+Attributes+Key)。
●记费响应包
ResponseAcct=MD5(Code+ID+Length+RequestAcct+Attributes+Key)。
在认证用户时,用户的口令在NAS和RadiusServer之间不会以明文方式传送,而是使用了MD5算法对口令进行加密。
没有密钥的人是无法正确加密口令的,也无法正确地对加密过的口令进行解密。
3口令的加密:
称共享密钥(key)为Key;
16字节的认证请求验证字(Authenticator)为Auth;
将口令(Password)分割成16字节一段(最后一段不足16字节时用0补齐),为p1、p2等;
加密后的口令块为c
(1)、c
(2)等。
下面运算中b1、b2为中间值:
b1=MD5(Key+Auth)c
(1)=p1xorb1
b2=MD5(Key+c
(1))c
(2)=p2xorb2
…………
bi=MD5(Key+c(i-1))c(i)=pixorbi
那么加密后的口令为c
(1)+c
(2)+...+c(i)。
上面是协议规定的算法,也有的RADIUS服务器为了实现起来简单,修改了上述的算法,具体的讲,b1的算法同上,但bi=b2=b1(i>
=1),其他运算不变。
当用户的口令长度不超过16字节时,两种算法的结果是一样的。
3口令加密与口令验证过程
当用户上网时,NAS决定对用户采用何种验证方法。
下面分别在本地验证和Radius验证两种情况下介绍用户与NAS之间的PAP和CHAP验证方式。
1)NAS本地认证
●PAP验证(PasswordAuthenticationProtocol:
密码验证协议):
用户以明文的形式把用户名和密码传递给NAS。
NAS根据用户名在NAS端查找本地数据库,如果存在相同的用户名和密码表明验证通过,否则表明验证未通过。
图4本地PAP认证
●CHAP验证(ChallengeHandshakeAuthenticationProtocol:
挑战握手验证协议):
当用户请求上网时,服务器产生一个16字节的随机码(challenge)给用户(同时还有一个ID号,本地路由器的hostname)。
用户端得到这个包后使用自己独用的设备或软件对传来的各域进行加密,生成一个SecretPassword传给NAS。
NAS根据用户名查找自己本地的数据库,得到和用户端进行加密所用的一样的密码,然后根据原来的16字节的随机码进行加密,将其结果与SecretPassword作比较,如果相同表明验证通过,如果不相同表明验证失败。
SecretPassword=MD5(ChapID+Password+challenge)
图5本地CHAP认证
2)Radius认证
如果用户配置了RADIUS验证而不是本地验证,过程略有不同。
●PAP验证:
用户以明文的形式把用户名和他的密码传递给NAS,NAS把用户名和加密过的密码放到验证请求包的相应属性中传递给RADIUS服务器。
RADIUS服务器对NAS上传的帐号进行验证并返回结果来决定是否允许用户上网。
Secretpassword=PasswordXORMD5(Challenge+Key)
(Challenge就是Radius报文中的Authenticator)
图6RadiusServerPAP认证
●CHAP验证:
当用户请求上网时,NAS产生一个16字节的随机码给用户(同时还有一个ID号,本地路由器的hostname)。
用户端得到这个包后使用自己独有的设备或软件对传来的各域进行加密,生成一个SecretPassword传给NAS。
NAS把传回来的CHAPID和SecretPassword分别作为用户名和密码,并把原来的16字节随机码传给RADIUS服务器。
RADIUS根据用户名在服务器端查找数据库,得到和用户端进行加密所用的一样的密码,然后根据传来的16字节的随机码进行加密,将其结果与传来的Password作比较,如果相同表明验证通过,如果不相同表明验证失败。
另外如果验证成功,RADIUS服务器同样可以生成一个16字节的随机码对用户进行挑战询问(魔术字),该部分内容由于应用较少,此处略。
Secretpassword=MD5(ChapID+Password+challenge)
图7RadiusServerCHAP认证
2.5AAA在协议栈中的位置
图8AAA在协议栈中的位置
3RADIUS为何采用UDP
NAS和RADIUS服务器之间传递的是一般几十上百个字节长度的数据,并且RADIUS要求特别的定时器管理机制。
用户可以容忍几十秒的验证等待时间。
当处理大量用户时服务器端采用多线程,UDP简化了服务器端的实现过程。
TCP是必须成功建立连接后才能进行数据传输的,这种方式在有大量用户使用的情况下实时性不好。
RADIUS要有重传机制和备用服务器机制,它所采用的定时,TCP不能很好的满足。
2.6良好的可扩展性
RADIUS协议具有很好的扩展性。
RADIUS包是由包头和一定数目的属性(Attribute)构成的。
新属性的增加不会影响到现有协议的实现。
通常的NAS厂家在生产NAS时,还同时开发与之配套的RADIUS服务器。
为了提供一些功能,常常要定义一些非标准的(RFC上没有定义过的)属性。
关于各个厂家有那些扩展的属性,一般可以从相应的RADIUS服务器的字典(dictionary)文件中找到。
第三章标准RADIUS协议
3.1标准Radius协议包结构
图9Radius包格式
:
Code:
包类型;
1字节;
指示RADIUS包的类型。
1Access-request认证请求
2Access-accept认证响应
3Access-reject认证拒绝
4Accounting-request计费请求
5Accounting-response计费响应
*11Access-challenge认证挑战
Identifier:
包标识;
1字节,取值范围为0~255;
用于匹配请求包和响应包,同一组请求包和响应包的Identifier应相同。
Length:
包长度;
2字节;
整个包中所有域的长度。
Authenticator:
16字节长;
用于验证RADIUS服务器传回来的请求以及密码隐藏算法上。
该验证字分为两种:
1、请求验证字---RequestAuthenticator
用在请求报文中,必须为全局唯一的随机值。
2、响应验证字---ResponseAuthenticator
用在响应报文中,用于鉴别响应报文的合法性。
响应验证字=MD5(Code+ID+Length+请求验证字+Attributes+Key)
Attributes:
属性
图10属性格式
•Type
1User-Name
2User-Password
3CHAP-Password
4NAS-IP-Address
5NAS-Port
6Service-Type
7Framed-Protocol
8Framed-IP-Address
9Framed-IP-Netmask
10Framed-Routing
11Filter-Id
12Framed-MTU
13Framed-Compression
14Login-IP-Host
15Login-Service
16Login-TCP-Port
17(unassigned)
18Reply-Message
19Callback-Number
20Callback-Id
21(unassigned)
22Framed-Route
23Framed-IPX-Network
24State
25Class
26Vendor-Specific
27Session-Timeout
28Idle-Timeout
29Termination-Action
30Called-Station-Id
31Calling-Station-Id
32NAS-Identifier
33Proxy-State
34Login-LAT-Service
35Login-LAT-Node
36Login-LAT-Group
37Framed-AppleTalk-Link
38Framed-AppleTalk-Network
39Framed-AppleTalk-Zone
40Acct-Status-Type
41Acct-Delay-Time
42Acct-Input-Octets
43Acct-Output-Octets
44Acct-Session-Id
45Acct-Authentic
46Acct-Session-Time
47Acct-Input-Packets
48Acct-Output-Packets
49Acct-Terminate-Cause
50Acct-Multi-Session-Id
51Acct-Link-Count
60CHAP-Challenge
61NAS-Port-Type
62Port-Limit
63Login-LAT-Port
•Length
属性长度。
•Value
属性值。
3.2常用标准Radius属性说明
属性名
Type
说明
User-Name
1
1、对于PPP用户,若用户名带ISP,该项用Username@PPP格式上报用户名;
否则用Username格式上报用户名;
2、对于VLAN方式,用HCID@VLAN方式上报HCID号,其中,对HCID进行编码,将其转换为字符串
User-Password
2
PPP用户密码
CHAP-Password
3
PPP用户的CHAP过程密码
NAS-IP-Address
4
ISN的接口IP地址
NAS-Port
5
A、VLANPORT:
槽位号(12位)+端口号(8位)+VLANID(12位)
B、ADSL:
NASPORT标明端口属性、实际物理端口属性
Service-Type
6
服务类型
Framed-Protocol
7
通信协议类型
Framed-IP-Address
8
服务器下发的用户地址,为0XFFFFFFFF时需要从本地地址池中分配
Framed-IP-Netmask
9
服务器分配的地址掩码
Reply-Message
18
返回给用户的提示信息
Vendor-Specific
26
私人自定义属性
Session-Timeout
27
预付费时长
Idle-Timeout
28
超时中断时间
NAS-Identifier
32
Nas标识符
Acct-Status-Type
40
用于识别计费包
Acct-Delay-Time
41
用于上报发送该计费包花费的时间
Acct-Input-Octets
42
输入字节数,用于兼容RADIUS协议
Acct-Output-Octets
43
输出字节数,用于兼容RADIUS协议
Acct-Session-Id
44
上报连接号给计费服务器
Acct-Authentic
45
用户如何实现认证:
1==Radiu