一、AAA简介


访问控制是用来控制哪些用户可以访问网络以及可以访问的网络资源。AAA是Authentication(认证)、Authorization(授权)和Accounting(计费)的简称,提供了在NAS(Network Access Server,网络接入服务器)设备上配置访问控制的管理框架。

医疗_设置.png AAA作为网络安全的一种管理机制,以模块化的方式提供以下服务:

  • 认证:确认访问网络的用户的身份,判断访问者是否为合法的网络用户。
  • 授权:对不同用户赋予不同的权限,限制用户可以使用的服务。
  • 计费:记录用户使用网络服务过程中的所有操作,包括使用的服务类型、起始时间、数据流量等,用于收集和记录用户对网络资源的使用情况,并可以实现针对时间、流量的计费需求,也对网络起到监视作用。

基本构架
AAA采用客户端/服务器结构,AAA客户端运行在接入设备上,通常被称为NAS设备,负责验证用户身份与管理用户接入;AAA服务器是认证服务器、授权服务器和计费服务器的统称,负责集中管理用户信息。AAA的基本架构如下图。
image.png
image.png
AAA可以通过多种协议来实现,目前设备支持基于RADIUSHWTACACS协议来实现AAA,在实际应用中,最常使用RADIUS协议。
上图中所示的AAA服务器,用户可以根据实际组网需求来决定认证、授权、计费功能分别由使用哪种协议类型的服务器来承担。用户也可以只使用AAA提供的一种或两种安全服务。例如,公司仅仅想让员工在访问某些特定资源时进行身份认证,那么网络管理员只要配置认证服务器即可。但是若希望对员工使用网络的情况进行记录,那么还需要配置计费服务器。

二、AAA原理描述


2.1 基于域的用户管理

NAS设备对用户的管理是基于域的,每个用户都属于一个域,一个域是由属于同一个域的用户构成的群体。简单地说,用户属于哪个域就使用哪个域下的AAA配置信息。
如下图所示,域统一管理AAA方案、服务器模板和授权等配置信息:
image.png :::success

  • AAA方案:分为认证方案、授权方案和计费方案,来定义认证、授权和计费的方法及每种方法的生效顺序
  • 服务器模板:用来配置认证、授权或计费使用的服务器。配置服务器授权时,用户从服务器和域下获取授权信息,详见下图。如果使用本地认证或授权,需要配置本地用户的相关信息。
  • 域下的授权信息:域下还可以配置授权信息,域下可以绑定业务方案、用户组等,业务方案、用户组内支持配置授权的ACL、VLAN等信息。 ::: 授权信息分为两类:服务器下发的授权信息和域下的授权信息。用户从何处获取授权与授权方案中配置的授权方法有关。如下图所示: :::success

  • 授权方法为本地授权时,用户从域下获取授权信息。

  • 授权方法为服务器授权时,用户从服务器和域下获取授权信息。域下配置的授权信息比服务器下发的授权信息优先级低,如果两者的授权信息冲突,则服务器下发的授权优先生效;如果两者的授权信息不冲突,则两者的授权信息同时生效。这样处理可以通过域管理进行灵活授权,而不必受限于服务器提供的授权。 ::: image.png
    用户所属的域
    如下图所示,用户所属的域是由用户登录到NAS设备时提供的用户名决定的,当用户名中没有携带域名或者携带的域名在NAS设备上未配置时,NAS设备无法确认用户所属的域,此时,NAS设备根据用户的类型将用户加入到默认域中。
    image.png :::warning 医疗_消息.png 说明

  • 两个全局默认域缺省都绑定了名称为default的计费方案,修改该计费方案会同时影响这两个域的配置。

  • 两个全局默认域均不能删除,只能修改。 ::: 如下表所示,为了提供更为精细且有差异化的认证、授权、计费服务,AAA将用户划分为管理员用户和接入用户两种类型。NAS设备存在两个全局默认域:全局默认管理域default_admin和全局默认普通域default,分别作为管理员用户和接入用户的全局默认域,两个全局默认域下的缺省配置也不同。
用户分类 用户接入方式 使用的全局默认域 全局默认域下的缺省配置
认证方案 计费方案 授权方案
管理员用户 又称为Login用户,指可以登录设备的用户。包括通过FTP、HTTP、SSH、Telnet和Console方式登录设备的用户。 default_admin default
(本地认证)
default
(不计费)
接入用户 包括IP Session用户、NAC用户(包括802.1X认证用户、MAC认证用户和Portal认证用户)。 default radius
(本地认证)
default
(不计费)

用户也可以根据实际需求,灵活定义全局默认域。自定义的全局默认域可以同时被配置成全局默认普通域和全局默认管理域。
通过命令display aaa configuration,可以查看设备当前配置的全局默认普通域和全局默认管理域。显示如下:
image.png
对于某些接入方式,用户最终所属的域可由相应认证模块提供的命令行来指定,以满足一定的用户认证管理策略。例如:NAC接入用户,NAS设备支持基于认证模板配置默认域和强制域,并且可以指定用户类型(802.1X用户、MAC用户或者Portal用户),配置更加灵活。强制域、用户自带域和默认域在不同视图下的优先级从高到低如下所示:
认证模板下指定认证方式的强制域 > 认证模板下的强制域 > 用户自带域 > 认证模板下指定认证方式的默认域 > 认证模板下的默认域 > 全局默认域。比较特殊的是,对于MAC认证用户通过MAC地址段指定的强制域具有最高的优先级,高于认证模板下的配置。

NSA设备向RADIUS服务器发送的用户名格式 :::warning 医疗_消息.png 说明

  • 仅RADIUS认证支持修改用户输入的原始用户名。
  • 支持基于RADIUS服务器模板修改用户输入的原始用户名。 ::: NAS设备可以根据RADIUS服务器的要求,配置向RADIUS服务器发送的用户名是否包含域名。缺省情况下,NAS设备向RADIUS服务器发送的用户名为用户输入的原始用户名,不对其进行修改。
    通过下表中的命令设置NAS设备向RADIUS服务器发送的用户名格式。
    以下命令仅会修改发往服务器的RADIUS报文中的用户名格式,EAP报文中的用户名格式不会被修改。由于802.1X认证过程中,RADIUS服务器会检查EAP报文中携带的用户名与RADIUS服务器上的用户名是否一致,所以,802.1X认证时不能使用命令radius-server user-name domain-includedundo radius-server user-name domain-included修改用户的原始用户名,以免造成认证失败。
命令 用户名格式 用户输入的用户名 NAS设备发送给RADIUS服务器的用户名
radius-server user-name original 用户输入的原始用户名
(缺省配置)
user-name@huawei.com user-name@huawei.com
user-name user-name
radius-server user-name domain-included 包含域名 user-name@huawei.com user-name@huawei.com
user-name user-name@default
假设用户使用的默认域为default。
undo radius-server user-name domain-included 不包含域名 user-name@huawei.com user-name
user-name user-name
undo radius-server user-name domain-included except-eap 不包含域名
说明:
仅对非EAP认证用户有效
user-name@huawei.com user-name
user-name user-name

2.2 AAA方案


2.2.1 认证方案

认证方案用来定义用户认证时使用的认证方法以及每种认证方法生效的顺序。认证方案应用到域,与域下的授权方案、计费方案、服务器模板等配置结合,实现对用户进行认证、授权和计费。
设备支持的认证方法 :::success

  • RADIUS认证:将用户信息配置在RADIUS服务器上,通过RADIUS服务器对用户进行认证。
  • HWTACACS认证:将用户信息配置在HWTACACS服务器上,通过HWTACACS服务器对用户进行认证。
  • 本地认证:设备作为认证服务器,将用户信息配置在设备上。本地认证的优点是速度快,可以为运营降低成本,缺点是存储信息量受设备硬件条件限制。
  • 不认证:对用户非常信任,不对其进行合法性检查,一般情况下不采用这种方式。 :::

    认证方法的生效顺序
    认证方案中可以指定一种或者多种认证方法:按照配置顺序,NAS设备首先选择第一种认证方法,当前面的认证方法无响应时,后面的认证方法才会被启用;直到某种认证方法有响应或者所有的认证方法遍历完成后均无响应(均无响应时用户认证失败)时,用户身份认证过程将被停止。 :::warning 医疗_消息.png 说明
    仅前一种方法无响应时,NAS设备才尝试使用下一个认证方法。如果某种认证方法回应认证失败,则意味着AAA服务器拒绝用户接入,用户身份认证过程将被停止,并且不会尝试后面的认证方法。 :::

2.2.2 授权方案

授权方案用来定义用户授权时使用的授权方法以及每种授权方法生效的顺序。授权方案应用到域,与域下的认证方案、计费方案、服务器模板等配置结合,实现对用户进行认证、授权和计费。
设备支持的授权方法 :::success

  • HWTACACS授权:由HWTACACS服务器对用户进行授权。
  • 本地授权:设备作为授权服务器,根据设备上配置的用户信息进行授权。
  • 不授权:不对用户进行授权。
  • if-authenticated授权:用户认证通过,则授权通过,否则授权不通过。适用于用户必须认证且认证过程与授权过程可分离的场景。 ::: :::warning 医疗_消息.png 说明
    RADIUS认证与授权结合,不能分离,认证成功授权也成功。采用RADIUS认证时,不需要配置授权方案。 ::: 除此之外,对于管理员用户(即Login用户),通常使用“认证+权限级别”的方法控制用户访问设备,提高对设备操作的安全性。其中,认证用来限制对网络设备的访问;权限级别定义用户登录到网络设备后可以执行的命令。

    授权方法的生效顺序
    授权方案中可以指定一种或者多种授权方法。指定多种授权方法时,配置顺序决定了每种授权方法生效的顺序,配置在前的授权方法优先生效。当前面的授权方法无响应时,后面的授权方法才会启用。如果前面的授权方法回应授权失败,表示AAA服务器拒绝为用户提供服务。此时,授权结束,后面的授权方法不会被启用。

    授权信息
    授权信息分为两类:服务器下发的授权信息和域下的授权信息。用户从何处获取授权与授权方案中配置的授权方法有关。如下图所示:

  • 授权方法为本地授权时,用户从域下获取授权信息。

  • 授权方法为服务器授权时,用户从服务器和域下获取授权信息。域下配置的授权信息比服务器下发的授权信息优先级低,如果两者的授权信息冲突,则服务器下发的授权优先生效;如果两者的授权信息不冲突,则两者的授权信息同时生效。这样处理可以通过域管理进行灵活授权,而不必受限于服务器提供的授权。

image.png
服务器常用的授权信息

授权信息 说明
ACL编号 服务器下发ACL编号,NAS设备需要配置该ACL编号对应的规则。
ACL规则 服务器直接下发ACL规则,用户能够访问ACL所包括的网络资源。
NAS设备上不需要配置对应的ACL。
VLAN 服务器上配置了动态VLAN下发功能,则授权信息中含有下发的VLAN属性,NAS设备在接收到下发的VLAN属性后,会将用户所属的VLAN修改为下发VLAN。
授权下发的VLAN并不改变接口的配置,也不影响接口的配置。但是,授权下发的VLAN的优先级高于用户配置的VLAN,即通过认证后起作用的VLAN是授权下发的VLAN,用户配置的VLAN在用户下线后生效。
用户组/UCL组 服务器向NAS设备下发用户组名、UCL组名或者UCL组ID,NAS设备上需要配置对应的组及组内的网络资源。
CAR 服务器下发授权,控制用户接入到NAS设备或者NAS设备到用户的平均速率(CIR)、峰值速率(PIR)、承诺突发尺寸(CBS)和峰值突发尺寸(PBS)。
管理员用户级别 服务器下发管理用户(例如Telnet用户)的优先级,有效值范围0~15。授权大于等于16的为无效值。
业务方案 服务器下发业务方案名称,NAS设备上需要配置对应的业务方案及其下的网络授权和策略
闲置切断 服务器下发闲置切断时间,用户上线后,如果连续无操作或者流量低于某个设置值的时长超过该时间,则断开用户连接。
重认证、强制用户下线 服务器下发为用户提供服务的剩余时长,时间到达后,根据服务器下发的动作对用户重认证或者强制用户下线。

