分类:
2011-01-22 20:04:14
RADIUS(Remote Authentication Dial-In User Service)远程用户拨号认证服务
RADIUS 是一种广泛应用的协议,允许商业机构对访问中央网络服务器上系列服务的远程用户进行认证、授权、计费。协议中提供了完整而详细的基础指导条目。
RADIUS最初由Livingston Enterprises开发,基于常用的挑战/响应(challenge/response)机制以对用户进行认证。在AAA(Authentication, Authorization, and Accounting)模型开发之前就创建出来了,已经赢得了业界的普遍认同和使用。
AAA模型主要解决这三个问题:
你是谁?
你可以享受什么服务?
你在享受服务的同时需要做点什么?
在AAA模型提出来之前,利用独立的设备来进行用户认证,没有正式的标准,每个机器都有自己不同的认证方式,当把这样一大堆设备集中到一起时管理就成了一个噩梦。AAA模型大大增加了系统的扩充能力。
Authentication 验证一个人或一台机器的身份的过程;
Authorization 使用一系列的规则来限制用户在系统中的行为;
Accounting 度量并记录用户在访问期间使用过的资源,可能包括时间、流量等,数据可以用于计费、趋势预测、资源利用率分析等活动。
AAA模型依赖于C/S交互,客户端向服务器请求服务或资源,一般来说角色都比较固定,客户端不作当作服务器,反之亦然。C/S结构能够在要求高可用性和快速响应的环境下提供良好的负载平衡能力。服务器也可以当作一个代理,把请求转发到另外一台服务器上去,对于大型企业的分布式网络来说这是个非常实用的功能。
终端用户、AAA服务器和网络设备交互时存在三种不同的次序:
The agent sequence
AAA服务器在终端用户和服务设备之间承担中间人。
The pull sequence
终端用户直接连到服务设备,由服务设备向AAA服务器发送请求。
The push sequence
终端用户先从AAA服务器获取一个票据,再向服务设备请求服务。
当服务设备属于不同组织时可以进行漫游认证。
基于UDP
使用hop-by-hop的安全模型
无状态
支持PAP、CHAP认证
使用MD5作密码隐藏
支持AAA模型
局限性:
某些实现下的安全性,代理模式时数据在每个hop上都是可见的
不支持授权发布后资源的回调处理或重新分配
无状态,不能保持配置参数、事务信息等
大规模系统中性能问题,没有拥塞控制
有几个与生俱来的特性跟UDP一样:
RADIUS要求重发失败的请求;
用户没有耐心来等待几分钟的响应;
无状态
使用UDP包在客户端和服务器之间传输数据,使用端口1812进行通信,最初是使用1645,发现冲突后RFC作了修改。
包的格式:
Code:一个字节长,表示消息类型,包含不合法的Code的包将被直接丢弃。
Identifier:一个字节长,标识符,用于自动关联请求与响应。
Length:两个字节长,说明数据包的长度,是code、identifier、length、authenticator、attribute fields的长度总和,有效范围是20~4096。
Authenticator:16字节长,用于验证消息的负载。
包括请求和响应两种类型:
请求中用于Authentication-Request、Accounting-Request中,随机产生。
响应中用于Access-Accept、Access-Reject、Access-Challenge中,算法如下:MD5(Code+ID+Length+RequestAuth+Attributes+Secret)
1 Access-Request
2 Access-Accept
3 Access-Reject
4 Accounting-Request
5 Accounting-Response
11 Access-Challenge
12 Status-Server (under continued development)
13 Status-Client (under continued development)
255 Reserved
为加强安全性和数据一致性,使用共享密钥,就是指客户端和服务器双方都知道的一个值。
使用传输参数
Attribute Number:属性编号,只传输数字
Attribute Length:属性长度,一定要大于等于3
Value:属性的值,必须包含,即使为空,可以为下列类型:
Integer (INT) 整形
Enumerated (ENUM) 枚举
IP Address (IPADDR) IP地址
Character String (STRING) 字符串
Date (DATE) 日期
Binary (BINARY) 二进制
属性可以由设备厂商进行自定义,格式如下:
在属性值中包含几个字段:
Vendor ID
Vendor type
Length
Value
支持下列认证方式:
PAP 使用用户名和密码
CHAP 使用挑战/响应机制
EAP 可扩展的认证框架
其他 目录服务(LDAP、Windows AD、Novell eD)Unix PAM
发送一个包含用户名、密码和认证方式的Access-Request数据包到认证服务器,服务器处理后返回结果数据包。
相关包类型
Access-Request
Access-Accept
Access-Reject
Access-Challenge
挑战响应机制过程:
计费设计基于三个主要特性
C/S架构
设备间通信安全
可扩展
计费过程
主要是发送Accounting-Request数据包,开始包含Accounting Start信息,还有用户名、服务等,当客户端结束服务后发送一个Accounting Stop的Accounting-Request数据包。
相关包类型
Accounting-Request
Accounting-Response
相关属性:
Acct-Status-Type
Acct-Delay-Time
Acct-Input-Octets
Acct-Output-Octets
Acct-Session-ID
Acct-Authentic
Acct-Session-Time
Acct-Input-Packets
Acct-Output-Packets
Acct-Terminate-Cause
结束原因表
Value
Termination cause
1User Request
2Lost Carrier
3Lost Service
4Idle Timeout
5Session Timeout
6Admin Reset
7Admin Reboot
8Port Error
9NAS Error
10NAS Request
11NAS Reboot
12Port Unneeded
13Port Preempted
14Port Suspended
15Service Unavailable
16Callback
17User Error
18Host Request