AAA(Authentication, Authorization, and Accounting)是一种管理框架,它提供了授权部分用户访问指定资源和记录这些用户操作行为的安全机制。因其具有良好的可扩展性,并且容易实现用户信息的集中管理而被广泛使用
- AAA可以通过多种协议来实现,在实际应用中,最常使用RADIUS协议
AAA概述
AAA是Authentication(认证)、Authorization(授权)和Accounting(计费)的简称,是网络安全的一种管理机制,提供了认证、授权、计费三种安全功能
- 认证 Authentication:验证用户是否可以获得访问权,确定哪些用户可以访问网络
- 授权 Authorization:授权用户可以使用哪些服务
- 计费 Accounting:记录用户使用网络资源的情况
- 网络运营商 ISP: 需要验证家庭宽带用户的账号密码之后才允许其上网,并记录用户的上网时长或上网流量等内容
AAA常见架构:AAA常见网络架构中包括用户、NAS(Network Access Server)、AAA服务器(AAA Server)

NAS负责集中收集和管理用户的访问请求
- 在NAS上会创建多个域来管理用户。不同的域可以关联不同的AAA方案
- AAA方案包含认证方案,授权方案,计费方案
- 当收到用户接入请求时,NAS会根据用户名来判断用户所在的域,根据该域对应的AAA方案对用户进行管控
认证 Authentication:
- AAA支持三种认证方式:
- 不认证:完全信任用户,不对用户身份进行合法性检查。鉴于安全考虑,这种认证方式很少被采用
- 本地认证:将本地用户信息(包括用户名、密码和各种属性)配置在NAS上,此时NAS就是AAA Server
- 本地认证的优点是处理速度快、运营成本低;
- 缺点是存储信息量受设备硬件条件限制
- 这种认证方式常用于对用户登录设备进行管理,如Telnet,FTP用户等。
- 远端认证:将用户信息(包括用户名、密码和各种属性)配置在认证服务器上。支持通过RADIUS协议或HWTACACS协议进行远端认证。NAS作为客户端,与RADIUS服务器或HWTACACS服务器进行通信。

授权 Authorization:
- AAA授权功能赋予用户访问的特定网络或设备的权限。AAA支持以下授权方式:
- 不授权:不对用户进行授权处理
- 本地授权:根据NAS上对应域下的配置进行授权
- 远端授权:支持由RADIUS服务器授权或HWTACACS服务器授权
- HWTACACS授权,使用HWTACACS服务器对所有用户授权
- RADIUS授权,只支持对通过RADIUS服务器认证的用户授权。RADIUS协议的认证和授权是绑定在一起的,不能单独使用RADIUS进行授权
- 当采用远端授权时,用户可以同时从授权服务器和NAS获取授权信息。NAS配置的授权信息优先级比授权服务器下发的授权信息低
授权信息包括:所属用户组、所属VLAN、ACL编号等

计费 Accouting :
计费功能用于监控授权用户的网络行为和网络资源的使用情况。
- AAA支持以下两种计费方式:
- 不计费:为用户提供免费上网服务,不产生相关活动日志
- 远端计费:支持通过RADIUS服务器或HWTACACS服务器进行远端计费
AAA实现协议 - RADIUS