域下支持配置的授权信息

授权参数 说明
VLAN 部署简单,维护成本也较低,由于其控制粒度在VLAN层面,适用于在同一办公室或同一部门所有人员权限相同的场景。
本地授权时,仅需在NAS设备上配置VLAN及VLAN内的网络资源。
不支持为在线Portal用户授权VLAN。对于MAC优先的Portal认证,Portal认证成功后,V1版本的Agile Controller-Campus授权session timeout属性让用户立刻下线,然后再通过MAC认证上线授权VLAN。
用户获取VLAN授权后,需要手动触发DHCP申请IP地址。
业务方案 业务方案及业务方案所包括的网络资源需要在NAS设备上配置。
用户组(传统模式) 用户组指具有相同角色、相同权限等属性的一组用户(终端)的集合。例如,园区网中可以根据企业部门结构划分研发组、财务组、市场组、访客组等部门用户组,对于不同部门可授予不同安全策略。
用户组及用户组内的网络资源需要在NAS设备上配置。
UCL组(统一模式) UCL组是一种用户类别的标记。借助UCL组管理员可以将具有相同网络访问策略的一类用户划分为同一个组,然后为其部署一组网络访问策略即能满足该类别所有用户的网络访问需求。
UCL组及UCL组内的网络资源需要在NAS设备上配置。

2.2.3 计费方案

计费方案用来定义用户计费时使用的计费方法。计费方案应用到域,与域下的认证方案、授权方案、服务器模板等配置结合,实现对用户进行认证、授权和计费。
设备支持的计费方法 :::success

  • RADIUS计费:由RADIUS服务器对用户进行计费。
  • HWTACACS计费:由HWTACACS服务器对用户进行计费。
  • 不计费:不对用户计费。 ::: 计费方法的生效顺序
    计费方案中只能指定一种计费方法。
    从RADIUS报文介绍中的RADIUS计费报文可以看出,计费报文分为计费请求报文(Accounting-Request)和计费响应报文(Accounting-Response)。设备每发送一个计费请求报文,如果收到服务器回应的计费响应报文则代表计费成功;如果没有收到服务器回应的计费响应报文则代表计费失败。

计费功能使能后,设备会将用户的活动通过计费请求报文(Accounting-Request)发送给AAA服务器,AAA服务器根据报文中的信息对用户进行计费和审计。以RADIUS计费为例,计费请求报文分为三类:

  • 计费开始请求报文:用户认证成功开始访问网络资源时,设备向RADIUS服务器发送计费开始请求报文;
  • 计费结束请求报文:用户断开连接时(连接也可以由接入服务器断开),设备向服务器发送计费结束请求报文
  • 实时计费请求报文:为减少计费误差、避免计费服务器无法收到计费停止请求报文而继续对该用户计费,可以在设备上配置实时计费功能,此后设备将周期性的向RADIUS服务器发送实时计费请求报文。

正常情况下,设备每发送一个计费请求报文(Accounting-Request),服务器都会回应一个计费响应报文(Accounting-Response)。由于网络故障等原因,设备没有收到对应的计费响应报文时,称之为计费失败。在计费失败时,设备根据计费请求报文的类型对用户能否在线做出相应的处理,具体如下:

  • 开始计费失败:默认使用户下线。
  • 实时计费失败:默认允许用户在线。
  • 结束计费失败:重传计费结束请求报文。

2.3 本地授权和认证

本地AAA服务器
设备作为AAA服务器时被称为本地AAA服务器,本地AAA服务器支持对用户进行认证和授权,不支持对用户进行计费。
与远端AAA服务器相似,本地AAA服务器需要配置本地用户的用户名、密码、授权信息等。使用本地AAA服务器进行认证和授权比远端AAA服务器的速度快,可以降低运营成本,但是存储信息量受设备硬件条件限制。
本地用户的密码策略 :::success 密码长度和密码复杂度
管理员在创建本地用户时,设备命令行已经对本地用户密码的长度和复杂度做了控制。其中,复杂度检查建议密码至少包含小写字母、大写字母、数字、特殊字符这四种形式中的两种,同时密码长度不小于8个字符。 :::

密码有效期 开启本地管理员密码策略后,本地管理员用户可以设置密码有效期,有效期默认为90天、支持修改。 如果密码已经过期,有用户继续通过此密码登录设备时,设备提示用户密码已过期、是否修改密码,并根据用户的选择进行不同的处理:

  • 如果用户选择修改,则用户需要按照先后顺序输入旧密码、新密码、确认新密码。只有旧密码正确,新密码和确认新密码输入一致并符合要求(密码长度、复杂度等)时,密码才能修改成功。
  • 如果用户选择不修改或者修改失败,则不允许用户登录。

同时,设备还支持密码过期前提醒功能。当用户登录设备时,设备会判断该用户的密码距离过期的时间是否在提醒时间范围内。如果在提醒时间范围内,设备会提示该密码还有多久过期,并询问用户是否修改密码:

  • 如果用户选择修改,则记录新的密码以及修改密码的时间。
  • 如果用户选择不修改或者修改失败,则在密码未过期的情况下仍可以正常登录。

密码修改策略

  • 修改密码时不建议使用以前使用过的密码,默认新密码不得与前5次使用过的密码重复。
  • 本地管理员可以修改同级别或者低级别本地用户的密码。

2.4 RADIUS认证、授权和计费


2.4.1 RADIUS概述

AAA可以通过多种协议来实现,在实际应用中,最常使用RADIUS协议。 :::success RADIUS是一种分布式的、客户端/服务器结构的信息交互协议,能保护网络不受未授权访问的干扰,常应用在既要求较高安全性、又允许远程用户访问的各种网络环境中。该协议定义了基于UDP(User Datagram Protocol)的RADIUS报文格式及其传输机制,并规定目的UDP端口号1812、1813分别作为默认的认证、计费端口号。 ::: RADIUS最初仅是针对拨号用户的AAA协议,后来随着用户接入方式的多样化发展,RADIUS也适应多种用户接入方式,如以太网接入等。它通过认证授权来提供接入服务,通过计费来收集、记录用户对网络资源的使用。
RADIUS协议的主要特征如下:

  • 客户端/服务器模式
  • 安全的消息交互机制
  • 良好的扩展性

    客户端/服务器模式

  • RADIUS客户端

一般位于网络接入服务器NAS(Network Access Server)上,可以遍布整个网络,负责传输用户信息到指定的RADIUS服务器,然后根据从服务器返回的信息进行相应处理(如接受/拒绝用户接入)。

  • 设备作为RADIUS协议的客户端,实现以下功能:
    • 支持标准RADIUS协议及扩充属性,包括RFC2865、RFC2866。
    • 支持华为RADIUS扩展属性。
    • 对RADIUS服务器状态探测功能。
    • 计费结束请求报文的本地缓存重传功能。
    • RADIUS服务器主备或负载分担功能。
  • RADIUS服务器

一般运行在中心计算机或工作站上,维护相关的用户认证和网络服务访问信息,负责接收用户连接请求并认证用户,然后给客户端返回所有需要的信息(如接受/拒绝认证请求)。RADIUS服务器通常要维护三个数据库,如下图所示。
image.png

  • Users:用于存储用户信息(如用户名、密码以及使用的协议、IP地址等配置信息)。
  • Clients:用于存储RADIUS客户端的信息(如共享密钥、IP地址等)。
  • Dictionary:用于存储RADIUS协议中的属性和属性值含义的信息。

    安全的消息交互机制
    RADIUS客户端和RADIUS服务器之间认证消息的交互是通过共享密钥的参与来完成的。共享密钥是一个带外传输的、客户端和服务器都知道的字符串,不需要单独进行网络传输。RADIUS报文中有一个16字节的验证字字段,它包含了对整个报文的数字签名数据,该签名数据是在共享密钥的参与下利用MD5算法计算得出。收到RADIUS报文的一方要验证该签名的正确性,如果报文的签名不正确,则丢弃它。通过这种机制,保证了RADIUS客户端和RADIUS服务器之间信息交互的安全性。另外,为防止用户密码在不安全的网络上传递时被窃取,在RADIUS报文传输过程中还利用共享密钥对用户密码进行了加密。

    良好的拓展性
    RADIUS报文是由报文头和一定数目的属性(Attribute)构成,新属性的加入不会破坏协议的原有实现。

2.4.2 RADIUS报文介绍


RADIUS报文介绍
RADIUS协议是基于UDP协议的,RADIUS报文格式如下图所示。
image.png
各字段的解释如下:

  • Code:长度为1个字节,用来说明RADIUS报文的类型。不同RADIUS报文的Code值不相同。例如,Code为1时表示Access-Request报文,Code为2时表示Access-Accept报文。
  • Identifier:长度为1个字节,用来匹配请求报文和响应报文,以及检测在一段时间内重发的请求报文。RADIUS客户端发送请求报文后,RADIUS服务器返回的响应报文中的Identifier值应与请求报文中的Identifier值相同。
  • Length:长度为2个字节,用来指定RADIUS报文的长度。超过Length取值的字节将作为填充字符而忽略。如果接收到的报文的实际长度小于Length的取值,则该报文会被丢弃。
  • Authenticator:长度为16个字节,用来验证RADIUS服务器的响应报文,同时还用于用户密码的加密。
  • Attribute:即RADIUS属性字段,长度不定,为报文的内容主体,用来携带专门的认证、授权和计费信息,提供请求和响应报文的配置细节。Attribute可以包括多个RADIUS属性,每一个RADIUS属性都采用(Type、Length、Value)三元组的结构来表示,具体请参见RADIUS属性。

    RADIUS报文类型
    目前RADIUS定义了十六种报文类型,其中认证报文类型如表1所示,计费报文类型如表2所示。
    表1 RADIUS认证报文

报文名称 说明
Access-Request 认证请求报文,是RADIUS报文交互过程中的第一个报文,用来携带用户的认证信息(例如:用户名、密码等)。认证请求报文由RADIUS客户端发送给RADIUS服务器,RADIUS服务器根据该报文中携带的用户信息判断是否允许接入。
Access-Accept 认证接受报文,是RADIUS服务器对RADIUS客户端发送的Access-Request报文的接受响应报文。如果Access-Request报文中的所有属性都可以接受(即认证通过),则发送该类型报文。RADIUS客户端收到此报文后,用户才能认证通过并被赋予相应的权限。
Access-Reject 认证拒绝报文,是RADIUS服务器对RADIUS客户端的Access-Request报文的拒绝响应报文。如果Access-Request报文中的任何一个属性不可接受(即认证失败),则RADIUS服务器返回Access-Reject报文,用户认证失败。
Access-Challenge 认证挑战报文。EAP中继认证时,RADIUS服务器接收到Access-Request报文中携带的用户名信息后,会随机生成一个MD5挑战字,同时将此挑战字通过Access-Challenge报文发送给用户。用户使用该挑战字对用户密码进行加密处理后,将新的用户密码信息通过Access-Request报文发送给RADIUS服务器。RADIUS服务器将收到的已加密的密码信息和本地经过加密运算后的密码信息进行对比,如果相同,则该用户为合法用户。

表2 RADIUS计费报文

