身份认证——AAA与Radius协议讲解

avatar
作者
猴君
阅读量:0

目录

AAA介绍

AAA的基本架构

AAA的认证 授权 计费方式

AAA通过本地和远端实现的大致流程

Radius协议

Radius架构

Radius报文结构

Radius如何对用户进行认证

Radius协议报文交互过程


AAA介绍

AAA(Authentication Authorization and Accounting)又称为认证、授权和计费,是一种管理网络安全的机制(架构),主要为接入网络的用户提供认证、授权和计费三种基本服务,用于防止非法用户登陆设备

AAA可以通过多种协议来实现,在实际应用中,最常使用RADIUS协议,也有些会使用TACACS+协议

认证:对用户进行身份认证,验证用户是否具有访问网络/管理设备的权力

授权:对用户权限进行分类,提供不同的访问权限

记账:记录用户使用网络资源的情况,根据统计数据进行分析计费

AAA的基本架构

AAA通常采用客户端-服务器的结构,服务器集中管理用户信息

NAS客户端:网络接入设备(也可以作为本地AAA服务器管理用户信息)

AAA Server远端AAA服务器

AAA的认证 授权 计费方式

AAA认证方式

不认证:

不对用户进行认证,一般不推荐

本地认证:

将用户信息配置在NAS设备,当接收到用户信息后直接本地认证,认证速度快,但是存储的信息量会受到设备硬件限制

远端认证:

将用户信息配置在专用的AAA服务器上(Radius服务器或HWTACACS服务器)

AAA授权方式

不授权:

不对用户进行授权处理

本地授权:

根据NAS设备上为本地用户账户配置的相关属性进行授权

远端授权:

有专用的AAA服务器进行授权(Radius服务器或HWTACACS服务器)

AAA计费方式

不计费:不进行计费

远端计费:通过Radius服务器或HWTACACS服务器进行计费

AAA通过本地和远端实现的大致流程

远端方式流程

用户向NAS发起AAA申请,NAS收到后将其发送给AAA Server处理

AAA Server将处理后的结果返回给NAS,NAS根据处理结果为Host提供相应的AAA服务

本地方式流程

用户向NAS发起AAA申请,NAS收到后直接处理,然后根据处理结果为Host提供相应的AAA服务


Radius协议

Radius基本概念

Radius(Remote Autnentication Dial-In User Service)远程认证拨号用户服务,是一种基于客户端-服务器模式的认证和会话管理协议(Radius的客户端一般是接入设备);用于在计算机网络中提供对用户进行身份认证、授权和账户管理的服务;通常用于远程访问服务器来验证用户身份并授权其访问网络资源(如 虚拟专用网络VPN或无线接入点)

注意:使用Radius服务器进行认证授权计费时,AAA的方式必须为远端方式

Radius端口号

Radius承载在UDP协议之上

进行远程认证的认证和计费端口号为1812和1813(或1645和1646 旧版本)

Radius服务器认证方式

一般使用PAP和CHAP对用户进行认证

不过Radius的认证和授权一体,即认证和授权统一进行,并且Radius不对配置命令进行授权

Radius协议应用场景

  1. 在办公网场景中结合802.1x认证为用户提供认证授权计费服务
  2. 可以作为Portal认证的认证服务器,为用户提供认证授权计费服务
  3. 作为MAC认证的认证服务器,为哑终端等提供认证服务
  4. 也可以直接使用Radius服务器进行远端认证,对用户进行认证授权计费服务

Radius协议和TACAAS+协议的区别

 RadiusTACACS+
设计目的主要用于认证和记录远程用户接入到网络主要用于管理员接入到网络设备
端口号UDP协议(认证授权1812、计费1813)TCP协议(认证、授权、计费都是49)
其它认证授权不分离,不支持对配置命令授权认证授权分离,并支持对配置命令进行授权

Radius和AAA的关系

AAA是一种基础架构,Radius是基于该架构实现用户认证计费授权的一种协议(如TACACS+也是基于AAA架构实现用户认证计费授权的一种协议)

