RADIUS


远端用户拨入验证服务(RADIUS, Remote Authentication Dial In User Service)是一个AAA协议,也称远程用户拨号认证系统,意思就是同时兼顾验证(authentication)、授权(authorization)及计费(accounting)三种服务的一种网络传输协议(protocol),通常用于网络存取、或流动IP服务,适用于局域网及漫游服务。它由Livingston Enterprises公司在1991年首先开发。开发的初衷是满足验证和记账需要的一个通讯协议,后来Internet工程任务组(IETF)将其定为标准。ISP(信息服务提供商)和企业鉴于该协议有着广泛的支持以及具备可以同时管理Internet、内部网络、无线网络和集成邮件服务的特性纷纷采用。这些网络可能需要与调制解调器、数字用户环路(DSL)、无线接入点、VPN、网络端口、web服务器等等配合使用。
RADIUS服务器功能
通常RADIOUS服务器作为UNIX守护进程或是微软Windows的系统服务在后台运行,RADIUS服务通常有3个称作AAA的功能(这也就是为什么RADIUS服务器通常也被叫做AAA服务器):
1. 认证:验证用户或设备的身份与可使用的网络服务
2. 授权:依据认证结果开放网络服务给用户或设备,也可作为后续验证的前提条件
3. 记账:记录用户对各种网络服务的用量,并提供给计费系统
客户端-服务器结构
RADIUS协议是一种基于主从式架构的协议。RADIUS 协议中的客户端是对用户(人或者计算机)提供网络连接服务的器材,对服务器提出验证和计费要求。服务器针对客户端的通过进行验证和计费给予应答。服务器只有针对客户端的请求进行应答,而无法反方向地对用户进行服务停止等的请求。
协议的原理
客户端对服务器提出“RADIUS 请求包”,服务器对客户端发送“RADIUS 应答包”。双方通信均由 IP 的UDP包进行。
双方的数据包,头部分由20个 8位元和“属性”组成。头部分包括类别码(Code)1个8位元、识别码(Identifier)1个8位元、数据包整体长度2个8位元、验证码(Authenticator)16个8位元。识别码根据客户端决定的需求而设定,服务器直接照抄到应答包里,因为客户端需要在收到的应答包与过去曾接收到的请求包对照。实际客户端一般只是进行累计数值编号,但没有规定必须是序列号。验证码是为了证明无发送者伪装和篡改。属性部分是将属性値对 (Attribute Value Pair)任意次重复。属性値对由属性编号1个8位元、长度1个8位元、属性値组成。对于値可以赋予4个8位元的整数値、4个8位元的IP地址、1 - 253个8位元的文字串等等。
对于每个属性编号,每个属性値对里值的含义在RFC文件里均有规定,还可以通过给属性编号赋予新的定义来增加使用目的,RADIUS 协议的灵活性所在也是其最大的特征。但是一般不推荐各个机器产商为各自目的独自给属性标号赋值。产商特有功能应做为属性编号 26 号 (Vendor Specific)的值与产商编号一起加到数据里。属性编号 26 号的属性値对一般称为 VSA (Vendor Specific Attribute) 。厂家编号由IANA进行管理和赋予。
协议通过属性値对里含有各种个样信息进行验证和计费。为实现验证,用户名和密码各有属性编号。拨号上网使用PPP时针对 PPP 用的验证协议 PAP、CHAP、EAP均备有各自的属性编号。为实现计费,备有使用秒数、收发数据量等的属性编号。由此根据属性编号可以判断、验证和计费两功能是只有一种才能使用还是二者可同时使用。
RADIUS分组的最大长度,在RADIUS验证协议中是4096个8位元、RADIUS计费协议中是 4095 个 8 位元,这个差异据说并没有特殊含义,而是 RFC 当初的错字将错就错地沿用下来的缘故。
工作原理
RADIUS是一个工作在应用层的客户端/服务器协议,采用UDP协议传输。在通信行业,远程访问服务器(Remote Access Server RAS)、虚拟专用网络(Virtual Private Network VPN)服务器、基于端口验证的网络交换机和网络接入服务器(NAS)都是控制网络接入的网关,它们都有一个RADIUS客户端模块可以和RADIUS服务器通信。起初,RADIUS协议采用1645和1646端口分别用作认证和记账,RADIUS服务器上运行的授权子进程不需要通讯端口。后来Internet号码分配机构(Internet Assigned NumbersAuthority IANA)为RADIUS协议分配了1812和1813端口,成为了现在RADIUS服务器的默认端口。
相关的 RFC 文件定义
RFC 2865 - RADIUS 验证协议
RFC 2866 - RADIUS 计费协议
RFC 2867 - 为通道协议的 RADIUS 计费拓展
RFC 2868 - 通道协议中使用的 RADIUS 属性
RFC 2869 - RADIUS 协议拓展
RFC 3162 - IPv6网络中 RADIUS 协议的使用
RFC 3579 - RADIUS 协议中 EAP (RFC 2284) 的使用
RFC 3580 - IEEE 802.1X 中 RADIUS 协议的使用指南
Linux下的RADIUS服务器
FreeRADIUS是一个模块化、高性能的免费RADIUS套件,遵循GNU通用许可协议开发和发布。FreeRADIUS套件包含了一个 RADIUS服务器,一个遵循BSD协议的RADIUS客户端函数库,一个PAM函数库,一个Apache模块以及众多的RADIUS相关工具和开发函数 库。
FreeRADIUS是目前最受欢迎的开源RADIUS服务器并且在世界上被广泛部署。它是许多商业RADIUS产品和服务的基础,像是嵌入式系 统,提供网络访问控制的RADIUS工具以及WiMAX。它满足了很多财富500强公司、电信公司网络信息服务提供商的AAA需求,
正如之前提到的,FreeRADIUS是模块化的,服务器核心模块包支持LDAP、MySQL、PostgreSQL、 Oracle和许多其他数据库。它支持所有流行的EAP验证类型,包括PEAP(受保护的EAP)和EAP-TTLS(隧道TLS身份验证协议)。它还包 含了超过100家厂家的数据字典,确保了对NAS设备的广泛支持。
注:EAP(Extended Authentication Protocol 扩展协议认证):对ppp 协议中chap认证的扩展,比chap更有灵活性和更高的安全性,支持MD5、智能卡、可读卡等。
RADIUS协议的特点
1. Client/Server模式
RADIUS协议是C/S结构协议,客户端是把用户信息传递给RADIUS服务器,并负责执行返回的响应。 RADIUS服务器负责接受用户的请求,对用户身份进行认证,并为客户端返回所有为用户提供服务所必须的配置信息。RADIUS服务器可以为其他的RADIUS Server担当代理。
2. 网络安全
客户端和RADIUS服务器之间的交互经过共享密钥认证,另外避免有人在网络上监听获取用户密码,客户端和服务器之前的任何的通信都是经过加密后传输的。
3. 认证机制
RADIUS服务器可以采用多种认证方式鉴别用户的合法性,当用户提供了用户名密码后,RADIUS服务器可以支持点对点的PAP认证(PPP PAP),点对点的CHAP认证(PPP CHAP),UNIX的登陆操作(UNIX Login)和其他认证机制。
RADIUS的工作过程
1. 用户输入用户名密码等信息到客户端
2. 客户端产生一个接入请求报文到RADIUS服务器,其中包含了用户名,密码,客户端ID和用户访问端口的ID,密码都是经过MD5加密的
3. RADIUS服务器对用户进行认证
4. 如果认证成功,RADIUS服务器想客户端发送允许接入包,否则就发送拒绝接入包
5. 若客户端接受到允许接入包,则为用户建立连接,对用户进行授权和提供服务;若接受到拒绝接入包,则拒绝用户接入请求
6. 客户端发送计费请求给RADIUS服务器
7. RADIUS服务器接受到计费请求包后开始计费,并向客户端回送开始计费的响应包
8. 用户断开连接,客户端发送停止计费包给RADIUS服务器
9. RADIUS服务器接收到停止计费包后停止计费,并向客户端发送停止计费响应包,完成该用户的一次计费,记录计费信息
RADIUS服务器功能
通常RADIOUS服务器作为UNIX守护进程或是微软Windows的系统服务在后台运行,RADIUS服务通常有3个称作AAA的功能(这也就是为什么RADIUS服务器通常也被叫做AAA服务器):
1. 认证:验证用户或设备的身份与可使用的网络服务
2. 授权:依据认证结果开放网络服务给用户或设备,也可作为后续验证的前提条件
3. 记账:记录用户对各种网络服务的用量,并提供给计费系统
客户端-服务器结构
RADIUS协议是一种基于主从式架构的协议。RADIUS 协议中的客户端是对用户(人或者计算机)提供网络连接服务的器材,对服务器提出验证和计费要求。服务器针对客户端的通过进行验证和计费给予应答。服务器只有针对客户端的请求进行应答,而无法反方向地对用户进行服务停止等的请求。
协议的原理
客户端对服务器提出“RADIUS 请求包”,服务器对客户端发送“RADIUS 应答包”。双方通信均由 IP 的UDP包进行。
双方的数据包,头部分由20个 8位元和“属性”组成。头部分包括类别码(Code)1个8位元、识别码(Identifier)1个8位元、数据包整体长度2个8位元、验证码(Authenticator)16个8位元。识别码根据客户端决定的需求而设定,服务器直接照抄到应答包里,因为客户端需要在收到的应答包与过去曾接收到的请求包对照。实际客户端一般只是进行累计数值编号,但没有规定必须是序列号。验证码是为了证明无发送者伪装和篡改。属性部分是将属性値对 (Attribute Value Pair)任意次重复。属性値对由属性编号1个8位元、长度1个8位元、属性値组成。对于値可以赋予4个8位元的整数値、4个8位元的IP地址、1 - 253个8位元的文字串等等。
对于每个属性编号,每个属性値对里值的含义在RFC文件里均有规定,还可以通过给属性编号赋予新的定义来增加使用目的,RADIUS 协议的灵活性所在也是其最大的特征。但是一般不推荐各个机器产商为各自目的独自给属性标号赋值。产商特有功能应做为属性编号 26 号 (Vendor Specific)的值与产商编号一起加到数据里。属性编号 26 号的属性値对一般称为 VSA (Vendor Specific Attribute) 。厂家编号由IANA进行管理和赋予。
协议通过属性値对里含有各种个样信息进行验证和计费。为实现验证,用户名和密码各有属性编号。拨号上网使用PPP时针对 PPP 用的验证协议 PAP、CHAP、EAP均备有各自的属性编号。为实现计费,备有使用秒数、收发数据量等的属性编号。由此根据属性编号可以判断、验证和计费两功能是只有一种才能使用还是二者可同时使用。
RADIUS分组的最大长度,在RADIUS验证协议中是4096个8位元、RADIUS计费协议中是 4095 个 8 位元,这个差异据说并没有特殊含义,而是 RFC 当初的错字将错就错地沿用下来的缘故。
工作原理
RADIUS是一个工作在应用层的客户端/服务器协议,采用UDP协议传输。在通信行业,远程访问服务器(Remote Access Server RAS)、虚拟专用网络(Virtual Private Network VPN)服务器、基于端口验证的网络交换机和网络接入服务器(NAS)都是控制网络接入的网关,它们都有一个RADIUS客户端模块可以和RADIUS服务器通信。起初,RADIUS协议采用1645和1646端口分别用作认证和记账,RADIUS服务器上运行的授权子进程不需要通讯端口。后来Internet号码分配机构(Internet Assigned NumbersAuthority IANA)为RADIUS协议分配了1812和1813端口,成为了现在RADIUS服务器的默认端口。
相关的 RFC 文件定义
RFC 2865 - RADIUS 验证协议
RFC 2866 - RADIUS 计费协议
RFC 2867 - 为通道协议的 RADIUS 计费拓展
RFC 2868 - 通道协议中使用的 RADIUS 属性
RFC 2869 - RADIUS 协议拓展
RFC 3162 - IPv6网络中 RADIUS 协议的使用
RFC 3579 - RADIUS 协议中 EAP (RFC 2284) 的使用
RFC 3580 - IEEE 802.1X 中 RADIUS 协议的使用指南
Linux下的RADIUS服务器
FreeRADIUS是一个模块化、高性能的免费RADIUS套件,遵循GNU通用许可协议开发和发布。FreeRADIUS套件包含了一个 RADIUS服务器,一个遵循BSD协议的RADIUS客户端函数库,一个PAM函数库,一个Apache模块以及众多的RADIUS相关工具和开发函数 库。
FreeRADIUS是目前最受欢迎的开源RADIUS服务器并且在世界上被广泛部署。它是许多商业RADIUS产品和服务的基础,像是嵌入式系 统,提供网络访问控制的RADIUS工具以及WiMAX。它满足了很多财富500强公司、电信公司网络信息服务提供商的AAA需求,
正如之前提到的,FreeRADIUS是模块化的,服务器核心模块包支持LDAP、MySQL、PostgreSQL、 Oracle和许多其他数据库。它支持所有流行的EAP验证类型,包括PEAP(受保护的EAP)和EAP-TTLS(隧道TLS身份验证协议)。它还包 含了超过100家厂家的数据字典,确保了对NAS设备的广泛支持。
注:EAP(Extended Authentication Protocol 扩展协议认证):对ppp 协议中chap认证的扩展,比chap更有灵活性和更高的安全性,支持MD5、智能卡、可读卡等。
RADIUS协议的特点
1. Client/Server模式
RADIUS协议是C/S结构协议,客户端是把用户信息传递给RADIUS服务器,并负责执行返回的响应。 RADIUS服务器负责接受用户的请求,对用户身份进行认证,并为客户端返回所有为用户提供服务所必须的配置信息。RADIUS服务器可以为其他的RADIUS Server担当代理。
2. 网络安全
客户端和RADIUS服务器之间的交互经过共享密钥认证,另外避免有人在网络上监听获取用户密码,客户端和服务器之前的任何的通信都是经过加密后传输的。
3. 认证机制
RADIUS服务器可以采用多种认证方式鉴别用户的合法性,当用户提供了用户名密码后,RADIUS服务器可以支持点对点的PAP认证(PPP PAP),点对点的CHAP认证(PPP CHAP),UNIX的登陆操作(UNIX Login)和其他认证机制。
RADIUS的工作过程
1. 用户输入用户名密码等信息到客户端
2. 客户端产生一个接入请求报文到RADIUS服务器,其中包含了用户名,密码,客户端ID和用户访问端口的ID,密码都是经过MD5加密的
3. RADIUS服务器对用户进行认证
4. 如果认证成功,RADIUS服务器想客户端发送允许接入包,否则就发送拒绝接入包
5. 若客户端接受到允许接入包,则为用户建立连接,对用户进行授权和提供服务;若接受到拒绝接入包,则拒绝用户接入请求
6. 客户端发送计费请求给RADIUS服务器
7. RADIUS服务器接受到计费请求包后开始计费,并向客户端回送开始计费的响应包
8. 用户断开连接,客户端发送停止计费包给RADIUS服务器
9. RADIUS服务器接收到停止计费包后停止计费,并向客户端发送停止计费响应包,完成该用户的一次计费,记录计费信息