报文名称 说明
Accounting-Request(Start) 计费开始请求报文。如果RADIUS客户端使用RADIUS模式进行计费,RADIUS客户端会在用户开始访问网络资源时,向RADIUS服务器发送计费开始请求报文。
Accounting-Response(Start) 计费开始响应报文。RADIUS服务器接收并成功记录计费开始请求报文后,需要回应一个计费开始响应报文。
Accounting-Request(Interim-update) 实时计费请求报文。为避免RADIUS服务器无法收到计费结束请求报文而继续对该用户计费,可以在RADIUS客户端上配置实时计费功能。RADIUS客户端定时向RADIUS服务器发送实时计费请求报文,减少计费误差。
Accounting-Response(Interim-update) 实时计费响应报文。RADIUS服务器接收并成功记录实时计费请求报文后,需要回应一个实时计费响应报文。
Accounting-Request(Stop) 计费结束请求报文。当用户断开连接时(连接也可以由NAS断开),RADIUS客户端向RADIUS服务器发送计费结束请求报文,其中包括用户上网所使用的网络资源的统计信息(上网时长、进/出的字节数等),请求RADIUS服务器停止计费。
Accounting-Response(Stop) 计费结束响应报文。RADIUS服务器接收计费停止请求报文后,需要回应一个计费停止响应报文。

2.4.3 RADIUS认证、授权、计费流程

设备作为RADIUS客户端,负责收集用户信息(例如:用户名、密码等),并将这些信息发送到RADIUS服务器。RADIUS服务器则根据这些信息完成用户身份认证以及认证通过后的用户授权和计费。用户、RADIUS客户端和RADIUS服务器之间的交互流程如下图所示。
image.png

  1. 当用户接入网络时,用户发起连接请求,向RADIUS客户端(即设备)发送用户名和密码。
  2. RADIUS客户端向RADIUS服务器发送包含用户名和密码信息的认证请求报文。
  3. RADIUS服务器对用户身份的合法性进行检验:
    • 如果用户身份合法,RADIUS服务器向RADIUS客户端返回认证接受报文,允许用户进行下一步动作。由于RADIUS协议合并了认证和授权的过程,因此认证接受报文中也包含了用户的授权信息。
    • 如果用户身份不合法,RADIUS服务器向RADIUS客户端返回认证拒绝报文,拒绝用户访问接入网络。
  4. RADIUS客户端通知用户认证是否成功。
  5. RADIUS客户端根据接收到的认证结果接入/拒绝用户。如果允许用户接入,则RADIUS客户端向RADIUS服务器发送计费开始请求报文。
  6. RADIUS服务器返回计费开始响应报文,并开始计费。
  7. 用户开始访问网络资源。
  8. (可选)在使能实时计费功能的情况下,RADIUS客户端会定时向RADIUS服务器发送实时计费请求报文,以避免因付费用户异常下线导致的不合理计费。
  9. (可选)RADIUS服务器返回实时计费响应报文,并实时计费。
  10. 用户发起下线请求,请求停止访问网络资源。
  11. RADIUS客户端向RADIUS服务器提交计费结束请求报文。
  12. RADIUS服务器返回计费结束响应报文,并停止计费。
  13. RADIUS客户端通知用户访问结束,用户结束访问网络资源。

2.4.4 RADIUS报文重传机制

:::success 用户认证过程中,设备会发送认证请求报文到RADIUS服务器。为避免由于网络故障、时延等原因导致设备无法收到服务器的回应报文,设备在发送认证请求报文到服务器时具有超时重传超时机制,重传次数和重传间隔通过定时器进行控制。 ::: 如下图所示,以802.1X认证、客户端主动发起认证为例,设备收到包含客户端用户名信息的EAP报文(EAP-Response/Identity)之后,将EAP报文封装在RADIUS认证请求报文(RADIUS Access-Request)中发送给RADIUS服务器处理,同时开启重传定时器。重传定时器由重传间隔时间和重传次数构成,如果达到重传间隔时间,设备未收到RADIUS服务器的回应报文,会再次发送认证请求报文。
image.png
满足以下任意一个条件,设备停止重传: :::success

  • 收到RADIUS服务器的回应报文。收到RADIUS服务器的回应报文后,设备会停止重传,此时设备标记RADIUS服务器的状态为Up。
  • 探测到RADIUS服务器的状态为Down。设备将RADIUS服务器的状态置为Down后:
    • 如果达到最大重传次数,则停止重传,RADIUS服务器的状态为Down。
    • 如果还没有达到最大重传次数,设备会再重传一次认证请求报文到RADIUS服务器。相当于给状态为Down的服务器一次机会。如果收到RADIUS服务器的回应报文,停止重传,并将RADIUS服务器的状态恢复为Up;如果未收到RADIUS服务器的回应报文,也停止重传,RADIUS服务器的状态为Down。
  • 达到最大重传次数。达到最大重传次数后,设备会停止重传,此时:

    • 如果收到RADIUS服务器的回应报文,此时设备标记RADIUS服务器的状态为Up。
    • 如果已经探测到RADIUS服务器的状态为Down,设备将服务器的状态置为Down。
    • 如果没收到RADIUS服务器的回应报文也没有探测到服务器的状态为Down,此时,设备不会切换服务器的状态,服务器实际上没有响应。 ::: :::warning 医疗_消息.png 说明
  • 服务器无响应不等同于Down状态,只有满足置Down的条件,设备才会将服务器标记为Down状态。 ::: RADIUS报文重传是针对一个服务器而言的,如果RADIUS服务器模板中配置了多个服务器,整体重传时间取决于重传间隔、重传次数、RADIUS服务器的状态、服务器的个数以及选择服务器的算法。

命令 说明
radius-server retransmit retry-times 重传次数,默认值为3。
radius-server timeout time-value 重传间隔,默认值为5秒。

2.4.5 RADIUS服务器选择机制

大型企业网络中通常会部署多台RADIUS服务器,这样做的目的一是为了在一台服务器故障的情况下,不会影响用户接入;二是为了在大量用户接入时,多个服务器之间能够负载均衡,单个服务器的资源不会被耗尽。当RADIUS服务器模板中配置了多个服务器,设备在向服务器发送报文时,根据命令行的配置通过以下其中一种机制选择RADIUS服务器:

  • RADIUS服务器主备算法(缺省配置)
  • RADIUS服务器负载均衡算法 :::success 另外,RADIUS服务器的运算法则可以配置为基于单个用户的也可以配置为基于报文的。如果配置为基于单个用户的运算法则,认证阶段会保存认证服务器的信息,如果认证服务器同时也是计费服务器,则计费阶段优先向该服务器发送计费请求;如果配置为基于报文的运算法则,认证阶段不会保存认证服务器的信息,在计费阶段会重新选择计费服务器,可能存在同一个用户的认证和计费不在同一个服务器上的问题。 ::: RADIUS服务器主备算法
    主备顺序根据配置RADIUS认证服务器或RADIUS计费服务器时的权重决定,权重值较大者为主,如果权重值相同,则先配置的服务器为主。如下图所示,在所有状态为Up的服务器中,优先向主服务器发送认证或计费报文,如果主服务器没有回应,则向备服务器发送。
    image.png
    RADIUS服务器负载均衡算法
    选择负载均衡算法后,设备在向服务器发送认证或计费报文时,会根据配置RADIUS认证服务器或RADIUS计费服务器时的权重来分配报文发送的服务器。如下图所示,RADIUS服务器1的状态为Up、权重为80,RADIUS服务器2的状态为Up、权重为20。则设备向RADIUS服务器1发送报文的概率为80/(80+20)=80%,设备向RADIUS服务器2发送报文的概率20/(80+20)=20%。
    image.png
    如果设备在发送报文的过程中,所有状态为Up的服务器均没有回应,此后,设备在原先为Down状态的服务器(此前没有向这部分服务器发送认证或计费报文)中,按照权重值,再发送一次报文。如果设备没有收到任何服务器的回应报文,则跳转到备份认证方式,比如本地认证。备份方式需要在认证方案中配置,如果未配置,则本次认证流程结束。

2.4.6 RADIUS服务器状态探测

:::success RADIUS服务器的可用性和可维护性是用户接入认证的基本条件,当设备与RADIUS服务器之间无法通信时,RADIUS服务器不能对用户进行认证和授权。为了解决该问题,设备支持在RADIUS服务器Down时的用户逃生功能,即RADIUS服务器Down后,用户无法获取服务器授权时,仍能够具有一定的网络访问权限。 ::: 但是,RADIUS服务器Down时的用户逃生功能必须在设备将RADIUS服务器的状态标记为Down后才能启用。如果RADIUS服务器的状态没有标记为Down、设备又不能与RADIUS服务器正常通信,这会导致用户既获取不到服务器授权也不能进行逃生,进而造成用户没有任何网络访问权限。所以,设备必须及时感知到RADIUS服务器的状态,在RADIUS服务器状态为Down时,使用户能够获取逃生权限;在RADIUS服务器状态恢复Up后,用户退出逃生权限,进行重认证。
RADIUS服务器的状态
设备将RADIUS服务器的状态分为三种,三种状态的含义及出现的场景如下表所示。

状态 RADIUS服务器是否可用 出现该状态的场景
Up RADIUS服务器可用
- RADIUS服务器的初始状态
- 设备收到RADIUS服务器的报文
Down RADIUS服务器不可用 满足将RADIUS服务器的状态标记为Down的条件
Force-up(强制Up) 在没有可用的RADIUS服务器时,
会选择Force-up状态的服务器
dead-time定时器超时

:::success RADIUS服务器的初始状态被标记为Up。在收到RADIUS认证请求报文、并且满足将RADIUS服务器的状态标记为Down的条件时,RADIUS服务器的状态被切换为Down。触发状态切换的RADIUS认证请求报文可以是用户认证过程中发送的,也可以是管理员构造的,比如执行test-aaa命令时发送的测试报文或者自动探测时发送的探测报文。 ::: 以下几种情形下,设备会将RADIUS服务器的状态由Down切换为Up或者Force-up:

  • dead-time定时器超时,将RADIUS服务器的状态由Down切换为Force-up:设备在将RADIUS服务器的状态标记为Down后就会启动dead-time定时器,该定时器定义了Down状态可持续的时长。定时器超时后,设备将服务器的状态标记为Force-up。之后,如果有新用户需要通过RADIUS方式进行认证,在没有可用的RADIUS服务器的情况下,设备会尝试和Force-up状态的服务器重新建立连接。
  • 设备收到RADIUS服务器的报文,将RADIUS服务器的状态由Down切换为Up。例如,配置自动探测后,设备收到RADIUS服务器的响应报文。

    将RADIUS服务器的状态标记为Down的条件
    能否将一个RADIUS服务器的状态标记为Down,与以下因素有关:

  • RADIUS服务器最大无响应时长(max-unresponsive-interval的取值)

  • RADIUS请求报文发送的次数
  • RADIUS请求报文发送的时间间隔
  • RADIUS服务器的探测周期
  • RADIUS服务器探测周期循环次数
  • RADIUS服务器在每个探测周期内连续无响应最大次数

将RADIUS服务器的状态标记为Down的条件分为两种,只要满足其中一种,RADIUS服务器的状态就会被标记为Down。下图为将RADIUS服务器的状态标记为Down的逻辑流程图,以探测周期循环两次为例:

  • 在RADIUS服务器状态探测过程中,将RADIUS服务器标记为Down状态。 :::success 系统启动后,RADIUS服务器状态探测定时器开始运行。从设备发送第一个RADIUS认证请求报文开始计算,如果设备一直没有收到RADIUS服务器的报文,并且在一个探测周期内满足条件:未收到RADIUS服务器报文的次数(n)大于或等于连续无响应的最大次数(dead-count),则记录一次通讯中断。在持续没有收到RADIUS服务器报文的情况下,探测周期循环几次,就在第几次记录通讯中断时将RADIUS服务器标记为Down。 :::

  • 将长时间无响应的RADIUS服务器标记为Down状态。 :::success 在用户接入频率较低、设备收到用户认证请求报文较少、RADIUS服务器状态探测过程中将RADIUS服务器标记为Down的条件无法满足的情况下,连续两个无响应的认证请求报文的时间间隔大于max-unresponsive-interval时,RADIUS服务器被标记为Down,此机制能够确保用户获取逃生授权。 ::: :::warning 如果RADIUS服务器模板中配置了多个服务器,整体状态探测的时间与服务器的个数以及选择服务器的算法有关。当用户终端使用客户端软件进行认证时,如果终端客户端软件的超时等待时间小于所有整体状态探测时间的总和,可能导致终端客户端软件反复拨号而无法接入网络;另外如果配置了用户逃生,为了使用户能够正常加入逃生权限,也需要整体状态探测时间的总和小于终端客户端软件的超时等待时间。 ::: image.png

