AAA服务器技术

一、AAA认证架构

理解AAA基本概念与架构

  • 先介绍: AAA是什么(认证、授权、计费)

  • 重点理解: 为什么需要AAA?它的三大功能分别解决什么问题?

  • 关联后续: 这是所有后续协议(RADIUS/TACACS+)的基础。

1.基础概念

AAA是一个安全框架,它包含三个独立但紧密相关的功能,共同构成了网络访问控制的基础。

功能 (Function) 核心问题 (Core Question) 关键动作 (Key Actions) 类比 (Analogy)
认证 (Authentication) "你是谁?" (Who are you?) 验证用户/设备的身份。检查用户名、密码、证书等凭据。 进入大楼时,保安查看你的工牌(身份标识)。
授权 (Authorization) "你能做什么?" (What can you do?) 决定用户/设备有权访问哪些资源和服务。授予特定权限。 保安根据你的工牌权限,告诉你能去哪些楼层(权限划分)。
计费 (Accounting) "你做了什么?" (What did you do?) 记录用户/设备使用网络资源的情况。用于审计、计费、监控。 保安在登记本上记录你进出大楼的时间(行为审计)。

💡关键理解 :这三个功能是按顺序执行的。必须先通过认证(证明你是谁),才能进行授权(决定你能干嘛),同时计费全程记录你的行为。

2.AAA架构与实现方式

AAA服务可以通过两种主要方式部署,这是面试中必问的重点。

1. 本地认证

  • 工作原理:网络设备(如路由器、交换机)自身扮演AAA服务器的角色。用户的用户名和密码信息直接配置在设备的本地数据库中。

  • 工作流程

    1. 用户尝试登录设备。

    2. 设备检查输入的用户名和密码是否与本地配置的完全匹配。

    3. 设备直接告知用户成功或失败。

  • 优点:简单、快速,不依赖外部网络和服务。

  • 缺点:用户信息分散在各个设备上,难以管理和维护,安全性较低。

  • 适用场景 :小型网络、设备管理登录(如console/SSH)、设备间协议认证(如BGP邻居认证)

2. 远程认证

  • 工作原理 :网络设备(称为NAS,网络接入服务器 )作为客户端,将用户的认证信息转发给专门的AAA服务器进行处理。

  • 工作流程

    1. 用户尝试登录或接入网络。

    2. NAS(客户端)将用户凭证打包成协议报文(如RADIUS)发送给AAA服务器。

    3. AAA服务器查询中央数据库,验证凭证,并将结果(接受/拒绝)返回给NAS。

    4. NAS根据结果允许或拒绝用户访问。

  • 优点集中化管理,安全性高,易于审计,支持复杂策略。

  • 缺点:依赖网络连通性和服务器性能。

  • 适用场景:中大型企业网络,需要对大量用户进行统一接入控制的场景(如Wi-Fi、VPN、网络登录)。

3.NAS的关键角色

  • 定义 :NAS是AAA架构中的客户端,是用户进入网络的"门户"或"关卡"。

  • 职责

    • 接收用户的接入请求(如PPPoE拨号、连接Wi-Fi、发起VPN隧道)。

    • 收集用户的认证信息(用户名、密码)。

    • 与AAA服务器进行通信(使用RADIUS或TACACS+协议)。

    • 执行AAA服务器下发的授权指令(如为用户分配IP地址、下发ACL访问策略)。

    • 向AAA服务器发送计费信息。

常见NAS设备:路由器、交换机、无线控制器(AC)、VPN网关、宽带接入服务器(BRAS)。

4.AAA支持的服务

AAA保护的服务类型
  • FTP: 文件传输服务。AAA可以对登录FTP服务器的用户进行认证和授权(如允许访问哪个目录)。

  • TELNET: 远程登录服务。这是最经典的用例,对登录网络设备的用户进行认证和授权(如授予不同操作权限级别)。

  • PPP: 点对点协议(如宽带拨号上网)。AAA是PPPoE拨号认证的核心(比如ADSL上网需要输入账号密码,那就是AAA在后台工作)。

  • 端口接入: 如IEEE 802.1X认证。用户连接交换机的一个端口后,必须通过认证才能让该端口打开并接入网络。

