RADIUS协议

1. 摘要

目前,电信运营商和服务提供商所采用的认证方式主要有本地认证、RADIUS认证和不认证;而计费策略更是丰富多彩,常见的有不计费(包月)、按时长计费、按流量计费、按端口计费等等。目前在全部这些认证计费方式中,以采用RADIUS Server进行集中认证计费应用的最为普及和普遍。算法

AAA是认证(Authentication)、受权(Authorization)和计费(Accounting)的简称,它是一种对网络安全进行管理的基本框架。而RADIUS (Remote Authentication Dia• -In User Service)即远程认证拨号用户服务,是一种分布式的、客户机/服务器结构的信息交互协议,它能保护网络不受未受权访问的干扰。两者结合能够实现对远程接入用户身份、权限以及流量的严格控制。RADIUS为服务供应商和公司提供了一种灵活通用的协议,用来完成集中式的用户认证、口令加密、服务选择、过滤和账目核对等工做。当进行PAP/CHAP链接或链接第三方认证服务器时,一个单独的RADIUS数据库服务器能够在多个复杂网络上同时管理多个安全系统,并可用于维护成千上万用户的信息安全。数据库

RADIUS不只指运行于服务器上的软件,还包括网络访问服务器与RADIUS服务器之间的交互操做协议。安全

如下即针对RADIUS协议的原理和具体的应用作详细介绍。服务器

2. AAA介绍

2.1 AAA概述

AAA是认证(Authentication)、受权(Authorization)和计费(Accounting)的缩写,它是运行于NAS(网络访问服务器)上的客户端程序。提供了一个用来对认证、受权和计费这三种安全功能进行配置的一致性框架,其实是对网络安全的一种管理。这里的网络安全主要指访问控制。包括哪些用户能够访问网络服务器;具备访问权的用户能够获得哪些服务;以及如何对正在使用网络资源的用户进行计费。网络

2.2 AAA的实现

                   AAA框架图多线程

• 本地认证——即在NAS端进行认证、受权和计费,框架

• 远程认证——经过协议进行远程的认证、受权和计费。分布式

AAA的实现可采用RADIUS协议。RADIUS用来管理使用串口和调制解调器的大量分散用户。编码

网络接入服务器简称NAS。当用户想要经过某个网络(如电话网)与NAS创建链接从而得到访问其余网络的权利时,NAS能够选择在NAS上进行本地认证计费,或把用户信息传递给RADIUS服务器,由RADIUS进行认证计费;RADIUS 协议规定了NAS与RADIUS 服务器之间如何传递用户信息和计费信息,即二者之间的通讯规则;RADIUS服务器负责接收用户的链接请求,完成认证,并把用户所需的配置信息返回给NAS。用户得到受权后,在其正常上线、在线和下线过程当中,RADIUS服务器还完成对用户帐号计费的功能。加密

3. RADIUS协议概述

3.1 引论

RADIUS远程认证拨入用户服务,是用于NAS和AAA服务器间通讯的一种协议。RADIUS对AAA的三个组件都提供支持:认证、受权和计费。

一个网络容许外部用户经过公用网对其进行访问,其用户在地理上的分布会极为分散。用户能够把本身的信息传递给这个网络,也能够从这个网络获得本身想要的信息。因为存在内外的双向数据流动,网络安全就显得尤其重要。这个网络管理的内容包括:哪些用户能够得到访问权;得到访问权的用户能够容许使用哪些服务;如何对使用网络资源的用户进行记费。AAA很好的完成了这三项任务。

RADIUS经过创建一个惟一的用户数据库,存储用户名,用户的密码来进行认证存储传递给用户的服务类型以及相应的配置信息来完成受权。

3.2 RADIUS关键特性

• 客户端/服务器模式(Client/Server)

NAS是做为RADIUS的客户端运做的。这个客户端负责将用户信息传递给指定的RADIUS服务器,并负责执行返回的响应。RADIUS服务器负责接收用户的链接请求,鉴别用户,并为客户端返回全部为用户提供服务所必须的配置信息。一个RADIUS服务器能够为其余的RADIUS Server或其余种类认证服务器担当代理。

• 网络安全 (Network Security)

客户端和RADIUS服务器之间的事务是经过使用一种历来不会在网上传输的共享密钥机制进行鉴别的。另外,在客户端和RADIUS服务器之间的任何用户密码都是被加密后传输的,这是为了不用户密码在不安全的网络上被监听获取的可能性。