命令 说明
radius-server { dead-interval dead-interval | dead-count dead-count | detect-cycle detect-cycle} 在RADIUS服务器状态探测过程中,将RADIUS服务器的状态标记为Down的条件。
- dead-interval dead-interval:探测周期,默认值为5秒。
- dead-count dead-count:连续无响应的最大次数,默认值为2次。
- detect-cycle detect-cycle:探测周期循环次数,默认为2个周期。
radius-server max-unresponsive-interval interval RADIUS服务器无响应的最大时长。默认为300秒。
连续两个无响应的认证请求报文的时间间隔大于max-unresponsive-interval时,则将RADIUS服务器的状态标记为Down。
radius-server dead-time dead-time RADIUS服务器Down状态可持续的时长。
dead-time:设备将RADIUS服务器的状态标记为Down后,等待设置的dead-time时间,设备会将服务器的状态设置Force-up。默认值为5分钟

自动探测
RADIUS服务器的状态被标记为Down后,通过自动探测功能可以检测RADIUS服务器的可达性。 :::success 自动探测功能需要手动开启。开启自动状态探测功能只需在设备的RADIUS服务器模板视图下配置自动探测用户名和密码,在RADIUS服务器上不需要配置此自动探测用户名和密码。认证无需成功,设备能收到认证失败响应报文就能证明RADIUS服务器是正常工作的。 ::: 开启自动状态探测功能后,按照RADIUS服务器状态的差异,自动探测可以分为以下三种情况:

服务器的状态 是否支持自动探测 何时发送自动探测报文 服务器状态切换的条件
Down状态 缺省支持 自动探测周期过后发送 在探测报文的超时等待时间内,如果设备收到了RADIUS服务器的报文,会将RADIUS服务器的状态标记为Up;反之,则保持RADIUS服务器的状态为Down。
Up状态 通过命令行radius-server detect-server up-server interval开启 自动探测周期过后发送 满足将RADIUS服务器的状态标记为Down的条件,则将RADIUS服务器的状态标记为Down;反之,则保持RADIUS服务器的状态为Up。
Force-up状态 缺省支持 立即发送 在超时等待时间内,如果收到RADIUS服务器的报文,设备会将RADIUS服务器的状态标记为Up;反之,则将RADIUS服务器的状态标记为Down。

:::warning 医疗_消息.png 说明
在大型企业网络中,不建议开启对Up状态的RADIUS服务器进行自动探测的功能。这是由于如果多个NAS设备均开启该功能,RADIUS服务器在处理用户认证请求报文的同时还会收到大量周期性的探测报文,会降低RADIUS服务器的处理性能。
配置自动探测功能(命令radius-server testuser)后,dead-time定时器(命令radius-server dead-time)不生效。 ::: | 命令 | 说明 | | —- | —- | | radius-server testuser username user-name password cipher password | 开启自动探测功能:
- user-name:自动探测用户名。
- password:自动探测用户密码。
| | radius-server detect-server
interval interval | 状态为Down的RADIUS服务器的自动探测周期,默认为60秒。 | | radius-server detect-server
up-server interval interval | 开启状态为Up的RADIUS服务器的自动探测功能并配置自动探测周期。探测周期默认为0秒,即不对状态为Up的RADIUS服务器进行自动探测。 | | radius-server detect-server
timeout time-value | 自动探测报文的超时等待时间,默认为3秒。 |

将RADIUS服务器标记为Down后的操作
设备将RADIUS服务器的状态标记为Down之后,通过配置逃生功能,使用户能够进入逃生授权。设备探测到RADIUS服务器状态恢复为Up后,通过配置重认证功能,使用户重认证获取RADIUS服务器授权,如下图所示。 :::warning 医疗_消息.png 说明
RADIUS服务器的状态恢复为Up后,对于802.1X认证用户和MAC认证用户,用户会退出逃生授权并进行重认证;对于Portal认证用户,用户会进入预连接授权,在用户访问网络资源时,才会触发重定向到Portal服务器进行认证。
配置自动探测功能(命令radius-server testuser)后,dead-time定时器(命令radius-server dead-time)不生效。 ::: image.png
RADIUS服务器Down时逃生权限的配置命令以及重认证功能相关命令如下表所示。

命令 说明
authentication eventauthen-server-downaction authorize { vlanvlan-id | service-scheme service-scheme-name | ucl-group ucl-group-name } [ response-fail ] 配置RADIUS服务器Down时的逃生功能。
authentication event authen-server-up action re-authen 配置RADIUS服务器恢复为Up时,设备对逃生状态的用户进行重认证。

2.5 HWTACACS认证、授权、计费


2.5.1 HWTACACS概述

:::success 华为终端访问控制器控制系统协议HWTACACS是在TACACS(RFC 1492)基础上进行了功能增强的安全协议。HWTACACS是一种集中式的、客户端/服务器结构的信息交互协议,使用TCP协议传输,TCP端口号为49。HWTACACS提供的认证、授权和计费服务相互独立,能够在不同的服务器上实现。HWTACACS兼容Cisco的TACACS+协议,华为交换机作为HWTACACS客户端可以和TACACS+服务器对接实现AAA功能。如设备使用HWTACACS协议时支持与思科服务器(如ACS)对接,但HWTACACS与思科的私有属性不一定能够兼容,原因是不同厂商在私有属性的字段定义和解释上存在区别。 ::: HWTACACS协议主要用于采用点对点协议PPP(Point-to-Point Protocol)或虚拟私有拨号网络VPDN(Virtual Private Dial-up Network)方式接入Internet的接入用户以及对设备进行操作的管理用户的认证、授权和计费。
HWTACACS协议与RADIUS协议的相似点包括: :::success

  • 结构上都采用客户端/服务器模式。
    • HWTACACS客户端:一般位于网络接入服务器NAS(Network Access Server)上,可以遍布整个网络,负责传输用户信息到指定的HWTACACS服务器,然后根据从服务器返回的信息进行相应处理。
    • HWTACACS服务器:一般运行在中心计算机或工作站上,维护相关的用户认证和网络服务访问信息,负责接收用户连接请求并认证用户,然后给客户端返回所有需要的信息。
  • 都使用共享密钥对传输的用户信息进行加密。
  • 都有较好的灵活性和可扩展性。 ::: 与RADIUS相比,HWTACACS具有更加可靠的传输和加密特性,更加适合于安全控制。HWTACACS协议与RADIUS协议的主要区别如下表所示。
项目 HWTACACS RADIUS
数据传输 通过TCP传输,网络传输更可靠。 通过UDP传输,网络传输效率更高。
加密方式 除了标准的HWTACACS报文头,对报文主体全部进行加密。 只是对认证报文中的密码字段进行加密。
认证和授权 认证与授权分离,使得认证、授权服务可以在不同的安全服务器上实现。例如,可以用一台HWTACACS服务器进行认证,另外一台HWTACACS服务器进行授权。 认证与授权结合,不能分离。
命令行授权 支持对设备上的配置命令进行授权使用。即用户可使用的命令行受到命令级别和AAA授权的双重限制,某一级别的用户输入的每一条命令都需要通过HWTACACS服务器授权,如果授权通过,命令才可以被执行。 不支持对设备上的配置命令进行授权使用。用户登录设备后可以使用的命令行由用户级别决定,用户只能使用级别等于或低于用户级别的命令行。
应用场景 适于进行安全控制。 适于进行计费。

2.5.2 HWTACACS报文介绍

HWTACACS报文与RADIUS报文的格式不同。所有RADIUS报文均采用相同的报文格式,而HWTACACS报文除了具有相同的报文头之外,认证、授权和计费报文的格式均不同。
HWTACACS报文头
image.png

字段 含义
major version HWTACACS协议主版本号,当前版本号为0xc。
minor version HWTACACS协议次版本号,当前版本号为0x0。
type HWTACACS协议报文类型,包括认证(0x01)、授权(0x02)和计费(0x03)。
seq_no 对于同一个会话,当前报文的序列号,取值范围为1~254。
flags 报文主体加密标记,目前只支持8位中的第1位,0表示对报文主体加密,1表示不对报文主体加密。
session_id 会话ID,当前会话的唯一标识。
length HWTACACS报文主体的长度,不包括报文头。

HWTACACS认证报文格式
HWTACACS认证报文包括三种类型: :::success

  • 认证开始报文Authentication Start:认证开始时,客户端向服务器发送认证开始报文,该报文中包括认证类型、用户名和一些认证数据。
  • 认证持续报文Authentication Continue:客户端接收到服务器回应的认证回应报文后,如果确认认证过程没有结束,则使用认证持续报文响应。
  • 认证回应报文Authentication Reply:服务器接收到客户端发送的认证开始报文或认证持续报文后,向客户端发送的唯一一种认证报文,用于向客户端反馈当前认证的状态。 ::: image.png
字段 含义
action 具体的认证操作,目前只支持“认证登录(0x01)”。
priv_lvl 用户级别,取值范围是0~15。
authen_type 认证的类型,目前设备仅支持:
- CHAP(0x03)
- PAP(0x02)
- ASCII(0x01)
service 请求认证的服务类型,当前版本支持PPP(0x03)、LOGIN(0x01)、ENABLE(0x02)、NONE(0x00)四种服务类型,分别对应PPP用户、管理员用户、管理员用户级别提升认证和其他用户。
user len 登录用户输入的用户名长度。
port len port字段的长度。
rem_addr len rem_addr字段的长度。
data len 认证数据区的长度。
user 请求认证的用户名,最大长度为129。
port 请求认证的用户接口名,最大长度为47。
- 对于管理员用户,该字段是指用户终端接口(例如“console0”、“vty1”等)。例如,Telnet用户的authen_type为ASCII,service为LOGIN,port为vtyx。
- 对于其他用户,该字段是指用户接入的接口名称。
rem_addr 登录用户的IP地址。
data 认证数据区,根据action和authen_type的不同封装不同的数据。例如PAP认证时,该字段内容为PAP显式密码。

image.png

字段 含义
user_msg len 登录用户输入的字符串长度。
data len 认证数据区的长度。
flags 认证持续标记,0表示认证过程持续,1表示认证过程终止。
user_msg 登录用户输入的字符串,用于回应认证回应报文中的server_msg字段,向服务器提供用户登录时输入的密码。
data 认证数据区,根据action和authen_type的不同封装不同的数据。例如PAP认证时,该字段内容为PAP显式密码。

image.png

字段 含义
status 认证的状态,包括:
- 认证成功PASS(0x01)
- 认证失败FAIL(0x02)
- 请求用户信息GETDATA(0x03)
- 请求用户名GETUSER(0x04)
- 请求密码GETPASS(0x05)
- 请求重新发起认证开始RESTART(0x06)
- 服务器收到认证报文有误ERROR(0x07)
- 服务器要求重新进行认证过程FOLLOW(0x21)
flags 控制客户端是否将用户输入的密码回显。如果该标志位置1,则用户输入的密码不会回显。
server_msg len server_msg字段的长度。
data len 认证数据区的长度。
server_msg 可选字段,用于服务器将一些附加信息带给用户。
data 认证数据区,用于向客户端提供一些信息。

