搜档网
当前位置:搜档网 › RADIUS认证

RADIUS认证

RADIUS认证
RADIUS认证

RADIUS (概述认证:Authentication) 1. 介绍

RADIUS(Remote Authentication Dial In User Service)定义了如何装载位于网络接入服务器(NAS)与RADIUS认证服务器(RAS&RADIUS Server&3A Server)之间用于认证,授权和配置的信息.其中RADIUS Server对NAS链接作出认证.

RADIUS通过管理用户数据库(包括安全,授权和计费),管理和为用户提供业务(如PPP,SLIP,telnet,rlogin)的详细配置信息来完成如下三方面工作:

1)认证(Authentication):

2)授权(Authorzation):

3)计费(Accounting):

RADIUS特性包括:

1).C/S模型

Client: 网络接入服务器(NAS)

向RADIUS Server 传递用户信息,对应答作出响应.

Server: RADIUS Server

接收用户连接请求,认证用户,向NAS返回所有配置信息(用于NAS向user发送业务).RADIUS Server 可作为代理Client.

2).网络安全

NAS 与RADIUS Server共享secret(不在网络上传送);用户口令在NAS,RADIUS Seerver 间加密.

3).灵活的认证体系

RADIUS提供多种用户认证方法,包括:

通常的username+password

PPP PAP&CHAP

UNIX login

其它认证方法.

4).可扩展协议

RADIUS处理的所有事务包括在Attribute-Length-Value 3元组中.添加新属性不影响原有协议的执行.

2. RADIUS数据包格式

2.1. UDP数据包格式

0 7 8 15 16 23 24 31

+--------+--------+--------+--------+

| Source | Destination |

| Port | Port |

+--------+--------+--------+--------+

| | |

| Length | Checksum |

+--------+--------+--------+--------+

|

| data octets ...

+---------------- ...

2.2. RADIUS数据包格式描述

RADIUS数据包封装在UDP数据域中,要求UDP目的端口号为1812

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 ...

+-+-+-+-+-+-+-+-+-+-+-+-+-

Code

1 Access-Request

2 Access-Accept

3 Access-Reject

4 Accounting-Request

5 Accounting-Response

11 Access-Challenge

12 Status-Server (experimental)

13 Status-Client (experimental)

255 Reserved

Identifier

一字节,用于标记请求与回应数据包的匹配

Length

两字节,用于说明数据包(Code+Identifier+Length+Authenticator+ Attribute)总长度.实际长度小于说明长度的数据包将被丢弃;两字节长度不够,在后面填充.20 <=

Length <= 2^12.因此,还可填充至多2^4个字节的长度.

Authenticator

十六字节,用于认证来自RADIUS server的回答.

Request Authenticator

(在Acccess-Request, Accounting-Request中的Authenticator叫做Request Authenticator)

十六字节随机数,必须满足唯一性避免攻击者中途应答;满足随机性避免攻击者伪装成目标服务器.RADIUS不能避免实时主动窃听.

Identifier值改变时, RequestAuth值需要重新生成.

Response Authenticator

(在Acccess-Accept, Access-Challenge,Access-Reply,

Accounting-Response中的Authenticator叫做Response Authenticator)

ResponseAuth = MD5(Code+ID+[Length]+RequestAuth+Attributes+secret)

secret为共享秘密, RADIUS Server 使用RADIUS 的UDP数据包中的源IP以便知道该选择哪个共享秘密.

Attributes

许多属性有多个实例,这种情况需要保留同类属性的不同顺序,不同类属性的顺序不必保留.

3. 数据包类型

数据包类型由Code域定义.以下就Access-Request, Access-Accept, Access-Reject, Access-Challenge四种类型的数据包进行说明.

3.1. Access-Request

该Access-Request发送到RADIUS Server以决定是否允许用户访问NAS,是否为用户提供特定的服务

RADIUS Server收到来自有效NAS的Access-Request必须想对方传送应答信息.

Access-Request=User-Name

+[NAS-IP-Address, NAS-Identifier]

+[ User-Password, CHAP-Password]

+(NAS-Port, NAS-Port-Type)

Code

1 for Access-Request.

Identifier

一旦Attributes改变,或收到有效的应答,Identifier必须改变.在重传中Identifier 不得改变.

Request Authenticator

Request Authenticator 值随Identifier改变而改变.

3.2. Access-Accept