Radius和AD域的区别

总的来说,AD和Radius都为为了实现集中管理而存在的(并且都支持分布式部署),只是两者的工作原理和使用场景有所不同

  • AD是一种目录服务:主要用于Windows网络环境的用户和资源管理(存储了用户账户信息、计算机和打印机等资源,并使用LDAP提供对这些信息的访问)
  • Radius是一种基于客户端-服务器模式的认证和会话管理协议,主要用于远程用户访问网络时的身份验证和会话管理

Radius架构

基于AAA的基本架构

Radius客户端

一般位于网络接入设备,可以遍布整个网络

负责将用户的请求传递给Radius服务器,并对服务器的处理结果做出响应

Radius服务器

一般运行在中心计算机或工作站上,维护相关的用户信息,用于响应Radius客户端的请求

对用户进行认证授权和计费;Radius服务器只要维护以下三个数据库

Users:用于存储用户信息(用户名、密码、IP地址等配置信息)

Clients:用于存储Radius客户端信息(IP地址等信息)

Dictionary:用于存储Radius协议中的属性和属性值含义等信息(进行Radius报文交互)

Radius报文结构

Code 包类型

指定Radius的报文类型

Access-Challenge

主要用于EAP中继认证场景

Accounting-Rquest又细分为

 Accounting-Rquest(Start):计费开始请求报文

 Accounting-Rquest(Interim-update):实时计费请求报文

 Accounting-Rquest(Stop):计费结束请求报文

Accounting-Response又细分为

 Accounting-Response(Start):计费开始响应报文

 Accounting-Response(Interim-update):实时计费响应报文

 Accounting-Response(Stop):计费结束响应报文

Identifier 包标识

1、用来匹配请求和响应报文

Radius客户端发送请求报文后,Radius服务器返回的响应报文中的Identifier值与请求报文中的Identifier值相同,将相同Identifier值的请求和响应报文进行匹配

2、用来检测在一段时间内重发的请求报文

如果在一个很短的时间内收到相同的源IP地址、源UDP端口号以及Identifier值的请求报文,Radius服务器就认为是重复的请求报文

Length 包长度

指定Radius报文的长度(Code、Identifier、Length、Authenticator、Avps五个字段)

接收到的报文的实际长度大于Length的取值,超过的字节将作为填充字符而忽略

接收到的报文的实际长度小于Length的取值,该报文会被丢弃

Authenticator 包验证字(对用户进行认证授权)

1、用于和用户密钥做运算,以此验证用户的密钥(结合Radius如何给用户认证一起理解)

Request Authenticator 请求验证字

用在认证授权请求报文中,该值在密钥(NSA和服务器之间的共享密钥)的声明周期内是不可预测和唯一的,用来对用户的密码进行加密(不同的认证方式加密方法不同)

PAP方式

将共享密钥与Request Authenticator进行MD5运算,并将该值与用户输入的密码进行异或运算,将其结果存放在认证授权请求包的User-Password属性中

CHAP方式

将共享密钥与Request Authenticator和CHAP ID(认证方发给响应方的一个随机值)进行MD5运算,然后将此值与CHAP ID一起存放在认证授权请求包的Chap-Password属性中

2、用于验证来自服务端的响应的有效性

Response Authenticator 响应验证字

用在认证授权响应报文中,用于NAS验证响应报文的合法性

响应验证字=MD5(Code+Identifier+Length+请求验证字+Avps+共享密钥)

AVPs(Attributes Value Pairs)(Radius属性,可变字段)

携带认证、授权和记账信息(通过TLV结构表示)

TLV26厂商自定义属性(一个报文可以携带一个或多个私有属性,每个私有属性有一个或多个子属性)

TLV79用来承载EAP协议(当802.1x协议使用Radius服务器认证时使用)

Radius如何对用户进行认证

PAP方式(参考Authenticator字段的讲解)

CHAP方式

Radius协议报文交互过程

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!