Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1299042
  • 博文数量: 436
  • 博客积分: 7854
  • 博客等级: 少将
  • 技术积分: 3225
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-18 16:30
文章分类

全部博文(436)

文章存档

2013年(2)

2012年(56)

2011年(70)

2010年(308)

分类:

2011-01-22 20:04:14

1 简介

RADIUS(Remote Authentication Dial-In User Service)远程用户拨号认证服务

RADIUS 是一种广泛应用的协议,允许商业机构对访问中央网络服务器上系列服务的远程用户进行认证、授权、计费。协议中提供了完整而详细的基础指导条目。

1.1 AAA

RADIUS最初由Livingston Enterprises开发,基于常用的挑战/响应(challenge/response)机制以对用户进行认证。在AAA(Authentication, Authorization, and Accounting)模型开发之前就创建出来了,已经赢得了业界的普遍认同和使用。

AAA模型主要解决这三个问题:

 你是谁?

 你可以享受什么服务?

 你在享受服务的同时需要做点什么?

在AAA模型提出来之前,利用独立的设备来进行用户认证,没有正式的标准,每个机器都有自己不同的认证方式,当把这样一大堆设备集中到一起时管理就成了一个噩梦。AAA模型大大增加了系统的扩充能力。

Authentication 验证一个人或一台机器的身份的过程;

Authorization 使用一系列的规则来限制用户在系统中的行为;

Accounting 度量并记录用户在访问期间使用过的资源,可能包括时间、流量等,数据可以用于计费、趋势预测、资源利用率分析等活动。

AAA模型依赖于C/S交互,客户端向服务器请求服务或资源,一般来说角色都比较固定,客户端不作当作服务器,反之亦然。C/S结构能够在要求高可用性和快速响应的环境下提供良好的负载平衡能力。服务器也可以当作一个代理,把请求转发到另外一台服务器上去,对于大型企业的分布式网络来说这是个非常实用的功能。

arch

终端用户、AAA服务器和网络设备交互时存在三种不同的次序:

The agent sequence

AAA服务器在终端用户和服务设备之间承担中间人。

agent

The pull sequence

终端用户直接连到服务设备,由服务设备向AAA服务器发送请求。

pull

The push sequence

终端用户先从AAA服务器获取一个票据,再向服务设备请求服务。

push

当服务设备属于不同组织时可以进行漫游认证。

1.2 RADIUS特征

 基于UDP

 使用hop-by-hop的安全模型

 无状态

 支持PAP、CHAP认证

 使用MD5作密码隐藏

 支持AAA模型

局限性:

 某些实现下的安全性,代理模式时数据在每个hop上都是可见的

 不支持授权发布后资源的回调处理或重新分配

 无状态,不能保持配置参数、事务信息等

 大规模系统中性能问题,没有拥塞控制

2 标准

2.1 采用UDP协议

有几个与生俱来的特性跟UDP一样:

RADIUS要求重发失败的请求;

用户没有耐心来等待几分钟的响应;

无状态

2.2 包的格式

使用UDP包在客户端和服务器之间传输数据,使用端口1812进行通信,最初是使用1645,发现冲突后RFC作了修改。

包的格式:

packet

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)

2.3 包的类型

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

2.4 共享密钥

为加强安全性和数据一致性,使用共享密钥,就是指客户端和服务器双方都知道的一个值。

2.5 属性和值

使用传输参数

Attribute Number:属性编号,只传输数字

Attribute Length属性长度,一定要大于等于3

Value属性的值,必须包含,即使为空,可以为下列类型:

Integer (INT) 整形

Enumerated (ENUM) 枚举

IP Address (IPADDR) IP地址

Character String (STRING) 字符串

Date (DATE) 日期

Binary (BINARY) 二进制

attribute


属性可以由设备厂商进行自定义,格式如下:

vendor

在属性值中包含几个字段:

Vendor ID

Vendor type

Length

Value

2.6 认证方式

支持下列认证方式:

PAP 使用用户名和密码

CHAP 使用挑战/响应机制

EAP 可扩展的认证框架

其他 目录服务(LDAP、Windows AD、Novell eD)Unix PAM

3 认证、授权

发送一个包含用户名、密码和认证方式的Access-Request数据包到认证服务器,服务器处理后返回结果数据包。

相关包类型

Access-Request

Access-Accept

Access-Reject

Access-Challenge

挑战响应机制过程:

chap

4 计费

计费设计基于三个主要特性

   C/S架构

   设备间通信安全

   可扩展

计费过程

主要是发送Accounting-Request数据包,开始包含Accounting Start信息,还有用户名、服务等,当客户端结束服务后发送一个Accounting Stop的Accounting-Request数据包。

accounting

相关包类型

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

阅读(772) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~