HWTACACS授权报文格式
HWTACACS授权报文包括两种类型: :::success

  • 授权请求报文Authorization Request:HWTACACS的认证和授权是分离的,用户可以使用HWTACACS认证而使用其他协议进行授权。如果需要通过HWTACACS进行授权,则客户端向服务器发送授权请求报文,该报文中包括了授权所需的一切信息。
  • 授权回应报文Authorization Response:服务器接收到授权请求报文后,向客户端发送授权回应报文,该报文中包括了授权的结果。 ::: image.png :::warning 医疗_消息.png 说明
    privlvl字段、authen_type字段、authen_service字段、user len字段、port len字段、rem_addr len字段、port字段、rem_addr字段的含义和HWTACACS认证开始报文一致,此处不再赘述。 ::: | 字段 | 含义 | | —- | —- | | authen_method | 指定用户的认证方式,包括:
    - 没有设置认证方式(0x00)
    - 不认证(0x01)
    - 本地认证(0x05)
    - HWTACACS认证(0x06)
    - RADIUS认证(0x10)
    | | authen_service | 请求认证的服务类型,当前版本支持PPP(0x03)、LOGIN(0x01)和NONE(0x00)三种服务类型,分别对应PPP用户、管理员用户和其他用户。 | | arg_cnt | 授权请求报文中携带的属性数。 | | argN | 指定授权请求报文的属性。包括:
    - cmd:请求授权的命令行的第一个参数。
    - cmd-arg:请求授权的命令行参数。固定格式为“cmd-arg=
    命令行参数”,最后一个命令行参数后需要再封装一个“cmd-arg=”结尾。“cmd-arg=命令行参数_”的总长度不能超过255个字节,每个命令行参数不能超过247个字节。
    |

image.png

字段 含义
status 指定用户的授权状态,包括:
- 授权通过(0x01)
- 授权请求报文中的属性被TACACS服务器修改(0x02)
- 授权失败(0x10)
- 授权服务器上出现了错误(0x11)
- 重新指定授权服务器(0x21)
arg_cnt 授权回应报文中携带的授权属性数。
argN 指定HWTACACS授权服务器下发的授权属性。

HWTACACS计费报文格式
HWTACACS计费报文包括两种类型: :::success

  • 计费请求报文Accounting Request:该报文中包括了计费所需的信息。
  • 计费回应报文Accounting Response:服务器接收并成功记录计费请求报文后,需要回应一个计费响应报文。 ::: image.png
字段 含义
flags 计费类型:
- 开始计费(0x02)
- 结束计费(0x04)
- 实时计费(0x08)
authen_service 请求认证的服务类型,当前版本支持PPP(0x03)、LOGIN(0x01)和NONE(0x00)三种服务类型,分别对应PPP用户、管理员用户和其他用户。
arg_cnt 计费请求报文中携带的属性数。
argN 指定计费请求报文的属性。

image.png

字段 含义
server_msg len server_msg字段的长度。
data len data字段的长度。
status 指定计费状态:
- 计费成功(0x01)
- 计费失败(0x02)
- 计费无回应(0x03)
- 服务器要求重新进行计费过程(0x21)
server_msg 指定计费服务器带给客户端的信息。
data 服务器提供给管理员的信息。

2.5.3 HWTACACS认证、授权、计费流程

下面以Telnet用户为例,说明使用HWTACACS对用户进行认证、授权和计费的过程。基本消息交互流程图如下图所示。
image.png
在整个过程中的基本消息交互流程如下: :::success

  1. Telnet用户请求登录设备。
  2. HWTACACS客户端收到请求之后,向HWTACACS服务器发送认证开始报文。
  3. HWTACACS服务器发送认证回应报文,请求用户名。
  4. HWTACACS客户端收到回应报文后,向用户询问用户名。
  5. 用户输入用户名。
  6. HWTACACS客户端收到用户名后,向HWTACACS服务器发送认证持续报文,其中包括了用户名。
  7. HWTACACS服务器发送认证回应报文,请求密码。
  8. HWTACACS客户端收到认证回应报文,向用户询问密码。
  9. 用户输入密码。
  10. HWTACACS客户端收到密码后,向HWTACACS服务器发送认证持续报文,其中包括了密码信息。
  11. HWTACACS服务器发送认证回应报文,指示用户通过认证。
  12. HWTACACS客户端向HWTACACS服务器发送授权请求报文。
  13. HWTACACS服务器发送授权回应报文,指示用户通过授权。
  14. HWTACACS客户端收到授权回应报文,向用户输出设备的配置界面。
  15. HWTACACS客户端向HWTACACS服务器发送计费开始请求报文。
  16. HWTACACS服务器发送计费开始回应报文,指示计费开始请求报文已经收到。
  17. 用户请求断开连接。
  18. HWTACACS客户端向HWTACACS服务器发送计费结束请求报文。
  19. HWTACACS服务器发送计费结束回应报文,指示计费结束请求报文已经收到。 ::: :::warning 医疗_消息.png 说明
    HWTACACS协议与其他厂商支持的TACACS+协议都实现了认证、授权、计费的功能。HWTACACS和TACACS+的认证流程与实现方式是一致的,HWTACACS协议能够完全兼容TACACS+协议。 :::

2.5.4 HWTACACS双因子认证流程

HWTACACS双因子认证是指设备和HWTACACS服务器配合,对用户进行身份认证。认证时,除了验证用户名和静态PIN码,还要求用户输入动态验证码。下面以SSH用户为例,介绍HWTACACS双因子认证流程。 :::warning 医疗_消息.png 说明
用户通过HWTACACS双因子认证登录到设备后,通过super命令提升用户级别时支持HWTACACS双因子认证。 ::: image.png :::success

  1. 用户输入用户名和PIN码后,客户端会将用户名和PIN码发送给设备。
  2. 设备将用户名和PIN码发送给HWTACACS服务器。
  3. HWTACACS服务器会根据自己的数据库检查用户名和PIN码是否正确,并向设备返回验证结果。
    • 如果用户名和PIN码不正确,HWTACACS服务器向设备发送认证失败的消息。
    • 如果用户名和PIN码正确,则向设备发送Challenge消息,请求动态验证码。
  4. 设备将用户名和PIN码的验证结果返回给客户端。
    • 如果用户名和PIN码不正确,用户客户端上显示“Access denied”。认证流程结束,用户登录失败。
    • 如果用户名和PIN码正确,开始动态验证码的认证流程。
  5. 用户输入动态验证码。
  6. 设备将动态验证码发送给HWTACACS服务器。
  7. HWTACACS服务器对动态验证码进行验证,并向设备返回验证结果。
    • 如果动态验证码正确,HWTACACS服务器向设备发送认证成功的消息。
    • 如果动态验证码不正确,HWTACACS服务器向设备发送认证失败的消息。
  8. 设备将认证结果返回给用户客户端。 :::

三、AAA应用场景


通过AAA为上网用户提供认证、授权和计费
image.png
如上图所示,Switch作为目的网络接入服务器。用户需要通过服务器的远端认证才能通过建立连接,该网络中的用户需要访问Internet资源。为了保证网络的安全性,企业管理员希望控制用户对于Internet的访问。 :::success 通过在Switch上配置AAA,实现Switch与AAA服务器的对接,可以由AAA服务器对用户进行统一管理。用户在客户端上输入用户名和密码后,Switch可以接收到用户的用户名和密码等认证信息并将用户信息发送给AAA服务器,由AAA服务器对其进行认证。如果认证通过,则用户可以开始访问Internet。在用户访问过程中,AAA服务器还可以记录用户使用网络资源的情况。 ::: 为了提高可靠性,可以部署两台AAA服务器,并在Switch上进行相应配置实现AAA服务器的主备备份,主服务器发生故障时,备服务器可以接替主服务器工作,保证用户业务不会中断。
通过AAA对管理用户进行认证和授权
如下图所示,管理用户(Administrator)与Switch建立连接,对Switch进行管理、配置和维护。
在Switch上配置AAA后,当管理用户登录Switch时,Switch将管理用户的用户名和密码等信息发送给AAA服务器,由AAA服务器来进行统一认证,同时记录这些用户的操作行为。
image.png

四、配置采用本地方式进行认证和授权


本地方式进行认证和授权
在本地方式进行认证和授权中,用户信息(包括本地用户的用户名、密码和各种属性)都配置在设备上。本地方式进行认证和授权的优点是速度快,可以降低运营成本,缺点是存储信息量受设备硬件条件限制。

配置 步骤 说明
配置本地服务器 配置本地用户 创建本地用户,设备根据创建的用户信息对本地用户进行认证。
配置授权规则 在设备上创建相应的授权规则,本地授权时可以根据创建的授权规则对用户授权。
配置并应用AAA方案 配置AAA方案 配置认证、授权、计费方案。
(可选)配置业务方案 业务方案中也可以配置用户的授权信息。
在域下应用AAA方案 创建好的AAA方案和业务方案需要绑定到用户所属域下才能生效
- 检查配置结果 检查配置是否正确。

4.1 配置本地用户

配置本地用户时,可以配置本地用户允许建立的连接数目、本地用户级别、闲置切断时间以及本地用户上线时间等功能,同时支持本地用户修改密码功能。 :::warning 医疗_消息.png 说明

  • 为充分保证设备安全,请用户不要关闭密码复杂度检查功能,并定期修改密码。
  • 更改本地账号的权限(密码、接入类型、FTP目录、级别等)后,已经在线的用户权限不会被更改,新上线的用户则以新的权限为准。
  • 本地用户的接入类型分为以下两类:
    • 管理类:包括api、ftp、http、ssh、telnet、x25-pad和terminal。
    • 普通类:包括8021x、bind、ppp和web。
  • 登录方式为Telnet和FTP时存在安全风险,建议使用STelnet和SFTP,此时,用户的接入类型配置为SSH。缺省情况下,HTTP采用随机生成的自签名证书支持HTTPS。由于自签名证书存在安全风险,因此建议用户替换为官方授信的数字证书。 ::: 操作步骤
  1. 执行命令system-view,进入系统视图。
  2. 执行命令aaa,进入AAA视图。
  3. 创建本地用户。 | 步骤 | 命令 | 说明 | | —- | —- | —- | | (可选)使能对密码进行复杂度检查功能 | user-password complexity-check [ three-of-kinds ] | 缺省情况下,设备对密码进行复杂度检查。用户设置的密码至少包含“大写字母、小写字母、数字和特殊字符”中的两种,才能通过密码复杂度检查。 | | 创建本地用户名和密码(选择一种方式创建本地用户名和密码) | local-useruser-name password | 缺省情况下,本地账号的登录密码为空。
    本命令为交互式命令,当用户输入密码时,直接以明文形式输入存在安全风险,建议用户以交互式方式输入。
    如果用户名中带域名分隔符(如“@”、“|”、“%”等符号),并且没有执行命令domainname-parse-directionright-to-left设置域名解析方向,则认为分隔符前面的部分是纯用户名,后面部分是域名。如果没有分隔符,则整个字符串为用户名,普通用户默认到default域认证,管理用户默认到default_admin域进行认证。 | | | local-user user-name password { cipher | irreversible-cipher } password | | | 配置本地用户的允许接入类型 | local-user user-name service-type { 8021x | api | bind | ftp | http | ppp | ssh | telnet | terminal | web | x25-pad } | 缺省情况下,本地用户关闭所有的接入类型。
    如果为Portal接入用户,则配置的接入类型为web
    *配置本地用户的接入类型前,如果用户已经存在,需注意:

    - 如果密码使用的是不可逆加密算法,则只允许配置管理类的接入类型。
    - 如果密码使用的是可逆加密算法,则允许配置普通类或者管理类的接入类型,不允许配置普通类与管理类的混合类接入类型,并且当配置为管理类的接入类型时,加密算法自动转换成不可逆加密算法。
    |

  4. (可选)配置用户级别、所属用户组、接入时间段、闲置切断功能及可建立的连接数目。 | 步骤 | 命令 | 说明 | | —- | —- | —- | | 配置本地用户级别 | local-user user-name privilege level level | 缺省情况下,本地用户的级别为0级。 | | 配置本地用户所属的组 | local-user user-name
    user-group group-name | 缺省情况下,本地用户不属于任何用户组。
    说明:
    仅NAC传统模式支持该命令。 | | 配置本地账号的接入时间段 | local-user user-name
    time-range time-name | 缺省情况下,未配置本地账号的接入时间段,即任意时间都允许接入。 | | 配置指定用户的闲置切断时间 | local-user user-name
    idle-timeout minutes [seconds ] | 指定用户界面的超时时间。本地用户闲置时间超过设定时间,则用户自动下线。
    设置用户连接的超时时间为0或者过长会导致终端一直处于登录状态,存在安全风险,建议用户执行命令lock锁定当前连接。 | | 配置指定用户可建立的连接数目 | local-user user-name
    access-limit max-number | 缺省情况下,不限制用户可建立的连接数目。
    如果需要设置本地账号只能在唯一终端登录,可通过设置max-number的值为1实现该功能。 |

  5. (可选)配置本地用户安全性。 | 步骤 | | 命令 | 说明 | | —- | —- | —- | —- | | 使能本地帐号锁定功能并配置用户的重试时间间隔、连续认证失败的限制次数及帐号锁定时间 | | local-aaa-user wrong-passwordretry-interval retry-interval retry-time retry-time block-time block-time | 缺省情况下,本地帐号锁定功能处于使能状态,用户的重试时间间隔为5分钟、连续输入错误密码的限制次数为3次,帐号锁定时间为5分钟。 | | 配置在用户账号锁定期间,允许该用户使用指定的IP地址访问网络 | | aaa-quiet administrator except-list { ipv4-address | ipv6-address } &<1-32> | 缺省情况下,用户在账号锁定期间不能访问网络。
    通过命令display aaa-quiet administrator except-list,可以查询以上配置的IP地址信息。 | | 配置本地接入用户密码策略 | 使能本地接入用户的密码策略功能并进入本地接入用户密码策略视图 | local-aaa-user password policy access-user | 缺省情况下,本地接入用户的密码策略功能处于未使能状态。 | | | 配置每个用户密码的历史记录的最大条数。 | password history record numbernumber | 缺省情况下,每个用户密码的历史记录的最大条数是5条。 | | | 退出本地接入用户密码策略视图。 | quit | - | | 配置本地管理员密码策略 | 使能本地管理员的密码策略功能并进入本地管理员密码策略视图。 | local-aaa-user password policy administrator | 缺省情况下,本地管理员的密码策略功能处于未使能状态。 | | | 使能密码过期提醒功能并配置密码过期前的提醒时间。 | password alert before-expireday | 缺省情况下,密码过期前的提醒时间为30天。 | | | 使能初始密码提醒功能 | password alert original | 缺省情况下,初始密码修改提醒功能处于使能状态。 | | | 使能密码过期功能并配置密码过期时间。 | password expireday | 缺省情况下,密码过期时间为90天。 | | | 配置每个用户密码的历史记录的最大条数。 | password history record number number | 缺省情况下,每个用户密码的历史记录的最大条数是5条。 | | | 退出本地管理员密码策略视图。 | quit | - |