• 灵活的认证机制 (Flexible Authentication Mechanisms)

RADIUS服务器能支持多种认证用户的方法。包括点对点的PAP认证(PPP PAP)、点对点的CHAP认证(PPP CHAP)、UNIX的登陆操做(UNIX login)、和其余认证机制。

• 扩展协议(Extensible Protoco• )

RADIUS协议具备很好的扩展性。RADIUS包是由包头和必定数目的属性(Attribute)构成的。新的属性能够在不中断已存在协议执行的前提下进行增长。

3.3 C/S结构

         用户, NAS,RADIUS 服务器的关系

RADIUS采用典型的客户端/服务器(Client/Server)结构,它的客户端最初就是NAS,如今任何运行RADIUS客户端软件的计算机均可以成为RADIUS的客户端。NAS上运行的AAA程序对用户来说为服务器端,对RADIUS服务器来说是做为客户端。负责传输用户信息到指定的RADIUS服务器,而后根据从服务器返回的信息进行相应处理(如接入/挂断用户)。RADIUS服务器负责接收用户链接请求,认证用户,而后给NAS返回全部须要的信息。

一、RADIUS的客户端一般运行于接入服务器(NAS)上,RADIUS服务器一般运行于一台工做站上,一个RADIUS服务器能够同时支持多个RADIUS客户(NAS)。

二、RADIUS的服务器上存放着大量的信息,接入服务器(NAS)无须保存这些信息,而是经过RADIUS协议对这些信息进行访问。这些信息的集中统一的保存,使得管理更加方便,并且更加安全。

三、RADIUS服务器能够做为一个代理,以客户的身份同其余的RADIUS服务器或者其余类型的认证服务器进行通讯。用户的漫游一般就是经过RADIUS代理实现的。简单地说,代理就是一台服务器,能够做为其余RADIUS服务器的代理,负责转发RADIUS认证和计费数据包。所谓漫游功能,就是代理的一个具体实现,这样可让用户经过原本和其无关的RADIUS服务器进行认证。

3.4 RADIUS在协议栈中的位置

RADIUS是一种流行的AAA协议,采用UDP协议传输,在协议栈中位置以下:

        RADIUS在协议栈中的位置

RADIUS为什么采用UDP,而不是TCP的缘由以下:

一、NAS和RADIUS服务器之间传递的通常是几十至上百个字节长度的数据,用户能够容忍几秒到十几秒的验证等待时间。当处理大量用户时服务器端采用多线程,UDP简化了服务器端的实现过程。

二、TCP是必须成功创建链接后才能进行数据传输的,这种方式在有大量用户使用的状况下实时性很差。

三、当向主用服务器发送请求失败后,还要必须向备用的服务器发送请求。因而RADIUS要有重传机制和备用服务器机制,它所采用的定时机制,TCP不能很好的知足。

RADIUS协议采用的是UDP协议,数据包可能会在网络上丢失,若是客户没有收到响应,那么能够从新发送该请求包。屡次发送以后若是仍然收不到响应,RADIUS客户能够向备用的RADIUS服务器发送请求包。

3.5 RADIUS网络安全

RADIUS协议的加密是使用MD5加密算法进行的,在RADIUS的客户端(NAS)和服务器端(RADIUS Server)保存了一个密钥(key),RADIUS协议利用这个密钥使用MD5算法对RADIUS中的数据进行加密处理。密钥不会在网络上传送。

RADIUS的加密主要体如今如下两方面:

3.5.1 包加密

在RADIUS包中,有16字节的验证字(authenticator)用于对包进行签名,收到RADIUS包的一方要查看该签名的正确性。若是包的签名不正确,那么该包将被丢弃,对包进行签名时使用的也是MD5算法(利用密钥),没有密钥的人是不能构造出该签名的。

3.5.2 口令加密

在认证用户时,用户的口令在NAS和RADIUS Server之间不会以明文方式传送,而是使用了MD5算法对口令进行加密。没有密钥的人是没法正确加密口令的,也没法正确地对加密过的口令进行解密。

3.5.3 口令加密与口令验证过程

当用户上网时,NAS将决定对用户采用何种认证方法。下面对使用RADIUS认证的状况下PPP用户与NAS之间的PAP和CHAP认证过程进行介绍。

RADIUS服务器可以使用H3C的iMC服务器,也可使用CISCO的ACS服务器或其它第三方服务器。

• PAP 验证:

                  Radius Server PAP认证

用户以明文的形式把用户名和他的密码传递给NAS,NAS把用户名和加密过的密码放到验证请求包的相应属性中传递给RADIUS服务器。RADIUS服务器根据NAS上传的账号进行验证来决定是否容许用户上网并返回结果。NAS能够在其中包含服务类型属性Attribute Service-Type=Framed-User,和Framed-Protoco• =PPP做为提示来告诉RADIUS服务器PPP是所但愿的服务。

Secret password =Password XOR MD5(Challenge + Key)

(Challenge就是RADIUS报文中的Authenticator)

• CHAP 验证:

对于CHAP(挑战握手认证协议),它提供对用户口令进行加密的机制。

                RADIUS Server CHAP认证

当用户请求上网时,NAS产生一个16字节的随机码给用户(同时还有一个ID号,本地路由器的Host name)。用户端获得这个包后使用本身独有的设备或软件客户端将CHAP ID、用户密码(口令字)用MD5算法对该随机码进行加密生成一个Secret Password,随同用户名user name一并传给NAS。

NAS把传回来的user name和Secret Password分别做为用户名和密码,并把原来的16字节随机码以及CHAP ID传给RADIUS服务器。RADIUS根据用户名在服务器端查找数据库,获得和用户端进行加密所用的同样的密钥,用MD5算法对CHAP ID,密钥和传来的16字节的随机码进行加密,将其结果与传来的Password做比较,若是相匹配,服务器送回一个接入容许数据包,不然送回一个接入拒绝数据包。

4. RADIUS体系结构

当用户PC经过某个网络(如电话网)与 NAS创建链接从而得到访问其余网络的权利时,NAS能够选择在NAS上进行本地认证计费,或把用户信息传递给RADIUS服务器,由RADIUS进行认证计费;RADIUS 协议规定了NAS与RADIUS 服务器之间如何传递用户信息和计费信息;RADIUS服务器负责接收用户的链接请求,完成认证,并把传递服务给用户所需的配置信息返回给NAS。

一般对RADIUS协议的认证服务端口号是1645(早期实现)或1812,计费服务端口号是1646(早期实现)或1813。当咱们进行NAS设备和RADIUS服务器对接的时候,因为生产厂家可能不一样,所对应的服务器端口号不一样,那么就须要调整服务器端口号,例如与其余厂家radius协议默认端口号是1645和1646,须要与他们协商,调整到相同的端口号,这样才能对接成功。

4.1 RADIUS报文的交互过程

RADIUS服务器对用户的认证过程一般须要利用NAS等设备的代理认证功能,RADIUS客户端和RADIUS服务器之间经过共享密钥认证相互间交互的消息,用户密码采用密文方式在网络上传输,加强了安全性。RADIUS协议合并了认证和受权过程,即响应报文中携带了受权信息。操做流程图和步骤以下所示:

                                    RADIUS的典型实现流程

在一个客户端被设置使用RADIUS协议后,任何使用这个终端的用户都须要向这个客户端提供认证信息。该信息或者以一种定制化的提示信息出现,用户须要输入他们的用户名和密码;或者也能够选择好比像点对点的传输协议(Point-to-Point Protoco• ),经过认证包来传递这种认证信息。

基本交互过程以下:

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)。

4.2 RADIUS协议的报文结构

RADIUS采用UDP传输消息,经过定时器管理机制、重传机制、备用服务器机制,确保RADIUS服务器和客户端之间交互消息正确收发。标准RADIUS协议报文结构以下:

0 7 8 15 16 31

RADIUS报文格式

􀀝 Code:包类型;1字节,指示RADIUS包的类型。在接收到一个无效编码域的数据包后,该数据包只是会被简单的丢弃。

主要包括以下类型:

Code域主要取值的说明

Code

报文类型

报文说明

1

Access-Request认证请求包

方向Client->Server,Client将用户信息传输到Server以判断是否接入该用户。该报文中必须包含User-Name属性,可选包含NAS-IP-Address、User-Password、NAS-Port等属性。

2

Access-Accept认证接受包

方向Server->Client,若是Access-Request报文中全部Attribute值都是能够接受(即认证经过),则传输该类型报文。

3

Access-Reject认证拒绝包

方向Server->Client,若是Access-Request报文中存在任何Attribute值没法被接受(即认证失败),则传输该类型报文。

4

Accounting-Request计费请求包

方向Client->Server,Client将用户信息传输到Server,请求Server开始计费,由该报文中的Acct-Status-Type属性区分计费开始请求和计费结束请求。该报文包含属性和Access-Request报文大体相同。

