RADIUS协议的原理及应用
目录
培训目标 (2)
前言 (2)
1 RADIUS协议介绍 (2)
2 RADIUS协议报文结构 (3)
2.1 Radius协议报文格式 (3)
2.2 Code域 (3)
2.3 Identifier域 (4)
2.4 Length域 (4)
2.5 Authenticator (4)
2.6 Attributes域 (5)
2.6.1 Type域 (5)
2.6.2 Length域 (5)
2.6.3 Value域 (6)
2.6.4常用属性类型列表 (6)
3 NAS设备RADIUS部分配置举例 (8)
4 RADIUS系统下用户认证过程 (9)
4.1 报文1:EAPOL-Start (9)
4.2 报文2:EAP-Request/Identity (10)
4.3 报文3:EAP-Response/Identity (10)
4.4 报文4:RADIUS Access-Request (11)
4.5 报文5:RADIUS Access-Challenge (12)
4.6 报文6:EAP-Request/MD5-Challenge (13)
4.7 报文7:EAP-Response/MD5-Challenge (14)
4.8 报文8:RADIUS Access-Request (14)
4.9 报文9:RADIUS Access-Accept (15)
4.10 报文10:EAP-Success (16)
4.11 报文11:RADIUS Accounting-Request (17)
4.12 报文12:RADIUS Accounting-Response (18)
4.13 报文13:EAPOL-Logoff (18)
4.14 报文14:RADIUS Accounting-Request (19)
4.15 报文15:RADIUS Accounting-Response (20)
4.16 报文16:EAP-Failure (21)
培训目标
●了解RADIUS协议基本概念;
●熟悉RADIUS协议报文结构;
●熟悉RADIUS协议工作原理;
前言
企业要求只有授权的用户才能访问自己的内部网络,教育网采取根据流量计费的策略,VOD系统根据点播的时间收费等等。这些最常见的网络应用却面临一个同样的问题:如何对用户进行认证和计费?一种常见的认证计费方法——RADIUS协议会帮助我们解决这些问题。RADIUS是目前最常用的认证计费协议之一,它简单安全,易于管理,扩展性好,所以得到广泛应用。
1 RADIUS协议简介
RADIUS ( Remote Authentication Dial In User Service )是远程认证拨号用户服务的简称。RADIUS 原先设计的目的是为拨号用户进行认证和计费。后来经过多次改进,形成了一项通用的认证计费协议,主要完成在网络接入设备和认证服务器之间承载认证、授权、计费和配置信息。RADIUS是一种C/S结构的协议,它的客户端最初就是NAS服务器,现在任何运行RADIUS客户端软件的计算机都可以成为RADIUS 的客户端。
RADIUS基本原理:用户接入NAS,NAS向RADIUS服务器使用Access-Request数据包提交用户信息,包括用户名、密码等相关信息,其中用户密码是经过MD5加密的,双方使用共享密钥,这个密钥不经过网络传播;RADIUS服务器对用户名和密码的合法性进行检验,必要时可以提出一个Challenge,要求进一步对用户认证,也可以对NAS进行类似的认证;如果合法,给NAS返回Access-Accept数据包,允许用户进行下一步工作,否则返回Access-Reject数据包,拒绝用户访问;如果允许访问,NAS向RADIUS 服务器提出计费请求Account-Request,RADIUS服务器响应Account-Accept,对用户开始计费,同时用户可以进行自己的相关操作。
RADIUS协议具有以下特点:
●客户端/服务器结构;
●采用共享密钥保证网络传输安全性;
●良好的可扩展性;
●认证机制灵活;
RADIUS 协议承载于UDP 之上,官方指定端口号为认证授权端口1812、计费端口1813。RADIUS协议在RFC2865、RFC2866 中定义。锐捷网络RG-SAM系统和NAS之间的通讯采用RADIUS协议。由于RADIUS协议的良好扩展性,很多厂家对RADIUS作了扩展,我们公司也对其进行了扩展。使用时我们应该注意不同公司对RADIUS协议扩展部分不能完全兼容。
2 RADIUS协议报文结构
2.1 Radius协议报文格式
RADIUS报文格式如下图所示,各域内容按照从左向右传送
0 1 2 3
0 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Attributes ...
+-+-+-+-+-+-+-+-+-+-+-+-+-
2.2 Code域
Code域长度为1个字节,用于标明RADIUS报文的类型,如果Code域中的内容是无效值,报文将被丢弃RADIUS Code域的有效值如下:
Code=1 Access-Request
Code=2 Access-Accept