设备空配置启动时,会自动进行如下配置并写入配置文件:

  • 执行local-aaa-user password policy administrator命令使能本地管理员的密码策略功能。
  • 执行password expire 0命令配置本地管理员的密码不过期。
  • 执行password history record number 0命令配置设备不检查修改后的本地管理员的密码与历史记录是否相同
  1. (可选)本地用户访问权限相关配置。 | 步骤 | 命令 | 说明 | | —- | —- | —- | | 配置允许用户接入网络的终端类型 | local-user user-name
    device-type device-type &<1-8> | 缺省情况下,未配置允许用户接入网络的设备类型。
    如终端为iphone,可执行该命令设置device-type的值为“iphone”。 | | 配置允许FTP用户访问的FTP目录 | local-user user-name
    ftp-directory directory | 缺省情况下,允许FTP用户访问的FTP目录为空。
    若配置本地用户的接入类型为FTP方式,则必须配置本地用户的FTP目录,且本地用户的级别不能低于管理级,否则FTP用户无法登录。 | | 配置本地用户的FTP权限 | local-user username ftp-privilege [ directoryfilename ]
    { read | write | execute } | 缺省情况下,本地用户的FTP权限为读、写和执行权限。
    若未指定参数directoryfilename,则表示是对本地用户可访问的FTP目录进行权限配置。 | | 配置允许HTTP用户访问的HTTP目录 | local-user user-name
    http-directory directory | 缺省情况下,允许HTTP用户访问的HTTP目录为空。 | | 配置本地用户的状态 | local-user user-name state
    { active | block } | 缺省情况下,本地用户的状态为激活态
    设备对处于激活态和阻塞态用户的处理方式如下:
    - 若用户状态为激活态,将接收该用户的认证请求并做进一步处理
    - 若用户状态为阻塞态,将拒绝该用户的认证请求。
    | | 配置本地账号的有效期 | local-user user-name
    expire-date expire-date | 缺省情况下,本地账号永久有效。 | | 指定本地用户为网管用户 | local-user user-name
    *user-type netmanager
    | 如果当前VTY用户达到最大用户数时,网管用户可以通过网管预留编号VTY 16~VTY 20来登录。
    该用户必须通过AAA本地认证。 |

  2. 执行命令undo local-aaa-user change-password verify,在本地管理员用户修改自己的密码时,去使能校验老密码的功能。 :::success 缺省情况下,本地管理员用户在AAA视图下通过命令local-user user-name privilege level level修改自己的密码时,需要输入老密码进行校验。 :::

  3. (可选)修改本地用户登录密码。 | 步骤 | 命令 | 说明 | | —- | —- | —- | | 返回用户视图 | return | - | | 修改本地用户登录密码 | local-user change-password | - |

4.2 配置授权规则

配置本地授权时,本地可配置的授权参数如下所示:

授权参数 应用场景 说明
VLAN 部署简单,维护成本也较低,由于其控制粒度在VLAN层面,适用于在同一办公室或同一部门所有人员权限相同的场景。 本地授权时,仅需在设备上配置VLAN及VLAN内的网络资源。
不支持为在线Portal用户授权VLAN。
用户获取VLAN授权后,需要手动触发DHCP申请IP地址。
业务方案 业务方案及业务方案所包括的网络资源需要在设备上配置。 设备上需要配置业务方案及业务方案内的网络资源。
业务方案可以被域引用,域下的用户就能获取业务方案的授权信息。
用户组(传统模式) 用户组指具有相同角色、相同权限等属性的一组用户(终端)的集合。例如,园区网中可以根据企业部门结构划分研发组、财务组、市场组、访客组等部门用户组,对于不同部门可授予不同安全策略。 本地授权时,仅需在设备上需要配置用户组及用户组内的网络资源。
用户组可以被域引用,域下的用户就能获取用户组的授权信息。
用户组的配置过程参见步骤配置授权用户组
UCL组(统一模式) UCL组是一种用户类别的标记。借助UCL组管理员可以将具有相同网络访问策略的一类用户划分为同一个组,然后为其部署一组网络访问策略即能满足该类别所有用户的网络访问需求。 本地授权时,可以在设备上配置UCL组及UCL组内的网络资源。
UCL组可以被域引用,域下的用户就能获取UCL组的授权信息。
UCL组的配置过程参见步骤配置授权UCL组

操作步骤

  • 配置授权VLAN。在设备上配置VLAN及VLAN内的网络资源。 | 步骤 | 命令 | 说明 | | —- | —- | —- | | 进入系统视图 | system-view | – | | 创建用户组并进入用户组视图 | user-group group-name | 双链路备份场景下使用用户组时,必须指定用户组索引,并且主备设备上配置的用户组名和用户组索引必须一致。 | | 在用户组下绑定ACL | acl-id acl-number | 缺省情况下,用户组下未绑定ACL。
    说明:
    执行该命令前,需确保已使用命令aclacl name创建了ACL,且该ACL下已配置至少一条规则。 | | 在用户组下绑定VLAN | user-vlan vlan-id | 缺省情况下,未配置用户组VLAN。 | | 配置用户组优先级 | remark { 8021p 8021p-value | dscp dscp-value } | 缺省情况下,未配置用户组优先级。 | | 配置对用户组内的用户进行流量监管 | car { outbound | inbound }
    cir cir-value [ pir pir-value |
    cbs cbs-value | pbs pbs-value ]
    | 缺省情况下,不对用户组内的用户进行流量监管。 | | 退出到系统视图 | quit | – | | 使能用户组功能 | user-group group-name enable | 只有在使能用户组功能后,其上的配置才能生效
    缺省情况下,未使能用户组功能。 |
步骤 命令 说明
进入系统视图 system-view
创建UCL组 ucl-groupgroup-index
[ name group-name ]
缺省情况下,未创建UCL组。
(可选)配置静态UCL组IP地址 ucl-group ip ip-address { mask-length | ip-mask } { group-index | name group-name } [ escape ] 缺省情况下,未配置静态UCL组IP地址
(可选)配置静态UCL组域名 ucl-group domaindomain-name domain-name{ group-index | name group-name } 缺省情况下,未配置静态UCL组域名。
配置用户ACL或用户ACL6 详细配置请参见ACL配置 中的“配置用户ACL”或“配置用户ACL6”。 根据UCL组对报文进行过滤。
配置基于ACL对报文进行过滤 traffic-filterinboundacl [ ipv6 ] acl-number 缺省情况下,未配置基于ACL对报文进行过滤。

4.3 配置AAA方案

如果需要采用本地方式进行认证和授权,需要在认证方案中配置认证模式为本地认证,在授权方案中配置授权模式为本地授权。缺省情况下,设备对用户进行本地认证和授权。 :::warning 医疗_消息.png 说明
如果使用authentication-mode命令配置认证方式为不认证,则当用户上线时,用户输入任意的用户名和密码后都会认证成功。因此,为保护设备或网络安全,建议开启认证方式,保证用户经过认证后才可以访问设备或网络。 ::: 操作步骤 :::success

  1. 执行命令system-view,进入系统视图。
  2. 执行命令aaa,进入AAA视图。
  3. 执行命令authentication-scheme authentication-scheme-name,创建一个认证方案,并进入认证方案视图或直接进入一个已存在的认证方案视图。缺省情况下,设备中有两个认证方案,认证方案名称分别是default和radius,default和radius方案均不能删除,只能修改方案下的参数。
  4. 执行命令authentication-mode{ local | local-case },配置认证模式为本地认证。缺省情况下,认证模式为本地认证,并且本地用户名不区分大小写。
  5. 执行命令quit,返回AAA视图。
  6. (可选)执行命令domainname-parse-direction { left-to-right | right-to-left },配置域名解析的方向,从左向右或从右向左。缺省情况下,域名解析方向为从左向右。
  7. 执行命令quit,返回系统视图。
  8. (可选)执行命令aaa-authen-bypassenabletime time-value,配置认证旁路时间。缺省情况下,未启用旁路认证功能。
  • 配置授权方案
  1. 执行命令system-view,进入系统视图。
  2. 执行命令aaa,进入AAA视图。
  3. 执行命令authorization-scheme authorization-scheme-name,创建授权方案,并进入授权方案视图或直接进入一个已存在的授权方案视图。缺省情况下,设备有一个授权方案,授权方案配置名是default,不能删除,只能修改。
  4. 执行命令authorization-mode{ local | local-case } [ none ],配置授权模式。缺省情况下,授权模式为本地授权模式,并且本地用户名不区分大小写。
  5. 执行命令quit,返回AAA视图。
  6. (可选)执行命令authorization-modify mode { modify | overlay },配置授权服务器下发的用户授权信息的生效模式。缺省情况下,授权服务器下发的用户授权信息的生效模式为overlay模式。
  7. 执行命令quit,返回系统视图。
  8. (可选)执行命令aaa-author-bypassenabletime time-value,配置授权旁路时间。缺省情况下,未启用旁路授权功能。 :::

4.4 配置业务方案

