认识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 客户端与服务器间的消息流程: