认识AAA

AAA简介

AAA是 AuthenticationAuthorizationAccounting 的简称,是网络安全的一种管理机制,提供了认证、授权、计费三种安全功能。 最常见的应用场景就是运营商需要验证家庭宽带用户的账号密码之后才允许上网,并记录用户的上网时长或流量进行计费。

AAA 架构

AAA 架构包括用户、NAS(Network Access Server)、AAA服务器

NAS基于域来对用户进行管理,每个域都可以配置不同的认证、授权和计费方案 用户属于哪个域是由用户名中的域名分隔符 @ 后的字符串决定。例如上图中的用户分别属于 Domain1、Domain2、Domain3 (图中单词拼错了🙃)

认证

AAA 的认证方式有三种:不认证、本地认证、远端认证

  • 不认证:完全信任用户,不对用户身份进行合法性检查,一般很少用。
  • 本地认证:将本地用户信息(包括用户名、密码和各种属性)配置在 NAS 上,此时 NAS 就是 AAA Server。该认证方法处理速度快、运营成本低,缺点是存储的信息量受设备硬件条件限制。
  • 远端认证:将用户信息配置在认证服务器上。NAS 作为客户端,通过 RADIUS 协议或 HWTACACS 协议进行远端认证。

授权

跟认证一样,分为不授权、本地授权和远端授权 前两种类比认证,不再赘述 远端授权也支持 RADIUS 服务器或 HWTACACS 服务器授权。 前者只支持通过 RADIUS 服务器认证的用户授权,RADIUS 协议的认证和授权是绑定在一起的,不能单独使用 RADIUS 进行授权。 后者使用 HWTACACS 服务器对所有用户进行授权。

  • 使用远端授权时,用户可以同时从授权服务器和 NAS 获取授权信息,其中授权服务器下发的授权信息优先级更高。

计费

分为不计费和远端计费两种方式。 不计费即白嫖,给用户提供免费上网服务。 远端计费支持通过 RADIUS 服务器或 HWTACACS 服务器进行远端计费。

实现协议 - RADIUS

AAA 的实现协议有 RADIUS 和 HWTACACS 等,RADIUS 是较常用的。

  • RADIUS 是一种分布式的、C/S 结构的信息交互协议。在实现 AAA 的过程中,通常由 NAS 作为 RADIUS 的客户端,负责传输用户信息到指定的 RADIUS 服务器,然后根据从服务器返回的信息进行处理。
  • RADIUS服务器一般运行在中心计算机或工作站上,维护相关的用户认证和网络服务访问信息,负责接收用户连接请求并认证用户,然后给客户端返回所有需要的信息(如接受/拒绝认证请求)。RADIUS使用UDP 作为传输协议,并规定UDP端口18121813分别作为认证计费端口,具有良好的实时性;同时也支持重传机制和备用服务器机制,从而具有较好的可靠性。

RADIUS 客户端与服务器间的消息流程:

1x认证和mac认证同时配置的问题:

看接口配置,可以通过端口安全配置实现MAC和802.1X的控制接入,报文先触发802.1X认证,失败后再进行MAC地址认证。如果开启并行处理功能,mac-authentication parallel-with-dot1x,则设备会并行进行802.1X和MAC认证。

端口采用802.1X和MAC地址组合认证,且端口所连接的用户有不能主动发送EAP报文触发802.1X认证的情况下,如果端口配置了802.1X单播触发功能,则端口收到源MAC地址未知的报文,会先进行802.1X认证处理,完成后再进行MAC地址认证处理。 配置端口的MAC地址认证和802.1X认证并行处理功能后,在上述情况下,端口收到源MAC地址未知的报文,会向该MAC地址单播发送EAP-Request帧来触发802.1X认证,但不等待802.1X认证处理完成,就同时进行MAC地址认证的处理。 端口采用802.1X和MAC地址组合认证功能适用于如下情况: 端口上同时开启了802.1X和MAC地址认证功能,并配置了802.1X认证的端口的接入控制方式为macbased。

开启了端口安全功能,并配置了端口安全模式为userlogin-secure-or-mac或userlogin-secure-or-mac-ext。 为保证MAC地址认证和802.1X认证并行处理功能的正常使用,不建议配置端口的MAC地址认证延迟功能,否则端口触发802.1X认证后,仍会等待一定的延迟后再进行MAC地址认证。

AAA测试

https://www.h3c.com/cn/d_202407/2223018_30005_0.htm#_Toc169637560 在用户视图下执行本命令,发起一次AAA请求测试。

test-aaa user user-name password password radius-scheme radius-scheme-name 【radius-server { ipv4-address | ipv6 ipv6-address } port-number 【 vpn-instance vpn-instance-name ]] 【 chap | pap 】 【 attribute-test-group attr-test-group-name 】 【 trace 】