用户需要获取授权信息才能上线,可以通过配置业务方案管理用户的授权信息。 :::warning 医疗_消息.png 说明
设备切换为NAC传统模式时,业务方案下仅支持配置管理员用户级别、同一用户名最多可以接入的用户数和重定向ACL。 ::: 操作步骤 :::success

  1. 执行命令system-view,进入系统视图。
  2. 执行命令aaa,进入AAA视图。
  3. 执行命令service-scheme service-scheme-name,创建一个业务方案并进入业务方案视图。缺省情况下,设备中没有创建业务方案。
  4. 执行命令admin-user privilege level level,配置用户可以作为管理员登录设备,同时指定登录时的管理员级别。level参数的取值范围是0~15。缺省情况下,未配置用户级别。 :::

  5. 配置相关服务器信息。 | 步骤 | 命令 | 说明 | | —- | —- | —- | | 配置DHCP服务器组 | dhcp-server group group-name | 缺省情况下,业务方案下没有配置DHCP服务器组。 | | 配置DNS主用服务器地址 | dns ip-address | 缺省情况下,业务方案下没有配置DNS主用服务器。 | | 配置DNS备用服务器地址 | dns ip-address secondary | 缺省情况下,业务方案下没有配置DNS备用服务器。 | | 配置wins主用服务器 | wins ip-address | 缺省情况下,业务方案下没有配置wins主用服务器。 | | 配置wins备用服务器 | wins ip-address secondary | 缺省情况下,业务方案下没有配置wins备用服务器。 |

  6. 执行命令ip-pool pool-name [ move-to new-position ],配置业务方案下的IP地址池或者移动已配置的地址池的位置。缺省情况下,业务方案下没有配置IP地址池。

  7. 执行命令policy-route next-hop-ip-address [ vlan-id ],配置业务方案下用户的策略路由功能。缺省情况下,业务方案下没有配置策略路由功能。
  8. 执行命令redirect-acl [ ipv6 ] { acl-number | nameacl-name },在业务方案下配置重定向ACL。缺省情况下,业务方案中没有配置重定向ACL。
  9. 执行命令idle-cut idle-time flow-value [ inbound | outbound ],使能域用户的闲置切断功能并配置对应的闲置切断参数。缺省情况下,域用户的闲置切断功能处于未使能状态。
  10. 执行命令access-limit user-name max-num number,配置同一个用户名最多可以接入的用户数量。缺省情况下,设备对同一个用户名可以接入的用户数量不做限制,由设备支持的最大接入用户数决定。
  11. 执行命令priority priority-value,在业务方案下配置用户的优先级。缺省情况下,用户的优先级为0。

image.png
image.png

4.5 在域下应用AAA方案