RADIUS是一种分布式的、客户端/服务器结构的信息交互协议,可以实现对用户的认证、计费和授权功能
- 通常由NAS作为RADIUS客户端,负责传输用户信息到指定的RADIUS服务器,然后根据从服务器返回的信息进行相应处理 如接受/拒绝用户接入
- RADIUS服务器一般运行在中心计算机或工作站上,维护相关的用户认证和网络服务访问信息,负责接收用户连接请求并认证用户,然后给客户端返回所有需要的信息(如接受/拒绝认证请求)。
- RADIUS使用UDP(User Datagram Protocol)作为传输协议,并规定UDP端口1812、1813分别作为认证、计费端口,具有良好的实时性;同时也支持重传机制和备用服务器机制,从而具有较好的可靠性。
- RADIUS客户端与服务器间的消息流程如下:
- 当用户接入网络时,用户发起连接请求,向RADIUS客户端(即NAS)发送用户名和密码
- RADIUS客户端向RADIUS服务器发送包含用户名和密码信息的认证请求报文
- RADIUS服务器接收到合法的请求后,完成认证,并把所需的用户授权信息返回给客户端;对于非法的请求,RADIUS服务器返回认证失败的信息给客户端
- RADIUS客户端通知用户认证是否成功
- RADIUS客户端根据接收到的认证结果接入/拒绝用户。如果允许用户接入,则RADIUS客户端向RADIUS服务器发送计费开始请求报文
- RADIUS服务器返回计费开始响应报文,并开始计费
- 用户开始访问网络资源
- 当用户不再想要访问网络资源时,用户发起下线请求,请求停止访问网络资源
- RADIUS客户端向RADIUS服务器提交计费结束请求报文
- RADIUS服务器返回计费结束响应报文,并停止计费
- RADIUS客户端通知用户访问结束,用户结束访问网络资源
AAA常见应用场景

AAA配置实现
1 . 进入AAA视图
[Huawei] aaa
2 . 创建认证方案
[Huawei-aaa] authentication-scheme authentication-scheme-name # 创建认证方案并进入相应的认证方案视图
参数 | 参数说明 | 取值 |
---|---|---|
authentication-scheme-name | 指定认证方案名称 | 字符串形式,不区分大小写,长度范围是1~32,不支持空格 |
[Huawei-aaa-authentication-scheme-name] authentication-mode {hwtacacs | local | radius}
# authentication-mode { hwtacacs | local | radius }命令用来配置当前认证方案使用的认证方式
- 缺省情况下,认证模式为本地认证方式
参数 | 参数说明 |
---|---|
hwtacacs | 指定认证模式为HWTACACS认证 |
local | 指定认证模式为本地认证 |
radius | 指定认证模式为RADIUS认证 |
none | 指定认证模式为不进行认证,即直接让用户通过认证。管理用户支持配置none认证模式,但是不允许登录设备 |
3 . 创建domain并绑定认证方案
[Huawei-aaa] domain domain-name # 创建domain并进入相应的domain视图
参数 | 参数说明 | 取值 |
---|---|---|
domain-name | 指定为DHCP客户端分配的域名后缀 | 字符串形式,不支持空格,长度范围是1~63 |
[Huawei-aaa-domain-name] authentication-scheme authentication-scheme-name
# authentication-scheme 命令用来创建认证方案,并进入认证方案视图或直接进入已存在的认证方案视图
# 在相应的domain视图下绑定认证方案
4 . 创建用户
[Huawei-aaa] local-user user-name password cipher password
- 创建本地用户,并配置本地用户的密码:
- 如果用户名中带域名分隔符,如@,则认为@前面的部分是用户名,后面部分是域名
- 如果没有@,则整个字符串为用户名,域为默认域
5 . 配置用户接入类型
[Huawei-aaa] local-user user-name service-type{ { terminal | telnet | ftp | ssh | snmp | http } | ppp | none}
# 设置本地用户的接入类型。缺省情况下,本地用户关闭所有的接入类型
参数 | 参数说明 |
---|---|
user-name | 指定用户名 |
ftp | 指定用户类型为FTP用户 |
none | 不指定任何接入类型 |
snmp | 指定用户类型为SNMP用户 |
ssh | 指定用户类型为SSH用户 |
telnet | 指定用户类型为Telnet用户,通常指网络管理员 |
terminal | 指定用户类型为终端用户,通常指Console口用户和VTY用户 |
6 . 配置用户级别
[Huawei-aaa] local-user user-name privilege level level
# local-user level命令用来设置本地用户的级别