目录
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协议应用场景
- 在办公网场景中结合802.1x认证为用户提供认证授权计费服务
- 可以作为Portal认证的认证服务器,为用户提供认证授权计费服务
- 作为MAC认证的认证服务器,为哑终端等提供认证服务
- 也可以直接使用Radius服务器进行远端认证,对用户进行认证授权计费服务
Radius协议和TACAAS+协议的区别
Radius TACACS+ 设计目的 主要用于认证和记录远程用户接入到网络 主要用于管理员接入到网络设备 端口号 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方式