创建的认证和授权方案,只有在域下应用后才能生效。采用本地方式进行认证和授权时,采用缺省的计费方案,即不计费。 :::success

  1. 执行命令system-view,进入系统视图。
  2. 执行命令aaa,进入AAA视图。
  3. 执行命令domain domain-name [ domain-index domain-index ],创建域并进入域视图或进入一个已存在的域视图。缺省情况下,设备存在两个域:“default”和“defaultadmin”。“default”用于普通接入用户的域,“default_admin”用于管理员的域。 ::: :::warning ![医疗消息.png](https://cdn.nlark.com/yuque/0/2022/png/1467971/1653662349884-5e5f73df-6907-4f34-8d79-b74156fd6067.png#clientId=u81ae6dc5-4558-4&crop=0&crop=0&crop=1&crop=1&from=ui&height=30&id=qvZDq&margin=%5Bobject%20Object%5D&name=%E5%8C%BB%E7%96%97_%E6%B6%88%E6%81%AF.png&originHeight=200&originWidth=200&originalType=binary&ratio=1&rotation=0&showTitle=false&size=8334&status=done&style=shadow&taskId=u35b6fb7d-5f10-4da0-908a-98896735c45&title=&width=30) 说明
  • 用户认证时,如果输入不带域名的用户名,将到默认域认证,因此设备需通过domain domain-name [ admin ]命令设置domain-name为全局默认域。
  • 用户认证时,如果输入带域名的用户名,需要带上正确的域名domain-name。 :::
  1. 配置域的AAA方案 | 步骤 | 命令 | 说明 | | —- | —- | —- | | 配置域的认证方案 | authentication-scheme authentication-scheme-name | 缺省情况下,“default”域使用名为“radius”的认证方案,“defaultadmin”域使用名为“default”的认证方案,其他域使用名为“radius”的认证方案。 | | 配置域的授权方案 | authorization-scheme
    _authorization-scheme-name
    | 缺省情况下,域下没有绑定授权方案。 |

  2. (可选)配置本地授权规则: | 步骤 | 命令 | 说明 | | —- | —- | —- | | (可选)配置对域下的用户下发用户组授权。 | user-group group-name | 缺省情况下,未配置对域下的用户下发用户组授权。
    说明:
    仅NAC传统模式支持该命令。 | | (可选)配置域的业务方案 | service-scheme
    service-scheme-name | 缺省情况下,域下没有配置任何业务方案。 |

  3. (可选)配置域的状态和流量统计功能: | 步骤 | 命令 | 说明 | | —- | —- | —- | | 配置域的状态 | state { active | block[ time-range time-name &<1–4> ] } | 当域处于阻塞状态时,属于该域的用户不能登录。缺省情况下,域创建后处于激活状态。 |

  4. (可选)配置流量统计功能

    1. 执行命令statistic enable,使能域用户的流量统计功能。
      1. 缺省情况下,域用户的流量统计功能处于未使能状态。
    2. 执行命令accounting dual-stack separate,使能IPv4和IPv6用户流量分别统计或限速的功能。
      1. 缺省情况下,设备统计流量或限速时,不区分IPv4和IPv6用户的流量。 :::warning 医疗_消息.png 说明
        命令statistic enable开启后,会同时统计IPv4和IPv6上、下行流量。命令accounting dual-stack separate开启后,IPv4和IPv6流量分别统计。具体情况如下:
  • 所有X系列单板都支持IPv4和IPv6上、下行流量统计。非X系列单板中,仅以下单板不支持:ET1D2X12SSA0单板。
  • 单MAC多IP场景仅支持IPv4流量统计。
  • 设备不支持三层IPv6 Portal认证,也不支持对三层IPv6 Portal认证用户进行流量统计。 :::
  1. (可选)配置域名解析方案(如果在AAA视图和认证模板视图下都配置了域名解析,则优先使用认证模板上的配置。认证模板下的配置仅适用于无线用户): | 步骤 | | 命令 | 说明 | | —- | —- | —- | —- | | AAA视图 | 退出域视图 | quit | - | | | 配置域名解析的方向 | domainname-parse-direction { left-to-right | right-to-left } | 域名解析的方向可以是从左到右,或者从右到左。
    缺省情况下,域名解析方向为从左向右。 | | | 配置域名分隔符 | domain-name-delimiter delimiter | 域名分隔符可以是 \ / : < > | @ ‘ % 中的某一个。
    缺省情况下,域名分隔符为@。 | | | 配置域名的位置 | domain-location { after-delimiter | before-delimiter } | 缺省情况下,域名在分隔符后。 | | | 配置安全字符串分隔符 | security-name-delimiter delimiter | 缺省情况下,安全字符串分隔符为。 | | 认证模板视图 | 退出AAA视图 | quit | - | | | 创建认证模板并进入认证模板视图 | authentication-profile name authentication-profile-name | 缺省情况下,设备自带6个认证模板,名称分别为defaultauthen_profile、dot1x_authen_profile、mac_authen_profile、portal_authen_profile、dot1xmac_authen_profile和multi_authen_profile。 | | | 配置用户名和域名解析的方向 | domainname-parse-direction { left-to-right | right-to-left } | 域名解析的方向可以是从左到右,或者从右到左。
    缺省情况下,未配置域名解析方向。 | | | 配置域名分隔符 | domain-name-delimiter _delimiter
    | 域名分隔符可以是 \ / : < > | @ ‘ % 中的某一个。
    缺省情况下,没有配置域名分隔符。 | | | 配置域名的位置 | domain-location { after-delimiter | before-delimiter } | 缺省情况下,没有配置域名的位置。 | | | 配置安全字符串分隔符 | *security-name-delimiter
    delimiter | 缺省情况下,没有配置安全字符串分隔符。 |

  2. (可选)配置无线用户的允许域(此步骤仅适用于无线用户): | 步骤 | 命令 | 说明 | | —- | —- | —- | | 退出到系统视图 | quit | - | | 创建认证模板并进入认证模板视图 | authentication-profilename
    authentication-profile-name | 缺省情况下,设备自带6个认证模板,名称分别为defaultauthen_profile、dot1x_authen_profile、mac_authen_profile、portal_authen_profile、dot1xmac_authen_profile和multi_authen_profile。 | | 配置无线用户的允许域 | permit-domainname
    _domain-name
    &<1-4> | 缺省情况下,没有配置无线用户的允许域。
    用户在认证模板下面配置了用户允许域后,只有允许域内的用户才能通过认证、授权和计费。 |

4.6 检查AAA的配置结果

:::success

  • 执行命令display aaa configuration,查看AAA的概要信息。
  • 执行命令display authentication-scheme [ authentication-scheme-name ],查看认证方案的配置信息
  • 执行命令display authorization-scheme [ authorization-scheme-name ],查看授权方案的配置信息。
  • 查看在线接入用户的信息,可以执行以下命令:
    • display access-user [ domain domain-name | interface interface-typeinterface-number [ vlan vlan-id [ qinq qinq-vlan-id ] ] | ip-address ip-address [ vpn-instance vpn-instance-name ] | ipv6-address ipv6-address | access-slot slot-id| wired | wireless] [ detail ]
    • display access-userusername user-name [ detail ]
    • display access-userssid ssid-name
    • display access-user [ mac-addressmac-address | service-schemeservice-scheme-name | user-iduser-id | statistics ]
    • display access-useraccess-type { admin [ ftp | ssh | telnet | terminal | web ] | ppp } [ usernameuser-name ]
    • display access-user work-group { work-group-id | default }
  • 执行命令display domain [ name domain-name ],查看域的配置信息。
  • 执行命令display local-user [ domain domain-name | state { active | block } | username username ] *,查看本地用户的属性信息。
  • 执行命令display local-aaa-user password policy { access-user | administrator },查看本地用户的密码策略信息。
  • 执行命令display local-user expire-time,查看本地用户的过期时间。
  • 执行命令display aaa statistics access-type-authenreq,查看认证请求数。
  • 执行命令display access-user user-name-table statistics { all | usernameusername },查看根据用户名进行接入控制的用户统计信息。 :::

五、配置采用RADIUS方式进行认证、授权、计费


5.1 配置AAA方案

:::success 用户使用的认证、授权和计费方法通过AAA方案来定义。如果使用RADIUS方式进行认证、授权和计费,需要在认证方案中配置认证模式为RADIUS认证,在计费方案中配置计费模式为RADIUS计费。RADIUS认证与授权结合,不能分离,认证成功授权也成功。所以不需要配置授权方案,仅需配置认证方案和计费方案。
为避免单一认证模式无响应而造成的认证失败,一般会在认证方案中配置本地认证或不认证为备份认证模式。 ::: 操作步骤

  • 配置认证方案
  1. 执行命令system-view,进入系统视图。
  2. 执行命令aaa,进入AAA视图。
  3. 执行命令authentication-scheme scheme-name,创建一个认证方案并进入认证方案视图,或者直接进入一个已经存在的认证方案视图。缺省情况下,设备中有两个认证方案,认证方案名称分别是default和radius,default和radius方案均不能删除,只能修改方案下的参数。
  4. 执行命令authentication-mode radius,配置认证模式为RADIUS认证。缺省情况下,认证模式为本地认证,并且本地用户名不区分大小写。如果需要配置本地认证为备份认证模式,请执行命令authentication-mode radius{ local | local-case }。
  5. (可选)执行命令undo server no-response accounting,配置用户在服务器认证无响应转入本地认证后,设备不发送计费报文。缺省情况下,在配置了服务器计费的情况下,用户在服务器认证无响应转入本地认证后,设备不发送计费报文。
  6. (可选)执行命令radius-reject local,配置管理员用户在RADIUS认证拒绝后转入本地认证。缺省情况下,未配置管理员用户在RADIUS认证拒绝后转入本地认证。在RADIUS认证拒绝后(即RADIUS服务器回应Access-Reject报文),认证流程结束,用户认证失败。

:::warning 医疗_消息.png 说明

  • 该功能仅对管理员用户生效。
  • 实现该功能认证模式必须为RADIUS+本地认证。 :::
    1. (可选)执行命令authentication-type radius chap access-type admin [ ftp | ssh | telnet | terminal | http ] *,配置管理员用户在RADIUS认证时使用CHAP认证方式替换PAP认证。缺省情况下,管理员用户在RADIUS认证时使用PAP认证方式。
    2. 执行命令quit,返回AAA视图。
    3. (可选)配置账号锁定功能
      1. 执行命令access-user remote authen-failretry-interval retry-interval retry-time retry-time block-time block-time,开启接入用户远端认证失败后账号锁定功能。或者:执行命令administrator remote authen-failretry-interval retry-interval retry-time retry-time block-time block-time,开启管理员用户远端认证失败后账号锁定功能。缺省情况下,接入用户远端认证失败后账号锁定功能处于关闭状态;管理员用户远端认证失败后账号锁定功能处于开启状态,并且,远端认证失败后用户的重试时间间隔为5分钟,连续认证失败的限制次数为30次,账号锁定时间为5分钟。
      2. 执行命令aaa-quiet administrator except-list { ipv4-address | ipv6-address } &<1-32>,配置在用户账号锁定期间,允许该用户使用指定的IP地址访问网络。缺省情况下,用户在账号锁定期间不能访问网络。通过命令display aaa-quiet administrator except-list,可以查询以上配置的IP地址信息。
      3. 执行命令remote-user authen-fail unblock { all | username username },将认证失败的远端认证账号解锁。

    (可选)执行命令aaa-author session-timeout invalid-value enable,配置当RADIUS服务器下发的Session-Timeout为0时,设备不对用户进行下线或重认证。缺省情况下,当Radius服务器下发的Session-Timeout属性值为0时,该属性不生效。 执行命令quit,返回系统视图。 (可选)执行命令aaa-authen-bypassenabletimetime-value,配置认证旁路时间。缺省情况下,未启用旁路认证功能

:::success

  • 配置计费方案
  1. 执行命令system-view,进入系统视图。
  2. 执行命令aaa,进入AAA视图。
  3. 执行命令accounting-scheme accounting-scheme-name,创建一个计费方案,并进入计费方案视图或直接进入一个已存在的计费方案视图。缺省情况下,设备中有一个计费方案,计费方案配置名是default,default方案不能删除,只能修改default方案下的参数。
  4. 执行命令accounting-mode radius,配置计费模式为RADIUS计费。缺省情况下,不计费,即计费模式为none
  5. (可选)配置计费失败策略
  • 开始计费失败策略执行命令accounting start-fail { offline | online },配置开始计费失败策略。缺省情况下,如果开始计费失败,不允许用户上线。
  • 实时计费失败策略
    1. 执行命令accounting realtime interval,使能实时计费并设置计费间隔。缺省情况下,设备按时长计费,未使能实时计费功能。
    2. 执行命令accounting interim-fail [ max-timestimes ] { offline | online },配置允许的实时计费请求最大无响应次数,以及实时计费失败后采取的策略。缺省情况下,允许的实时计费请求最大无响应次数为3次,实时计费失败后允许用户在线。
    • 结束计费失败策略
      1. 执行命令quit,返回AAA视图。
      2. 执行命令quit,返回系统视图。
      3. 执行命令radius-server templatetemplate-name,进入RADIUS服务器模板视图。
      4. 执行命令radius-server accounting-stop-packetresend [ resend-times ],配置计费结束报文的重传功能以及可重发的计费结束报文个数。缺省情况下,允许重发计费结束报文,且计费结束报文的重发次数为3。
  1. (可选)执行命令quit,返回系统视图。
  2. (可选)执行命令authentication-profile nameauthentication-profile-name,进入认证模板视图。缺省情况下,设备自带6个认证模板,名称分别为default_authen_profile、dot1x_authen_profile、mac_authen_profile、portal_authen_profile、dot1xmac_authen_profile和multi_authen_profile。
  3. (可选)执行命令authentication { roam-acounting | update-info-accounting | update-ip-accounting } *enable,配置漫游、终端信息更新和地址更新时发送计费报文。缺省情况下,漫游、终端信息更新和地址更新时发送计费报文。 :::

    5.2 配置RADIUS服务器模板

    设备通过RADIUS服务器模板来指定与其对接的RADIUS服务器,RADIUS服务器模板内包含服务器的IP地址、端口号、源接口、共享密钥等配置。RADIUS服务器模板下的配置要与RADIUS服务器上的配置一致。 :::success

:::

  1. 执行命令system-view,进入系统视图。
  2. 执行命令radius-server templatetemplate-name,进入RADIUS服务器模板视图。缺省情况下,设备上存在一个名为“default”的RADIUS服务器模板,只能修改,不能删除。
  3. 配置RADIUS认证、计费服务器: | 配置 | 命令 | 说明 | | —- | —- | —- | | 配置RADIUS认证服务器 |
    - 配置IPv4服务器:radius-server authentication ipv4-address port [ vpn-instancevpn-instance-name | source { loopback interface-number | ip-address ipv4-address | vlanif interface-number } | weight weight-value ]
    - 配置IPv6服务器:radius-server authenticationipv6-addressport [ source { loopbackinterface-number | ip-addressipv6-address | vlanifinterface-number } | weightweight-value ]

    | 缺省情况下,未配置RADIUS认证服务器 | | 配置RADIUS计费服务器 |
    - 配置IPv4服务器:radius-server accounting ipv4-address port [ vpn-instance vpn-instance-name | source { loopback interface-number | ip-addressipv4-address | vlanifinterface-number } | weightweight-value ]
    - 配置IPv6服务器:radius-server accountingipv6-addressport [ source { loopbackinterface-number | ip-addressipv6-address | vlanifinterface-number } | weightweight-value ]

    | 缺省情况下,未配置RADIUS计费服务器 |

  4. 执行命令radius-server shared-key cipher key-string,配置RADIUS服务器的共享密钥。缺省情况下,系统没有配置RADIUS服务器的共享密钥。 :::warning 医疗_消息.png 说明
    同一个RADIUS服务器同时配置在多个RADIUS服务器模板下时:

  • 如果不同RADIUS服务器模板下的共享密钥不同,则需要在每个RADIUS服务器模板视图下分别配置。
  • 如果所有RADIUS服务器模板下的共享密钥相同,则可以在系统视图下配置。配置命令为radius-serverip-address{ ipv4-address | ipv6-address }shared-keycipher key-string
  • RADIUS服务器模板视图下和系统视图下都配置RADIUS服务器的密钥时,系统视图下配置的RADIUS服务器密钥优先生效。 :::
  1. (可选)执行命令radius-server algorithm { loading-share | master-backup } [ based-user ] ,配置RADIUS服务器的运算法则。缺省情况下,RADIUS服务器采用基于单个用户的主备运算法则。当RADIUS服务器模板下配置多台认证或者计费服务器时,设备根据配置的运算法则和权重参数weight,决定如何选择RADIUS服务器:
  • 若选择主备算法,则权重参数weight决定主备,weight值较大者为主,如果weight值相同,则先配置的服务器为主服务器。
  • 如选择负载均衡算法,则权重参数weight决定报文的分配。
  1. (可选)执行命令radius-server { retransmit retry-times | timeout time-value } *,RADIUS请求报文的超时重传次数和超时时间。缺省情况下,RADIUS认证请求报文的超时重传次数为3,超时时间是5秒。
  2. (可选)配置设备向RADIUS服务器发送的报文中的用户名的格式。缺省情况下,设备向RADIUS服务器发送的报文中的用户名为用户原始输入的用户名,设备不对其进行修改。
  • 执行命令radius-server user-name domain-included,配置设备向RADIUS服务器发送的报文中的用户名包含域名。
  • 执行命令radius-server user-name original,配置设备向RADIUS服务器发送的报文中的用户名为用户原始输入的用户名,设备不对其进行修改。
  • 执行命令undo radius-server user-name domain-included,配置设备向RADIUS服务器发送的报文中用户名不包含域名
  • 执行命令undo radius-server user-name domain-included except-eap,配置除EAP认证外的其他认证方式,设备向RADIUS服务器发送的报文中的用户名不包含域名。
  1. (可选)执行命令radius-server traffic-unit { byte | kbyte | mbyte | gbyte },配置RADIUS服务器的流量单位。缺省情况下,设备以(byte)作为RADIUS流量单位。
  2. (可选)执行命令radius-attribute service-type with-authenonly-reauthen,配置重认证方式为只重认证不重授权。缺省情况下,重认证方式为重认证和重授权。当RADIUS服务器的Service-Type属性为Authenticate Only时,该功能才可以生效
  3. (可选)执行命令radius-server framed-ip-address no-user-ip enable,当用户发送的RADIUS认证请求报文中没有携带用户IP地址时,使能设备在RADIUS认证请求报文中封装RADIUS属性Framed-IP-Address的功能。缺省情况下,当用户发送的RADIUS认证请求报文中没有携带用户IP地址时,未使能设备在RADIUS认证请求报文中封装RADIUS属性Framed-IP-Address的功能。

    测试RADIUS服务器的连通性
    执行命令test-aaa user-nameuser-password radius-template template-name [ chap | pap| accounting [ start | realtime | stop ] ],测试设备与认证服务器或计费服务器的连通性,认证服务器或计费服务器是否可以正常对用户进行认证或计费。

    5.4 域下应用AAA方案与RADIUS服务器模板

    域统一管理AAA方案、服务器模板等配置信息,另外,域下还可以配置授权信息。用户属于哪个域就使用哪个域下的AAA配置信息。 :::success

  4. 执行命令system-view,进入系统视图。

  5. 执行命令aaa,进入AAA视图。
  6. 执行命令domain domain-name [ domain-index domain-index ],创建域并进入域视图或进入一个已存在的域视图。缺省情况下,设备存在两个域:“default”和“default_admin”。“default”用于普通接入用户的域,“default_admin”用于管理员的域。
  7. 执行命令authentication-scheme scheme-name,配置域下应用的认证方案。缺省情况下,“default”域使用名为“radius”的认证方案,“default_admin”域使用名为“default”的认证方案,其他域使用名为“radius”的认证方案。
  8. 执行命令accounting-scheme accounting-scheme-name,配置域下应用的计费方案。缺省情况下,域使用名为“default”的计费方案。“default”计费方案的策略为:计费模式为不计费,关闭实时计费开关。
  9. 执行命令radius-server template-name,配置域下应用的RADIUS服务器模板。缺省情况下,“default”域下绑定了名为“default”的RADIUS服务器模板,“default_admin”域下没有绑定RADIUS服务器模板,其他域下绑定了名为“default”的RADIUS服务器模板。
  10. (可选)执行命令accounting-copy radius-server template-name,开启RADIUS计费报文抄送功能并配置二级计费RADIUS服务器模板。缺省情况下,未开启RADIUS计费报文抄送功能。 ::: :::warning 医疗_消息.png 说明
  • 用户需保证配置的二级计费RADIUS服务器的IP地址与一级计费RADIUS服务器的IP地址不相同(包括主/备用RADIUS计费服务器)。
  • 域下配置的二级计费RADIUS服务器模板与域下用于认证和计费的RADIUS服务器模板不能相同,相同则无法配置系统会报错。 :::