本帖最后由 静下心来敲木鱼 于 2023-11-16 21:40 编辑
AAA介绍 AAA(AuthenticationAuthorization and Accounting)又称为认证、授权和计费,是一种管理网络安全的机制,主要为接入网络的用户提供认证、授权和计费三种基本服务,用于防止非法用户登陆设备( UDP端口号为1812、1813;默认的认证、计费端口号) 认证:对用户进行身份认证,验证用户是否具有访问网络/管理设备的权力 授权:对用户权限进行分类,提供不同的访问权限 记账:记录用户使用网络资源的情况,根据统计数据进行分析计费 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(Remote AutnenticationDial-In User Service)远程认证拨号用户服务,是一种客户端/服务器结构的信息交互协议(Radius的客户端一般是接入设备),承载在UDP协议之上;Radius的认证和授权一体,即认证和授权统一进行;不过Radius不对配置命令进行授权 注意:使用Radius服务器进行认证授权计费时,AAA的方式必须为远端方式 Radius端口号 Radius在进行远程认证的认证和计费端口号为1812和1813或1645和1646 Radius服务器认证方式 一般使用PAP和CHAP对用户进行认证 Radius协议应用场景 1、 在办公网场景中结合802.1x认证为用户提供认证授权计费服务 2、 可以作为Portal认证的认证服务器,为用户提供认证授权计费服务 3、 作为MAC认证的认证服务器,为哑终端等提供认证服务 4、 也可以直接使用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协议报文交互过程 |