该数据包由RADIUS server发送, 用于提供向用户发送服务所必须的配置信息.

Access-Accept的Identifier与Access-Request的Identifier相匹配,且Response Authenticator必须正确,Access-Accept才视为有效,否则将被丢弃

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 |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| |

| Response Authenticator |

| |

| |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Attributes ...

+-+-+-+-+-+-+-+-+-+-+-+-+-

3.3. Access-Reject

RADIUS Server收到的 Access-Request有任何 Attribute 不能接受, RADIUS Server必须发送Access-Reject(包括一个或多个Reply-Message属性实例).

3.4. Access-Challenge

RADIUS Server希望向用户提供Challenge以便得到Response RADIUS Server须发

送Access-Challenge (包括一个或多个Reply-Message属性实例,可以包括一个State属性) 收到的Access-Challenge中, Identifier须与Access-Request相应域匹配且Response Authenticator域正确,否则将被丢弃.

如果NAS不支持Challenge/Response机制, 将把Access-Challenge 视为Access-Reject.NAS 支持 Challenge/Response机制,收到有效的Access-Challenge 后将重

发新的Access-Request

*Access-Request = …

+*ID

+*Request Authenticator

+*User-Password = Response由用户提供且加密

+[State Attribute]

* 表示与原始Access-Request不同的值

如果NAS支持 PAP ,可以向拨入用户提供 Reply-Message以获得用户Response(包括*ID,*Request Authenticator,*User-Password)

4. 操作

使用RADIUS管理用户访问(进行用户认证和授权),NAS首先必须保证对用户是可访问的(包括对Framed Protocol用户在物理层的连接和对上层用户在网络层的连接准备)

NAS必须进行RADIUS配置.使用RADIUS进行认证的NAS须作如下配置:

接收并识别用户请求或RAS数据包类型

正确提取用户或RAS数据包信息

产生并填充随机数

管理共享secret(包括与CHAP用户的共享secret)

MD5调用

处理用户口令(包括普通用户口令,PAP口令,CHAP口令和Challenge口令)

校验RAS数据包的有效性(Response Authenticator属性提供)

校验RAS响应数据包的一致性

提供使用CHAP的Challenge

正确发送数据包

RAS也要进行相应认证配置,包括:

管理用户数据库(用户名,口令,NAS标记,共享secret)

接收并识别NAS数据包类型

正确提取NAS数据包信息

校验用户身份(包括普通用户口令,PAP口令,CHAP口令和Challenge口令)

产生Challenge

标记响应数据包的一致性

4.1. 操作流程

说明:

u:代表user

C: 代表Client (NAS)/ RADIUS

S: 代表RADIUS Server

user info←username+password+…

Access-Request←username+MD5(password)/Response+[Client ID+port ID+…] Challenge/Access-Challenge←random number

Access-Reject←service type(PPP,SLIP,Login User…)

+configuration info(IP addree,subnet,MTU,desired protocol)

4.2. Challenge/Response机制

在Challenge/Response认证中,用户得到的是一个随机数,要求对该随机数进行计算并返回结果,用户需要有相关应用程序和密钥.

Challenge值(在Access-Challenge中提供)为随机数或按适当基和步长产生的伪随机数(通常由外部机器产生). Access-Challenge中应包括Reply-Message属性用于向用户作出提示.

4.3. 与PAP,CHAP的共同工作

4.3.1. PPP认证和阶段分析

阶段示意图

1).外部事件表明物理层就绪, UP事件使LCP有限自动机进入建立链接阶段

2).交换Configure数据包,LCP进入OPENED状态,转向认证阶段(如果申请认证) NCP阶段或认证阶段收到认证请求(Configure-Request)将回到该阶段

3).认证阶段:包括LCP,认证协议,链接质量监视数据包

4).NCP阶段:NCP进入OPEN状态

5).链接终止阶段

a).PPP的封装格式:

+----------+-------------+---------+

| Protocol | Information | Padding |

| 8/16 bits| * | * |

+----------+-------------+---------+

Protocol域:

0***~3***:网络层协议的数据包

4***~7***:与NCPs无关的处理low volume traffic的协议数据包

8***~b***:与NCPs有关的数据包

c***~f***:与链路层协议(如LCP)有关的数据包

Information域:

PAP,CHAP数据包等

b).LCP格式:

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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data/Option ...

+-+-+-+-+

Code:

1 Configure-Request

2 Configure-Ack

3 Configure-Nak

4 Configure-Reject

5 Terminate-Request

6 Terminate-Ack

7 Code-Reject

8 Protocol-Reject

9 Echo-Request

10 Echo-Reply

11 Discard-Request

c) LCP选项格式:

0 1

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Type | Length | Data ...

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type:

0 RESERVED

1 Maximum-Receive-Unit

3 Authentication-Protocol

4 Quality-Protocol

5 Magic-Number

7 Protocol-Field-Compression

8 Address-and-Control-Field-Compression

d)认证选项格式:

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

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Type | Length | Authentication-Protocol |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Data ...

+-+-+-+-+

Type = 3

Length >= 4

Authentication-Protocol

c023 Password Authentication Protocol

c223 Challenge Handshake Authentication Protocol

4.3.2. PAP

PAP(Password Authentication Protocol)使用简单的2路握手办法为用户建立身份, 在链路建立基础上进行.

口令在传输中是透明的.PAP可以在允许用纯文本口令注册远程主机的情况中使用.

1).PAP数据包封装在PPP的Information域中

2).认证协议格式:

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 |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Data ...

+-+-+-+-+

Code

1 Authenticate-Request

2 Authenticate-Ack

3 Authenticate-Nak

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 |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Peer-ID Length| Peer-Id ...

+-+-+-+-+-+-+-+-+-+-+-+-+

| Passwd-Length | Password ...

+-+-+-+-+-+-+-+-+-+-+-+-+-+

Code

1 Authenticate-Request.

4.3.3. CHAP

CHAP(Challenge Handshake Authentication Protocol)使用3路握手检查用户身份,在链路建立基础上进行且提出随时认证.

1).3路握手:

Challenge(A)→Response(p)→Success/Failure(A)→(p)

A:Authenticator p:peer

2).Challenge/Response:

Response=MD5(Identifier+”secret”+Callenge)

Identifier:每发送一次数据包使用不同的Identifier值,回应数据包必须使用相同Identifier的值

Secret:为共享秘密,由两端数据库纯文本形式提供,通过加密进行传送

Challenge:必须满足:唯一性和随机性以避免重传攻击和诱发响应(不能避免实时主动攻击)

3).认证选项格式:

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

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Type | Length | Authentication-Protocol |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Algorithm |

+-+-+-+-+-+-+-+-+

Type = 3

Length = 5

Authentication-Protocol

c223 (hex) for Challenge-Handshake Authentication Protocol.

Algorithm

0-4 unused (reserved)

5 MD5

4).CHAP数据包格式:

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 |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Data ...

+-+-+-+-+

Code

1 Challenge

2 Response

3 Success

4 Failure

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 |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Value-Size | Value ...

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Name ...

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Code

1 Challenge;

2 Response.

Name:

防止多种认证系统只用一个秘密,Name用作关键字提供基于不同认证的秘密4.3.4. 对PAP用户的RADIUS认证

Access-Requuest数据包:

User-Name←PAP ID

User-Password←password

[Service-Type = Framed-User

Framed-Protocol = PPP]

4.3.

5. 对CHAP用户的RADIUS认证

Access-Requuest数据包:

User-Name←CHAP username

CHAP-Password←CHAP ID+CHAP response

CHAP-Challenge/Request Authenticator←chalenge

[Service-Type = Framed-User

Framed-Protocol = PPP]

RADIUS Server 认证:

Response=MD5(Identifier+”secret”+Challenge)

4.4. 漫游代理

收到用户请求后,RAS根据NAS标记(NAS-ID,NAS-IP)确定是本地用户还是漫游用户.如果是本地用户,RAS将在本地用户服务器中查找用户信息;是漫游用户,RAS将记录该请求的有关信息重新打包,发向用户的开户地的RAS;反之,收到异地RAS发来的回应信息,RAS将依次查找所有作为代理的记录,找到相应的记录,在根据受到的回应信息打包发向NAS,并从代理对里列中删除此条记录,丛而完成代理认证的全过程,实现异地漫游认证.

认证服务器RAS完成代理认证后,打包准备向NAS 发出回应信息前,会进行部分属性的转换,以适应不同NAS 的需要,使RADIUS系统不受限于某一种NAS.并带有授权信息,以限定用户的访问范围.下面是代理示意图:

地区` 1 :

用户

相关主题