admin管理员组

文章数量:1531492

2024年7月20日发(作者:)

什么是RADIUS协议

RADIUS

RADIUS:Remote Authentication Dial In User Service,远程用户拨号认证系

统由RFC2865,RFC2866定义,是目前应用最广泛的AAA协议。

目录

简介

历史

基本工作原理

协议结构

基本消息交互流程

编辑本段简介

RADIUS是一种C/S结构的协议,它的客户端最初就是NAS(Net Access

Server)服务器,现在任何运行RADIUS客户端软件的计算机都可以成为

RADIUS的客户端。RADIUS协议认证机制灵活,可以采用PAP、 CHAP或者

Unix登录认证等多种方式。RADIUS是一种可扩展的协议,它进行的全部工

作都是基于Attribute-Length-Value的向量进行的。RADIUS也支持厂商扩

充厂家专有属性。

由于RADIUS协议简单明确,可扩充,因此得到了广泛应用,包括普通

电话上网、ADSL上网、小区宽带上网、IP电话、VPDN(Virtual Private Dialup

Networks,基于拨号用户的虚拟专用拨号网业务)、移动电话预付费等业

务。最近IEEE提出了802.1x标准,这是一种基于端口的标准,用于对无

线网络的接入认证,在认证时也采用RADIUS协议。

编辑本段历史

RADIUS协议最初是由Livingston公司提出的,原先的目的是为拨号用

户进行认证和计费。后来经过多次改进,形成了一项通用的认证计费协议。

创立于1966年Merit Network, Inc.是密执安大学的一家非营利公司,

其业务是运行维护该校的网络互联MichNet。1987年,Merit在美国NSF(国

家科学基金会)的招标中胜出,赢得了NSFnet(即Internet前身)的运营

合同。因为NSFnet是基于IP的网络,而MichNet却基于专有网络协议,

Merit面对着如何将MichNet的专有网络协议演变为IP协议,同时也要把

MichNet上的大量拨号业务以及其相关专有协议移植到IP网络上来。

1991年,Merit决定招标拨号服务器供应商,几个月后,一家叫

Livingston的公司提出了建议,冠名为RADIUS,并为此获得了合同。

1992年秋天,IETF的NASREQ工作组成立,随之提交了RADIUS作为草

案。很快,RADIUS成为事实上的网络接入标准,几乎所有的网络接入服务

器厂商均实现了该协议。

1997年,RADIUS RFC2058发表,随后是RFC2138,最新的RADIUS RFC2865

发表于2000年6月。

编辑本段基本工作原理

用户接入NAS,NAS向RADIUS服务器使用Access-Require数据包提交

用户信息,包括用户名、密码等相关信息,其中用户密码是经过MD5加密

的,双方使用共享密钥,这个密钥不经过网络传播;RADIUS服务器对用户

名和密码的合法性进行检验,必要时可以提出一个Challenge,要求进一步

对用户认证,也可以对NAS进行类似的认证;如果合法,给NAS返回

Access-Accept数据包,允许用户进行下一步工作,否则返回Access-Reject

数据包,拒绝用户访问;如果允许访问,NAS向RADIUS服务器提出计费请

求Account- Require,RADIUS服务器响应Account-Accept,对用户的计费

开始,同时用户可以进行自己的相关操作。

RADIUS还支持代理和漫游功能。简单地说,代理就是一台服务器,可

以作为其他RADIUS服务器的代理,负责转发RADIUS认证和计费数据包。

所谓漫游功能,就是代理的一个具体实现,这样可以让用户通过本来和其

无关的RADIUS服务器进行认证,用户到非归属运营商所在地也可以得到服

务,也可以实现虚拟运营。

RADIUS服务器和NAS服务器通过UDP协议进行通信,RADIUS服务器的

1812端口负责认证,1813端口负责计费工作。采用UDP的基本考虑是因为

NAS和RADIUS服务器大多在同一个局域网中,使用UDP更加快捷方便,而

且UDP是无连接的,会减轻RADIUS的压力,也更安全。

RADIUS协议还规定了重传机制。如果NAS向某个RADIUS服务器提交请

求没有收到返回信息,那么可以要求备份RADIUS服务器重传。由于有多个

备份RADIUS服务器,因此NAS进行重传的时候,可以采用轮询的方法。如

果备份RADIUS服务器的密钥和以前RADIUS服务器的密钥不同,则需要重

新进行认证。

编辑本段协议结构

Code 域长度为1个字节,用于标明RADIUS报文的类型,如果Code域

中的内容是无效值,报文将被丢弃,有效值如下:

1、请求访问(Access-Request);

2、接收访问(Access-Accept);

3、拒绝访问(Access-Reject);

4、计费请求(Accounting-Request);

5、计费响应(Accounting-Response);

11、挑战访问(Access-Challenge);

12、服务器状况(Status-Server — Experimental);

13、客户机状况(Status-Client — Experimental);

255、预留(Reserved)

Identifier ― 匹配请求和响应的标识符。

Length ― 信息大小,包括头部。

Authenticator 域占用16个字节,用于Radius Client 和Server之

间消息认证的有效性,和密码隐藏算法。访问请求Access-Request报文中

的认证字的值是16字节随机数,认证字的值要不能被预测并且在一个共享

密钥的生命期内唯一。

1.访问请求认证字

在Access-Request包中认证字的值是16字节随机数,认证字的值要不

能被预测,并且在一个共享密钥的生命期内唯一;

2.访问回应认证字

Access-Accept Access-Reject 和Access-Challenge包中的认证字称

为访问回应认证字,访问回应认证字的值定义为

MD5(Code+ID+Length+RequestAuth+Attributes+Secret);

3.计费请求认证字

在计费请求包中的认证字域称为计费请求认证字,它是一个16字节的

MD5校验和,计费请求认证字的值定义为MD5(Code + Identifier + Length

+ 16 zero octets + request attributes +shared secret);

4.计费回应认证字

在计费回应报文中的认证字域称为计费回应认证字,它的值定义为

MD5(Accounting-Response Code + Identifier + Length + the

RequestAuthenticator field from the Accounting-Request packet being

replied to +the response attributes + shared secret);

编辑本段基本消息交互流程

radius 服务器对用户的认证过程通常需要利用nas 等设备的代理认

证功能,radius 客户端和radius 服务器之间通过共享密钥认证相互间交

互的消息,用户密码采用密文方式在网络上传输,增强了安全性。radius 协

议合并了认证和授权过程,即响应报文中携带了授权信息。

基本交互步骤如下:

(1) 用户输入用户名和口令;

(2) radius 客户端根据获取的用户名和口令,向radius 服务器发送

认证请求包(access-request)。

(3) radius 服务器将该用户信息与users 数据库信息进行对比分析,

如果认证成功,则将用户的权限信息以认证响应包(access-accept)发送

给radius 客户端;如果认证失败,则返回access-reject 响应包。

(4) radius 客户端根据接收到的认证结果接入/拒绝用户。如果可以

接入用户,则radius 客户端向radius 服务器发送计费开始请求包

(accounting-request),status-type 取值为start;

(5) radius 服务器返回计费开始响应包(accounting-response);

(6) radius 客户端向radius 服务器发送计费停止请求包

(accounting-request),status-type 取值为stop;

(7) radius 服务器返回计费结束响应包(accounting-response)。

本文标签: 认证用户计费服务器进行