5

Accounting-Response认证响应包

方向Server->Client,Server通知Client侧已经收到Accounting-Request报文而且已经正确记录计费信息。该报文包含端口上输入/输出字节数、输入/输出包数、会话时长等信息。

􀀝 Identifier: 包标识;1字节,取值范围为0 ~255;用于匹配请求包和响应包,同一组请求包和响应包的Identifier应相同。若是在一个很短的时间片断里,一个请求有相同的客户源IP地址、源UDP端口号和标识符,RADIUS服务器会认为这是一个重复的请求而不响应处理。1字节意味着客户端在收到服务器的响应以前最多发送255(28-1)个请求。Identifier段里的值是序列增加的。

􀀝 length: 包长度;2字节;标识了分组的长度,整个包中全部域的长度。长度域范围以外的字节被认为是附加的,并在接受的时候超长部分将被忽略。若是包长比长度域给出的短,也必须丢弃,最小长度为20,最大长度为4096。

􀀝 Authenticator:验证字域;16 字节明文随机数;最重要的字节组最早被传输。该值用来认证来自RADIUS服务器的回复,也用于口令隐藏算法(加密)。

该验证字分为两种:

• 请求验证字——Request Authenticator

用在请求报文中,采用惟一的16字节随机码。

• 响应验证字——Response Authenticator

用在响应报文中,用于鉴别响应报文的合法性。

响应验证字=MD5(Code+ID+length+请求验证字+Attributes+Key)

􀀝 Attributes:属性域;用来在请求和响应报文中携带详细的认证、受权、信息和配置细节,来实现认证、受权、计费等功能。采用(Type、length、Value)三元组的形式提供,

属性在数据报中的格式:

Type:Attribute Number(属性号),用来讲明数据包中表示的属性类型。范围是1~255。服务器和客户端均可以忽略不可识别类型的属性。值为26,标识厂商私有属性。

length(属性长度):说明整个属性域的长度。长度域最小值为3(表示属性域至少占3个字节)。若是AAA服务器收到的接入请求中属性长度无效,则发送接入拒绝包。若是NAS收到的接入容许、接入拒绝和接入盘问中属性的长度也无效,则必须以接入拒绝对待,或者被简单的直接丢弃。

Value(值):表示属于本身的特性和特征。即便该域为nul• ,这个域也必须出如今属性域中。有6种属性值——整数(INT) ;枚举(ENUM) ;IP地址(IPADDR) ;文本(STRING) ;日期(DATE) ;二进制字符串(BINARY) ;

RFC中定义的标准Attribute域大体包括:

Attribute域主要取值的说明

Type

属性类型

Type

属性类型

1

User-Name

23

Framed-IPX-Network

2

User-Password

24

State

3

CHAP-Password

25

Class

4

NAS-IP-Address

26

Vendor-Specific

5

NAS-Port

27

Session-Timeout

6

Service-Type

28

Idle-Timeout

7

Framed-Protocol

29

Termination-Action

8

Framed-IP-Address

30

Called-Station-Id

9

Framed-IP-Netmask

31

Calling-Station-Id

10

Framed-Routing

32

NAS-Identifier

11

Filter-ID

33

Proxy-State

12

Framed-MTU

34

login-lAT-Service

13

Framed-Compression

35

login-lAT-Node

14

login-IP-Host

36

login-lAT-Group

15

login-Service

37

Framed-AppleTalk-link

16

login-TCP-Port

38

Framed-AppleTalk-Network

17

(unassigned)

39

Framed-AppleTalk-Zone

18

Reply_Message

40-59

(reserved for accounting)

19

Callback-Number

60

CHAP-Challenge

20

Callback-ID

61

NAS-Port-Type

21

(unassigned)

62

Port-limit

22

Framed-Route

63

login-lAT-Port

RADIUS协议具备良好的可扩展性,协议中定义的26号属性(Vender-Specific)被用来扩展以支持供应商本身定义的扩展属性,主要指不适于常规使用的属性扩展。但不容许对RADIUS协议中的操做有影响。当服务器不具有去解释由客户端发送过来的供应商特性信息时,则服务器必须忽略它(过程能够被记录下来)。当没有收到预期的供应商特性信息的状况下,客户端也应该尝试在没有它的状况下运做(即便是在降级模式中)。

如下是具体厂商属性格式的总结。域的传输是从左向右。报文结构以下图所示:

自定义属性格式

相关文章
相关标签/搜索