43-RADIUS
本章节下载: 43-RADIUS (420.43 KB)
RADIUS(Remote Authentication Dial-In User Service,远程认证拨号用户服务)是一种用于实现AAA(Authentication, Authorization and Accounting,认证、授权和计费)的协议。AAA的详细介绍请参见“AAA”。
RADIUS是一种分布式的、客户端/服务器结构的信息交互协议,能保护网络不受未授权访问的干扰,常应用在既要求较高安全性、又允许远程用户访问的各种网络环境中。该协议定义了基于UDP的RADIUS帧格式及其消息传输机制,并规定UDP端口1812、1813分别作为认证、计费端口。
RADIUS最初仅是针对拨号用户的AAA协议,后来随着用户接入方式的多样化发展,RADIUS也适应多种用户接入方式,如以太网接入、ADSL接入。它通过认证授权来提供接入服务,通过计费来收集、记录用户对网络资源的使用。
l 客户端:RADIUS客户端一般位于NAS设备上,可以遍布整个网络,负责传输用户信息到指定的RADIUS服务器,然后根据从服务器返回的信息进行相应处理(如接受/拒绝用户接入)。
l 服务器:RADIUS服务器运行在中心计算机或工作站上,维护相关的用户认证和网络服务访问信息,负责接收用户连接请求并认证用户,然后给客户端返回所有需要的信息(如接受/拒绝认证请求)。
RADIUS服务器通常要维护三个数据库,如图1-1所示。
图1-1 RADIUS服务器的组成
l “Users”:用于存储用户信息(如用户名、口令以及使用的协议、IP地址等配置信息)。
l “Clients”:用于存储RADIUS客户端的信息(如接入设备的共享密钥、IP地址等)。
l “Dictionary”:用于存储RADIUS协议中的属性和属性值含义的信息。
RADIUS客户端和RADIUS服务器之间认证消息的交互是通过共享密钥的参与来完成的,并且共享密钥不能通过网络来传输,增强了信息交互的安全性。另外,为防止用户密码在不安全的网络上传递时被窃取,在传输过程中对密码进行了加密。
RADIUS服务器支持多种方法来认证用户。另外,RADIUS服务器还可以作为一个代理,以RADIUS客户端的身份与其它的RADIUS认证服务器进行通信,负责转发RADIUS认证和计费报文。
用户、RADIUS客户端和RADIUS服务器之间的交互流程如图1-2所示。
图1-2 RADIUS的基本消息交互流程
消息交互流程如下:
(1) 用户发起连接请求,向RADIUS客户端发送用户名和密码。
(2) RADIUS客户端根据获取的用户名和密码,向RADIUS服务器发送认证请求包(Access-Request),其中的密码在共享密钥的参与下由MD5算法进行加密处理。
(3) RADIUS服务器对用户名和密码进行认证。如果认证成功,RADIUS服务器向RADIUS客户端发送认证接受包(Access-Accept);如果认证失败,则返回认证拒绝包(Access-Reject)。由于RADIUS协议合并了认证和授权的过程,因此认证接受包中也包含了用户的授权信息。
(4) RADIUS客户端根据接收到的认证结果接入/拒绝用户。如果允许用户接入,则RADIUS客户端向RADIUS服务器发送计费开始请求包(Accounting-Request)。
(5) RADIUS服务器返回计费开始响应包(Accounting-Response),并开始计费。
(6) 用户开始访问网络资源。
(7) 用户请求断开连接,RADIUS客户端向RADIUS服务器发送计费停止请求包(Accounting-Request)。
(8) RADIUS服务器返回计费结束响应包(Accounting-Response),并停止计费。
(9) 用户结束访问网络资源。
RADIUS采用UDP报文来传输消息,通过定时器管理机制、重传机制、备用服务器机制,确保RADIUS服务器和客户端之间交互消息的正确收发。RADIUS报文结构如图1-3所示。
图1-3 RADIUS报文结构
各字段的解释如下:
(1) Code域
长度为1个字节,用于说明RADIUS报文的类型,如表1-1所示。
表1-1 Code域的主要取值说明
Code |
报文类型 |
报文说明 |
1 |
Access-Request认证请求包 |
方向Client->Server,Client将用户信息传输到Server,由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属性区分计费开始请求和计费结束请求 |
5 |
Accounting-Response计费响应包 |
方向Server->Client,Server通知Client已经收到Accounting-Request报文,并且已经正确记录计费信息 |
(2) Identifier域
长度为1个字节,用于匹配请求包和响应包,以及检测在一段时间内重发的请求包。类型一致的请求包和响应包的Identifier值相同。
(3) Length域
长度为2个字节,表示RADIUS数据包(包括Code、Identifier、Length、Authenticator和Attribute)的长度,范围从20~4096。超过Length域的字节将作为填充字符被忽略。如果接收到的包的实际长度小于Length域的值时,则包会被丢弃。
(4) Authenticator域
长度为16个字节,用于验证RADIUS服务器的应答,另外还用于用户密码的加密。Authenticator包括两种类型:Request Authenticator和Response Authenticator。
(5) Attribute域
不定长度,用于携带专门的认证、授权和计费信息,提供请求和响应报文的配置细节。Attribute可包括多个属性,每一个属性都采用(Type、Length、Value)三元组的结构来表示。
l 类型(Type),1个字节,取值为1~255,用于表示属性的类型,表1-2列出了RADIUS认证、授权、计费常用的属性。
l 长度(Length),表示该属性(包括类型、长度和属性)的长度,单位为字节。
l 属性值(Value),表示该属性的信息,其格式和内容由类型和长度决定,最大长度为253字节。
属性编号 |
属性名称 |
属性编号 |
属性名称 |
1 |
User-Name |
45 |
Acct-Authentic |
2 |
User-Password |
46 |
Acct-Session-Time |
3 |
CHAP-Password |
47 |
Acct-Input-Packets |
4 |
NAS-IP-Address |
48 |
Acct-Output-Packets |
5 |
NAS-Port |
49 |
Acct-Terminate-Cause |
6 |
Service-Type |
50 |
Acct-Multi-Session-Id |
7 |
Framed-Protocol |
51 |
Acct-Link-Count |
8 |
Framed-IP-Address |
52 |
Acct-Input-Gigawords |
9 |
Framed-IP-Netmask |
53 |
Acct-Output-Gigawords |
10 |
Framed-Routing |
54 |
(unassigned) |
11 |
Filter-ID |
55 |
Event-Timestamp |
12 |
Framed-MTU |
56-59 |
(unassigned) |
13 |
Framed-Compression |
60 |
CHAP-Challenge |
14 |
Login-IP-Host |
61 |
NAS-Port-Type |
15 |
Login-Service |
62 |
Port-Limit |
16 |
Login-TCP-Port |
63 |
Login-LAT-Port |
17 |
(unassigned) |
64 |
Tunnel-Type |
18 |
Reply_Message |
65 |
Tunnel-Medium-Type |
19 |
Callback-Number |
66 |
Tunnel-Client-Endpoint |
20 |
Callback-ID |
67 |
Tunnel-Server-Endpoint |
21 |
(unassigned) |
68 |
Acct-Tunnel-Connection |
22 |
Framed-Route |
69 |
Tunnel-Password |
23 |
Framed-IPX-Network |
70 |
ARAP-Password |
24 |
State |
71 |
ARAP-Features |
25 |
Class |
72 |
ARAP-Zone-Access |
26 |
Vendor-Specific |
73 |
ARAP-Security |
27 |
Session-Timeout |
74 |
ARAP-Security-Data |
28 |
Idle-Timeout |
75 |
Password-Retry |
29 |
Termination-Action |
76 |
Prompt |
30 |
Called-Station-Id |
77 |
Connect-Info |
31 |
Calling-Station-Id |
78 |
Configuration-Token |
32 |
NAS-Identifier |
79 |
EAP-Message |
33 |
Proxy-State |
80 |
Message-Authenticator |
34 |
Login-LAT-Service |
81 |
Tunnel-Private-Group-id |
35 |
Login-LAT-Node |
82 |
Tunnel-Assignment-id |
36 |
Login-LAT-Group |
83 |
Tunnel-Preference |
37 |
Framed-AppleTalk-Link |
84 |
ARAP-Challenge-Response |
38 |
Framed-AppleTalk-Network |
85 |
Acct-Interim-Interval |
39 |
Framed-AppleTalk-Zone |
86 |
Acct-Tunnel-Packets-Lost |
40 |
Acct-Status-Type |
87 |
NAS-Port-Id |
41 |
Acct-Delay-Time |
88 |
Framed-Pool |
42 |
Acct-Input-Octets |
89 |
(unassigned) |
43 |
Acct-Output-Octets |
90 |
Tunnel-Client-Auth-id |
44 |
Acct-Session-Id |
91 |
Tunnel-Server-Auth-id |
表1-2中所列的属性由RFC 2865、RFC 2866、RFC2867和RFC2568分别定义。
RADIUS协议具有良好的可扩展性,协议(RFC 2865)中定义的26号属性(Vendor-Specific)用于设备厂商对RADIUS进行扩展,以实现标准RADIUS没有定义的功能。
设备厂商可以封装多个自定义的“(Type、Length、Value)”子属性来扩展RADIUS。如图1-4所示,26号属性报文内封装的子属性包括以下四个部分:
l Vendor-ID域占4字节,表示厂商代号,最高字节为0,其余3字节的编码见RFC 1700。
l Vendor-Type,表示子属性类型。
l Vendor-Length,表示该子属性长度。
l Vendor-Data,表示该子属性的内容。
与RADIUS相关的协议规范有:
l RFC 2865:Remote Authentication Dial In User Service (RADIUS)
l RFC 2866:RADIUS Accounting
l RFC 2867:RADIUS Accounting Modifications for Tunnel Protocol Support
l RFC 2868:RADIUS Attributes for Tunnel Protocol Support
l RFC 2869:RADIUS Extensions
l 通过Web配置的RADIUS方案的方案名为system。
l 如果系统当前不存在名为system的RADIUS方案,则当用户选择“认证 > RADIUS”菜单进入RADIUS模块的页面时,系统会自动创建一个名为system的RADIUS方案。
RADIUS配置的推荐步骤如表1-3所示。
表1-3 RADIUS配置步骤
步骤 |
配置任务 |
说明 |
|
1 |
配置认证服务器 |
必选 配置RADIUS主/备份认证服务器的相关信息 缺省情况下,不存在任何认证服务器 |
详细配置请参见“1.2.2 配置RADIUS服务器” |
2 |
配置计费服务器 |
可选 配置RADIUS主/备份计费服务器的相关信息 缺省情况下,不存在任何计费服务器 |
|
3 |
必选 配置设备和RADIUS服务器之间进行信息交互所需的一些参数 |
在导航栏中选择“认证 > RADIUS”,默认进入“RADIUS服务器配置”页签的页面,如图1-5所示。
图1-5 RADIUS服务器配置
RADIUS服务器的详细配置如表1-4所示。
表1-4 RADIUS服务器的详细配置
配置项 |
说明 |
服务类型 |
设置要配置的RADIUS服务器的类型,包括:认证服务器、计费服务器 |
主服务器IP地址 |
设置主服务器的IP地址 未配置该主服务器时,文本框的值显示0.0.0.0 并且文本框为0.0.0.0时,表示删除配置的主服务器 主服务器与备份服务器的IP地址不能相同,否则将提示错误 |
主UDP端口 |
设置主服务器的UDP端口号 当未配置主服务器IP地址或者删除主服务器IP地址时,认证服务器端口号为1812,计费服务器端口号为1813 |
主服务器状态 |
设置主服务器的状态: l active:处于正常工作状态 l block:处于宕机状态 当未配置主服务器IP地址或者删除主服务器IP地址时,状态为block |
备份服务器IP地址 |
设置备份服务器的IP地址 未配置该备份服务器时,文本框的值显示0.0.0.0 并且文本框为0.0.0.0时,表示删除配置的备份服务器 主服务器与备份服务器不能相同,否则将提示错误 |
备份UDP端口 |
设置备份服务器的UDP端口号 当未配置备份服务器IP地址或者删除备份服务器IP地址时,认证服务器端口号为1812,计费服务器端口号为1813 |
备份服务器状态 |
设置备份服务器的状态: l active:处于正常工作状态 l block:处于宕机状态 当未配置备份服务器IP地址或者删除备份服务器IP地址时,状态为block |
可点击返回“表1-3 RADIUS配置步骤”。
在导航栏中选择“认证 > RADIUS”,单击“RADIUS参数设置”页签,进入如图1-6所示的页面。
图1-6 RADIUS参数设置
RADIUS参数的详细设置如表1-5所示。
表1-5 设置RADIUS参数详细信息
配置项 |
说明 |
服务类型 |
设置设备支持的RADIUS服务器类型: l extended:指定extended的RADIUS服务器(一般为iMC),即要求RADIUS客户端和RADIUS服务器按照私有RADIUS协议的规程和报文格式进行交互 l standard:指定Standard类型的RADIUS服务器,即要求RADIUS客户端和RADIUS服务器按照标准RADIUS协议(RFC 2138/2139或更新)的规程和报文格式进行交互 |
认证服务器共享密钥 |
设置认证服务器的共享密钥和确认密钥,确认密钥必须与共享密钥保持一致 |
确认认证密钥 |
|
计费服务器共享密钥 |
设置计费服务器的共享密钥和确认密钥,确认密钥必须与共享密钥保持一致 |
确认计费密钥 |
|
NAS-IP |
设备向RADIUS服务器发送RADIUS报文时使用的源IP地址 为了避免物理接口故障时从服务器返回的报文不可达,推荐使用Loopback接口地址 |
超时时间 |
设置RADIUS服务器应答超时时间 |
超时重发次数 |
设置最大传送次数 超时时间和超时重发次数的乘积不能超过75 |
实时计费间隔 |
设置实时计费的时间间隔,取值必须为3的整数倍 为了对用户实施实时计费,有必要设置实时计费的时间间隔。设置了该属性以后,每隔设定的时间,设备会向RADIUS服务器发送一次在线用户的计费信息 实时计费间隔的取值对NAS和RADIUS服务器的性能有一定的相关性要求,取值越小,对NAS和RADIUS服务器的性能要求越高。建议当用户量比较大(≥1000)时,尽量把该间隔的值设置得大一些。实时计费间隔与用户量之间的推荐比例关系如表1-6所示 |
实时计费报文重发次数 |
设置允许实时计费请求无响应的最大次数 |
停止计费缓存 |
设置允许/禁止在设备上缓存没有得到响应的停止计费请求报文 l enable:表示允许缓存报文 l disable:表示禁止该功能 |
停止计费报文重发次数 |
设置当出现没有得到响应的停止计费请求时,将该报文存入设备缓存后,允许停止计费请求无响应的最大次数 |
Quiet时间间隔 |
设置RADIUS服务器恢复激活状态的时间 |
用户名格式 |
设置发送给RADIUS服务器的用户名格式 接入用户通常以“userid@isp-name”的格式命名,“@”后面的部分为域名,如果RADIUS服务器不接受带域名的用户名时,可以配置将用户名的域名去除后再传送给RADIUS服务器 l without-domain:表示发送给RADIUS服务器的用户名不带域名 l with-domain:表示发送给RADIUS服务器的用户名带域名 |
流量数据的单位 |
设置发送到RADIUS服务器的流量数据的单位 l byte:表示流量数据的单位为字节 l kilo-byte:表示流量数据的单位为千字节 l mega-byte:表示流量数据的单位为兆字节 l giga-byte:表示流量数据的单位为千兆字节 |
数据包的单位 |
设置发送到RADIUS服务器的数据包的单位 l one-packet:表示数据包的单位为包 l kilo-packet:表示数据包的单位为千包 l mega-packet:表示数据包的单位为兆包 l giga-packet:表示数据包的单位为千兆包 |
安全策略服务器 |
设置RADIUS安全策略服务器的IP地址 |
用户数 |
实时计费间隔(分钟) |
1~99 |
3 |
100~499 |
6 |
500~999 |
12 |
≥1000 |
≥15 |
可点击返回“表1-3 RADIUS配置步骤”。
如图1-7所示,配置Switch实现RADIUS服务器对登录设备的Telnet用户进行认证、计费(Telnet用户在线时长统计)。
RADIUS服务器使用iMC服务器。在RADIUS服务器上已经添加了Telnet用户的用户名和密码,同时设置了与Switch交互报文时的共享密钥为“expert”。
根据以上情况,只需设置Switch与IP地址为10.110.91.146的RADIUS服务器(其担当认证、计费服务器的职责,采用缺省端口进行认证和计费)进行报文交互时的共享密钥为“expert”。同时可以设置Switch向RADIUS服务器发送用户名时不带域名。
图1-7 RADIUS服务器配置组网图
开启Telnet服务器功能,并配置Telnet用户登录采用AAA认证方式。具体配置略。
(1) 配置各接口IP地址(略)
(2) 配置RADIUS方案system
# 配置RADIUS认证服务器。
l 在导航栏中选择“认证 > RADIUS”,默认进入“RADIUS服务器配置”页签的页面,进行如下配置,如图1-8所示。
图1-8 配置RADIUS认证服务器
l 选择服务类型为“认证服务器”。
l 输入主服务器IP地址为“10.110.91.146”。
l 输入主UDP端口为“1812”。
l 选择主服务器状态为“active”。
l 单击<确定>按钮完成操作。
# 配置RADIUS计费服务器。
图1-9 配置RADIUS计费服务器
l 如图1-9所示,选择服务类型为“计费服务器”。
l 输入主服务器IP地址为“10.110.91.146”。
l 输入主UDP端口为“1813”。
l 选择主服务器状态为“active”。
l 单击<确定>按钮完成操作
# 配置设备与RADIUS服务器交互的方案。
l 单击“RADIUS参数设置”页签,进行如下配置,如图1-10所示。
图1-10 配置设备与RADIUS服务器交互的方案
l 选择服务器类型为“extended”。
l 选中“认证服务器共享密钥”前的复选框,输入认证密钥为“expert”。
l 输入确认认证密钥为“expert”。
l 选中“计费服务器共享密钥”前的复选框,输入计费密钥为“expert”。
l 输入确认计费密钥为“expert”。
l 选择用户名格式为“without-domain”。
l 单击<确定>按钮完成操作。
# 创建ISP域。
l 在导航栏中选择“认证 > AAA”,默认进入“域设置”页签的页面,进行如下配置,如图1-11所示。
l 输入域名为“test”。
l 选择缺省域为“Enable”。
l 单击<应用>按钮完成操作。
# 配置ISP域的AAA认证方案。
l 单击“认证”页签,进行如下配置,如图1-12所示。
图1-12 配置ISP域的AAA认证方案
l 选择域名为“test”。
l 选中“Default认证”前的复选框,选择认证方式为“RADIUS”。
l 选择认证方案名称为“system”。
l 单击<应用>按钮,弹出配置进度对话框,如图1-13所示。
l 看到配置成功的提示后,在对话框中单击<关闭>按钮完成操作。
# 配置ISP域的AAA授权方案。
l 单击“授权”页签,进行如下配置,如图1-14所示。
图1-14 配置ISP域的AAA授权方案
l 选择域名为“test”。
l 选中“Default授权”前的复选框,选择授权方式为“RADIUS”。
l 选择授权方案名称为“system”。
l 单击<应用>按钮,弹出配置进度对话框。
l 看到配置成功的提示后,在对话框中单击<关闭>按钮完成操作。
# 配置ISP域的AAA计费方案,并配置用户计费可选。
l 单击“计费”页签,进行如下配置,如图1-15所示。
图1-15 配置ISP域的AAA计费方案
l 选择域名为“test”。
l 选中“计费可选开关”前的复选框,选择“Enable”。
l 选中“Default计费”前的复选框,选择计费方式为“RADIUS”。
l 选择计费方案名称为“system”。
l 单击<应用>按钮,弹出配置进度对话框。
l 看到配置成功的提示后,在对话框中单击<关闭>按钮完成操作。
配置RADIUS客户端时需要注意如下事项:
(1) 设置的服务器状态属于动态信息,不能被保存在配置文件中。设备重启后,服务器状态恢复为active。
(2) 目前RADIUS不支持对FTP用户进行计费。
(3) 如果在线用户正在使用的计费服务器被删除,则设备将无法发送用户的实时计费请求和停止计费请求,且停止计费报文不会被缓存到本地。
(4) 对于某个RADIUS方案中的主、备份服务器(假设只有一个备份服务器),当主服务器与设备的通信中断时,设备会主动地转而与备份服务器交互报文。
l 在主/备份服务器状态相同的条件下,设备遵从主服务器优先的原则发送请求报文。
l 当主/备份服务器状态均为active时,设备首先与主服务器通信,若主服务器不可达,则状态变为block,设备转而与备份服务器交互。在指定的Quiet时间间隔到达后主服务器状态恢复为active,备份服务器状态不变,设备与主服务器进行通信。后续报文交互时设备仍然遵从以上规则进行主备服务器的切换。而计费开始后,客户端与备份计费服务器之间的通信不会因为主计费服务器的恢复而切换。
l 在一个服务器状态为active、另外一个服务器状态为block的情况下,设备仅与状态为active的服务器通信,即使该服务器不可达,设备也不会尝试与另外一个服务器通信。
l 当主/备份服务器的状态都被指定为block时,设备仅与主服务器通信,若主服务器可达,则状态变为active。若主/备份服务器状态都为block时,希望使用备份服务器进行认证,必须将备份服务器的状态手工配置为active,否则不会进行主备服务器的切换。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!