一、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服务器的角色。用户的用户名和密码信息直接配置在设备的本地数据库中。
工作流程:
用户尝试登录设备。
设备检查输入的用户名和密码是否与本地配置的完全匹配。
设备直接告知用户成功或失败。
优点:简单、快速,不依赖外部网络和服务。
缺点:用户信息分散在各个设备上,难以管理和维护,安全性较低。
适用场景:小型网络、设备管理登录(如console/SSH)、设备间协议认证(如BGP邻居认证)。
2. 远程认证
工作原理:网络设备(称为NAS,网络接入服务器)作为客户端,将用户的认证信息转发给专门的AAA服务器进行处理。
工作流程:
用户尝试登录或接入网络。
NAS(客户端)将用户凭证打包成协议报文(如RADIUS)发送给AAA服务器。
AAA服务器查询中央数据库,验证凭证,并将结果(接受/拒绝)返回给NAS。
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. 安全机制:共享密钥
作用:
加密密码: 用于加密
User-Password
属性。验证消息完整性: 用于生成
Response Authenticator
,防止数据篡改。身份验证: 确保消息来自合法的客户端或服务器。
密码是如何加密的? 使用共享密钥和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连接)分为两个完全独立的阶段:
认证与授权阶段(使用UDP端口
1812
)计费阶段(使用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-Name
、NAS-IP-Address
、NAS-Port
、Called-Station-ID
(AP MAC地址)等。将此报文发送给RADIUS服务器(
1812
端口)。第3步:RADIUS服务器处理并响应
RADIUS服务器 收到请求后:
验证客户端:根据NAS的源IP地址查找配置的共享密钥。
验证密码:使用查到的共享密钥和收到的
Request Authenticator
,用相同的算法解密User-Password
属性,得到明文密码。认证查询:将
User-Name
和解密后的密码与用户数据库(如LDAP、本地文件)进行比对。授权查询:如果认证成功,服务器会查询该用户的授权策略。
服务器返回三种响应之一:
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-Name
、Framed-IP-Address
、NAS-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 用户接入认证授权
- 一个用户通过多种方式发起连接:“用户直接发起VPN连接” 和 “LAN或wlan接入”。
- 用户的请求到达一台路由器(ROUTER,它在此处扮演NAS的角色)。
- 路由器将用户的认证信息(如用户名密码)发送给后端的 RADIUS 服务器进行验证。
- 验证通过后,用户被允许接入“总部”网络。
1.2登录设备认证授权
1.3设备间协议认证
应用场景 | 首选协议 | 原因 | 备选方案 |
---|---|---|---|
用户接入网络 (VPN, WiFi) | RADIUS | 高效、标准,适合处理大量用户和网络层授权 | 本地认证 (小规模) |
用户登录设备 (SSH, Telnet) | TACACS+ | 提供最精细的命令级授权和完整的审计日志 | RADIUS (基本认证)、本地认证 (备用) |
设备间协议认证 (BGP, OSPF) | 本地认证 | 简单、可靠、不依赖外部服务 | 无 (几乎不使用远程认证) |