🎯 面试重点与理解提示

  • 不要死记硬背服务列表 : 关键是理解**"任何需要验证身份、控制权限、记录行为的网络服务,都可以集成AAA"** 这一核心思想。

  • 理解"授权"的灵活性 : 授权下发的不仅仅是"通过"或"拒绝",而是一套精细化的策略(Policy),比如VLAN、ACL、用户级别、路由策略等。这是AAA功能强大的体现。

  • 计费的目的不仅是收费 : "计费"一词听起来像是为了赚钱,但在企业网中,它更重要的目的是安全审计(Auditing)和网络行为分析。记录"谁在什么时间做了什么",这对于合规性和故障排查至关重要。

总结:这一页PPT让你从抽象概念落地到具体应用,是理论联系实际的关键一环。

二、RADIUS协议

1.协议概述

为什么用UDP而不用TCP?

  • 效率更高: 无连接,开销小,速度快。对于大规模接入场景,性能至关重要。

  • 简单: 实现起来比TCP简单。

  • 重传机制: RADIUS在应用层自己实现了重传机制(通过Identifier字段和超时计时器),弥补了UDP不可靠的缺点。

  • 客户端/服务器模型 (C/S): NAS是客户端,负责将用户请求转发给RADIUS服务器。

  • 共享密钥 (Shared Secret): 客户端和服务器之间配置一个共享的密钥,用于验证消息的完整性和加密密码(使用MD5哈希)。注意: 仅密码被加密,报文头和其他属性是明文传输的。

  • 协议效率高: 基于无连接的UDP,开销小,速度快,适合大规模用户接入场景。

  • 基本报文类型:

    • Access-Request (认证请求)

    • Access-Accept (认证接受)

    • Access-Reject (认证拒绝)

    • Accounting-Request (计费请求)

    • Accounting-Response (计费响应)

2. 安全机制:共享密钥

  • 作用:

    1. 加密密码: 用于加密User-Password属性。

    2. 验证消息完整性: 用于生成Response Authenticator,防止数据篡改。

    3. 身份验证: 确保消息来自合法的客户端或服务器。

  • 密码是如何加密的? 使用共享密钥和Request Authenticator,通过MD5算法生成一个16字节的散列值,与密码进行异或操作。(不是直接加密,而是混淆)

  • 哪些信息被加密? 只有User-Password等极少数敏感属性被加密 ,其他报文头部和属性都是明文传输的。这是RADIUS的一个安全弱点。

3.报文结构

Authenticator (16字节): 验证器,有两种类型:

  • Request Authenticator:Access-Request中,是一个随机数,用于加密密码。

  • Response Authenticator: 在响应报文中,是一个MD5散列值 ,由Code+ID+Length+Request Auth+共享密钥+Attributes计算得出,用于验证响应是否合法。

3.1 属性 (Attributes) - TLV结构

1 - User-Name: 用户名

2 - User-Password: 加密后的密码

4 - NAS-IP-Address: NAS的IP地址

8 - Framed-IP-Address: 下发分配给用户的IP地址

11 - Filter-Id: 下发给NAS的ACL名称

26 - Vendor-Specific厂商特定属性 (VSA) ,是RADIUS强大扩展性的基石。

31 - Calling-Station-ID: 主叫号码/用户MAC地址

4.交互流程

我们将一个完整的用户会话(如PPP拨号或Wi-Fi连接)分为两个完全独立的阶段:

  1. 认证与授权阶段 (使用UDP端口1812

  2. 计费阶段 (使用UDP端口1813

🔍 流程步骤详解

阶段一:认证与授权(端口 1812)

第1步:用户发起连接

  • 用户在网络接入点(如拨号连接、Wi-Fi认证页面)输入用户名和密码。

  • NAS 接收到这些凭证。

第2步:NAS发送 Access-Request

  • NAS 扮演RADIUS客户端角色,将用户信息打包成一个 Access-Request 报文。

  • 关键字段和操作:

    • Code = 1 (Access-Request)

    • Identifier: 生成一个随机数(例如X),用于匹配请求和响应。

    • Request Authenticator: 生成一个16字节的随机数

    • 加密密码 :使用共享密钥和Request Authenticator,通过MD5算法对用户密码进行加密,填入 User-Password 属性。

    • 添加其他属性,如 User-NameNAS-IP-AddressNAS-PortCalled-Station-ID(AP MAC地址)等。

  • 将此报文发送给RADIUS服务器(1812端口)。

第3步:RADIUS服务器处理并响应

  • RADIUS服务器 收到请求后:

    1. 验证客户端:根据NAS的源IP地址查找配置的共享密钥。

    2. 验证密码 :使用查到的共享密钥和收到的 Request Authenticator,用相同的算法解密 User-Password 属性,得到明文密码。

    3. 认证查询 :将 User-Name 和解密后的密码与用户数据库(如LDAP、本地文件)进行比对。

    4. 授权查询:如果认证成功,服务器会查询该用户的授权策略。

  • 服务器返回三种响应之一:

    • Access-Accept (Code=2) : 认证成功该报文内直接包含授权属性,如:

      • Framed-IP-Address: 分配给用户的IP地址。

      • Filter-Id: 下发给NAS的访问控制列表(ACL)名称,用于控制用户访问权限。

      • Session-Timeout: 会话超时时间(秒)。

    • Access-Reject (Code=3): 认证失败(密码错误、用户不存在等)。

    • Access-Challenge (Code=11) : 请求挑战(用于更复杂的多因子认证,如SMS验证码。本次讨论暂不展开)。

  • Identifier字段必须与请求报文中的完全相同(即X)。

第4步:NAS执行操作

  • NAS收到响应后,根据 Code 执行操作:

    • Access-Accept: 允许用户接入,并根据报文中的授权属性为用户配置网络参数(如分配IP、应用ACL)。

    • Access-Reject: 拒绝用户接入,断开连接。

阶段二:计费(端口 1813)

第5步:NAS发送计费开始请求

  • 一旦用户会话被建立,NAS会立即向RADIUS服务器发送一个**Accounting-Request 报文。**

  • 关键字段和操作:

    • Code = 4 (Accounting-Request)

    • Status-Type = Start (1): 表示这是一个"开始"计费记录。

    • Acct-Session-ID: 一个唯一的会话标识符,用于将开始和结束记录关联起来。

    • 包含用户和会话信息,如 User-NameFramed-IP-AddressNAS-Port

  • 使用一个新的 Identifier (例如Y),通过1813端口发送。

第6步:服务器确认计费开始

  • RADIUS服务器收到后,会记录会话开始事件(通常写入数据库或日志文件)。

  • 回复一个 Accounting-Response (Code=5) 作为确认。Identifier 同样为Y。

第7&8步:(可选)临时更新

  • 对于长会话,NAS可能会定期(如每30分钟)发送 Status-Type = Interim-Update (3) 的 Accounting-Request,上报截至当前的使用量(流量、时长)。

  • 服务器每次都会回复 Accounting-Response

第9&10&11步:用户断开,NAS发送计费结束请求

  • 用户主动断开或超时断开连接。

  • NAS发送一个 Status-Type = Stop (2) 的 Accounting-Request

  • 此报文中包含最终的会话统计数据,如:

    • Acct-Session-Time: 会话总时长(秒)。

    • Acct-Input-Octets: 用户接收的总字节数。

    • Acct-Output-Octets: 用户发送的总字节数。

  • 服务器记录最终数据并回复 Accounting-Response。会话生命周期结束。


三、TACACS 协议详解

1.基本概念

核心特性:

  • 模块化设计: 将认证、授权、计费三个功能完全分离,每个功能都使用独立的报文类型和会话。

  • 增强的安全性: 加密整个报文载荷(除头部)。

  • 精细化的控制 : 支持极其细致的命令行授权。

1. 传输层协议与端口

  • 协议: TCP

  • 端口: 49

  • 面试重点:为什么用TCP?

    • 可靠性: 确保管理配置命令等关键消息不丢失、不乱序。

    • 复杂交互: TACACS+的交互可能是多回合的(挑战-应答),TCP的面向连接特性更适合这种长对话。

    • 安全性: 为整个报文加密提供了稳定的传输基础。

2. 安全机制:加密整个报文正文

  • 加密方式: 使用MD5算法和共享密钥,对整个报文正文(Payload) 进行加密。

  • 对比RADIUS:

    RADIUS TACACS+
    加密范围 仅加密 User-Password 等少数属性 加密整个报文正文
    报文头 明文 明文
    安全性 较低,易被嗅探 ,防止流量分析

3. 模块化设计:认证、授权、计费分离

这是TACACS+最核心、最区别于RADIUS的特性。

功能 RADIUS TACACS+
认证 (AuthN) 与授权捆绑在 Access-Request/Accept 中完成 独立流程 ,使用 START, CONTINUE, REPLY 报文
授权 (AuthZ) 随认证响应一并下发 独立流程 ,使用 REQUEST, RESPONSE 报文
计费 (Acct) 独立,但功能相对简单 独立流程,记录更详细的管理操作日志

这种分离使得每个过程可以独立进行,非常灵活。例如,一个用户可以通过一种方式认证(如LDAP),但授权信息却来自另一个数据库。

2.报文结构

  • major/minor version: 版本号。

  • type (1字节): 定义报文的主要类型,这是最重要的字段。

    • 0x01 - Authentication (认证)

    • 0x02 - Authorization (授权)

    • 0x03 - Accounting (计费)

  • seq_no (1字节): 序列号 。指示当前会话中的报文序号。第一个请求报文为1,后续每次发送加1。用于管理多回合交互。

  • flags: 标志位,如UNENCRYPTED位(不建议使用)。

  • session_id: 会话ID,用于唯一标识一个会话。

  • length (4字节): 被加密的正文字段的长度。

报文正文 (Body)

  • 头部之后的部分。

  • 整个正文部分都被加密

  • 正文的具体格式和含义由type字段决定。

3.交互流程

以最经典的用户通过Telnet/SSH登录网络设备为例,展示了一个完整的、成功的交互过程:

⚖️ 4.TACACS+ vs. RADIUS 核心对比总结

特性维度 RADIUS TACACS+
传输协议 UDP (无连接,高效) TCP (面向连接,可靠)
加密方式 仅加密密码 加密整个报文正文
协议设计 认证 & 授权 合并 认证、授权、计费 完全分离
交互特性 简单,通常1-2回合 复杂,支持多回合挑战应答
控制粒度 较粗,基于用户组 极细,可控制到单条命令
主要场景 用户网络接入 (IP级) 网络设备管理 (字符型CLI)
标准性 开放标准 (IETF RFC) Cisco私有 (事实标准)

四、典型应用案例

1.AAA技术最主要的三大应用场景

1.1 用户接入认证授权

  1. 一个用户通过多种方式发起连接:"用户直接发起VPN连接""LAN或wlan接入"
  2. 用户的请求到达一台路由器(ROUTER ,它在此处扮演NAS的角色)。
  3. 路由器将用户的认证信息(如用户名密码)发送给后端的 RADIUS 服务器进行验证。
  4. 验证通过后,用户被允许接入"总部"网络。

1.2登录设备认证授权

1.3设备间协议认证

应用场景 首选协议 原因 备选方案
用户接入网络 (VPN, WiFi) RADIUS 高效、标准,适合处理大量用户和网络层授权 本地认证 (小规模)
用户登录设备 (SSH, Telnet) TACACS+ 提供最精细的命令级授权和完整的审计日志 RADIUS (基本认证)、本地认证 (备用)
设备间协议认证 (BGP, OSPF) 本地认证 简单、可靠、不依赖外部服务 (几乎不使用远程认证)