MAC认证简介

定义

MAC认证,全称MAC地址认证,是一种基于终端接入接口和终端MAC地址对用户的访问权限进行控制的认证方法。

优点

终端不需要安装任何客户端软件、不需要用户在终端手动输入用户名和密码。能够对不具备802.1X认证能力的终端进行认证,如打印机和传真机等哑终端。

认证系统

图3-2所示,MAC认证系统为典型的客户端/服务器结构,包括三个实体:终端、接入设备和认证服务器。

图3-2 MAC认证系统

  • 终端:尝试接入网络的终端设备。
  • 接入设备:是终端访问网络的接入控制点,按照管理员制定的访问控制策略,实施相应的准入控制(允许、拒绝、隔离或限制)。
  • 认证服务器:用于确认尝试接入网络的终端身份是否合法,并为身份合法的终端指定对应的网络访问权限。

用户名形式

MAC认证过程中,不需要用户在终端手动输入用户名和密码。但需要在接入设备和认证服务器上预先配置。接入设备上支持配置的MAC认证用户名形式如表3-2所示,实际应用中,需要确保配置的用户名形式认证服务器上也支持。

表3-2 MAC认证用户名形式

MAC认证时使用的用户名

密码

使用场景

终端的MAC地址

两种形式:

  1. 终端的MAC地址
  2. 指定的密码

用于终端数量较少且终端MAC地址容易获取的场景,例如对少量接入网络的打印机进行认证。

接入设备上配置终端使用MAC地址作为用户名进行MAC认证时,认证服务器上需要设置每个终端的用户名为其对应的MAC地址。

指定的用户名

指定的密码

用于终端比较可信的网络环境。

接入设备上配置所有终端均使用一个指定的用户名和密码进行MAC认证时,认证服务器上仅需要设置一个用户名和密码就可以满足所有终端的认证需求。

DHCP选项信息,有三种形式:

  • circuit-id子选项
  • remote-id子选项
  • circuit-id子选项和remote-id子选项的组合

指定的密码

该场景下终端需通过DHCP方式获取IP地址,且需保证DHCP报文能够触发MAC认证。

MAC认证触发方式和报文交互流程

对于MAC认证用户密码的处理,有口令认证协议PAP(Password Authentication Protocol)和质询握手认证协议CHAP(Challenge-Handshake Authentication Protocol)两种方式:

  • PAP:设备将MAC地址、共享秘钥、随机值依次排列顺序,经过MD5算法进行HASH处理后封装在属性名User-Password中。
  • CHAP:设备将CHAP ID、MAC地址、随机值依次排列顺序,经过MD5算法进行HASH处理后封装在属性名CHAP-Password和CHAP-Challenge中。

采用PAP和CHAP方式的MAC认证流程分别如图3-3图3-4所示。两者实现方式相似,以下以认证服务器使用RADIUS服务器为例,重点介绍PAP方式的交互过程。

图3-3 MAC认证流程(PAP方式)

  1. 接入设备收到终端发送的ARP/DHCP/DHCPv6/ND报文,触发MAC认证。
  2. 设备随机生成一个随机值,并对MAC认证用户的MAC地址、共享秘钥、随机值依次排列后经过MD5算法进行HASH处理,然后将用户名、HASH处理结果以及随机值封装在RADIUS认证请求报文中发送给RADIUS服务器,请求RADIUS服务器对该终端进行MAC认证。
  3. RADIUS服务器使用收到的随机值对本地数据库中对应MAC认证用户进行MAC地址、共享秘钥、随机值依次排列后经过MD5算法进行HASH处理。如果RADIUS服务器的HASH处理结果与设备发来的HASH处理结果相同,则向设备发送认证接受报文,表示终端MAC认证成功,允许该终端访问网络。

图3-4 MAC认证流程(CHAP方式)

MAC认证支持的授权信息

认证用于确认尝试接入网络的用户身份是否合法,而授权则用于指定身份合法的用户所能拥有的网络访问权限,即用户能够访问哪些资源。此处以RADIUS服务器授权为例,说明几种常用授权参数的含义,以及设备侧和服务器侧涉及的配置。其他授权方式的授权方法以及更多可授权的参数请参见《CLI配置指南-用户接入与认证配置》中“AAA配置”的(可选)配置业务方案

VLAN

为了将受限的网络资源与未认证用户隔离,通常将受限的网络资源和未认证的用户划分到不同的VLAN。用户认证成功后,认证服务器将指定VLAN授权给用户。此时,设备会将用户所属的VLAN修改为授权的VLAN,授权的VLAN并不改变接口的配置。但是,授权的VLAN优先级高于用户配置的VLAN,即用户认证成功后生效的VLAN是授权的VLAN,用户下线后继续使用配置的VLAN。授权VLAN时:

设备侧,需要完成VLAN的部署。

RADIUS服务器侧,必须同时设置以下RADIUS标准属性:

  • Tunnel-Type:隧道采用的协议类型,目前仅支持取值为13,表示VLAN协议。
  • Tunnel-Medium-Type:隧道承载媒介类型,固定为6,表示以太类型。
  • Tunnel-Private-Group-ID:支持通过VLAN编号、VLAN描述信息、VLAN名称和VLAN Pool授权,并且授权生效顺序为:VLAN编号 > VLAN描述信息 > VLAN名称 > VLAN Pool。

ACL

用户认证成功后,认证服务器将指定ACL授权给用户,则设备会根据该ACL对用户报文进行控制。

  • 如果用户报文匹配到该ACL中动作为permit的规则,则允许其通过。
  • 如果用户报文匹配到该ACL中动作为deny的规则,则将其丢弃。

RADIUS服务器授权ACL的方法有:

  • 授权静态ACL:RADIUS服务器侧通过RADIUS标准属性Filter-IdHW-IPv6-Filter-ID将ACL ID授权给用户。为使授权的ACL生效,需要提前在设备上配置相应的ACL及规则。
  • 授权动态ACL:RADIUS服务器侧通过华为RADIUS扩展属性HW-Data-Filter将ACL ID、ACL规则和DACL授权给用户。授权动态ACL时,设备侧不需要进行ACL的相关配置,ACL及其规则都是在RADIUS服务器侧完成的。

UCL组

用户控制列表UCL组(User Control List)是网络成员的集合。UCL组里面的成员,可以是PC、手机等网络终端设备。借助UCL组,管理员可以将具有相同网络访问策略的一类用户划分为同一个组,然后为其部署组内或组间访问策略。相对于为每个用户部署网络访问策略,基于UCL组的网络控制方案能够极大的减少管理员的工作量。

RADIUS服务器授权UCL组的方法有:

  • 授权UCL组名称:RADIUS服务器通过RADIUS标准属性Filter-Id将UCL组名称授权给指定用户。
  • 授权UCL组ID:RADIUS服务器通过华为RADIUS扩展属性HW-UCL-Group将UCL组ID授权给指定用户。

无论是哪一种授权UCL组方式,都必须提前在设备上配置相应的UCL组及UCL组的组内或者组间访问策略。

free-rule

用户认证成功之前,为满足用户基本的网络访问需求,需要用户认证成功前就能获取部分网络访问权限。可在free-rule模板中配置free-rule规则,满足用户的认证成功前的网络访问需求。

MAC重认证

MAC认证成功用户

若管理员在认证服务器上修改了某一用户的访问权限等参数,此时如果用户已经在线,则需要及时对该用户进行重认证以确保用户在新环境下的合法性。MAC认证成功用户重认证方式如表3-3所示。

表3-3 MAC认证成功用户重认证方式

配置点

方式

配置命令

在接入设备侧配置

对MAC认证成功用户进行周期性重认证,从接入设备收到RADIUS认证接受报文开始计算,reauthenticate-period-value时间之后,接入设备会重新请求RADIUS服务器对该终端进行MAC认证。

mac-authen reauthenticate

mac-authen timer reauthenticate-period reauthenticate-period-value

手动对指定MAC地址进行单次重认证。

mac-authen reauthenticate mac-address mac-address

在RADIUS服务器侧配置

对MAC认证成功的用户下发RADIUS标准属性Session-TimeoutTermination-Action。其中,Session-Timeout属性值为用户在线时长定时器,Termination-Action属性值为1表示对用户进行重认证。当用户在线时长达到Session-Timeout的属性值时,设备会对用户进行重认证。

异常认证状态下的用户

MAC认证流程章节可以看出,MAC认证时可能会存在RADIUS服务器Down或用户认证失败等异常状况。缺省情况下,异常认证状态下的用户将无任何网络访问权限。但一般情况下,会对其授予部分网络访问权限。当用户在线时间达到老化时间后,设备将删除用户表项,并收回授予用户的网络访问权限。为使这部分用户能够及时认证成功,获取正常的网络访问权限,设备可以对这些用户进行重认证。该部分用户的重认证方式如表3-4所示。

表3-4 异常认证状态下的用户重认证方式

用户状态

配置命令

RADIUS服务器Down

authentication event authen-server-up action re-authen:配置当RADIUS服务器真正UP时对用户进行重认证。

认证失败

authentication timer re-authen authen-fail authen-fail-time:配置对认证失败用户进行周期性重认证。

预连接

authentication timer re-authen pre-authen pre-authen-time:配置对预连接用户进行周期性重认证。

MAC认证用户下线

当用户已下线,而接入设备和RADIUS服务器未感知到该用户已下线时,会产生以下问题:

  • RADIUS服务器仍会对该用户进行计费,造成误计费。
  • 存在非法用户仿冒合法用户IP地址和MAC地址接入网络的风险。
  • 已下线用户数量过多的情况下,还会占用设备用户规格,可能会导致其他用户无法接入网络。

因此,接入设备要能够及时感知到用户已下线,删除该用户表项,并通知RADIUS服务器停止对该用户进行计费。

接入设备控制用户下线

接入设备控制用户下线有两种方式:

  • 在接入设备上执行命令cut access-user强制指定用户下线。
  • 在接入设备上配置用户探测功能,用于探测用户是否在线。当用户在指定的时间内无响应,则认为用户下线,删除用户表项。

当管理员发现非法用户在线,或在测试中想让某一用户下线后重新上线,可以通过在设备上执行命令强制该用户下线。对于正常接入用户,会通过ARP探测对用户在线状态进行确认,如果探测到用户下线,则进行下线处理,删除用户表项。

图3-5 用户下线探测流程(以握手次数3次为例)

  1. 用户发送任意报文触发MAC认证,同时启动探测定时器。
  2. 如果在若干个T时间内,接入设备均能收到客户端流量,则用户在线。
  3. 用户最后一次发送报文。在这个T时间结束时,由于有客户端流量,接入设备判断用户在线。重启握手定时器。假设用户的握手周期为T,握手次数为3(通过命令authentication timer handshake-period handshake-period handshake-times handshake-times-value配置。handshake-period=T,handshake-times-value=3)。以下情况下,接入设备会删除用户表项,对用户进行下线处理。
    1. 在第一个T时间内,接入设备未收到客户端流量,则发送第一次ARP请求,并且此时客户端无响应。
    2. 在第二个T时间内,接入设备仍未收到客户端流量,则发送第二次ARP请求,并且客户端无响应。
    3. 在第三个T时间后,接入设备仍未收到客户端流量,则ARP探测失败,接入设备删除用户表项。

服务器控制用户下线

服务器控制用户下线有以下方式:

  • RADIUS服务器可通过DM报文(Disconnect Message)强制用户下线。DM(Disconnect Message)是指用户离线报文,即由RADIUS服务器端主动发起的用户下线的报文。
  • RADIUS服务器通过授权RADIUS标准属性Session-Timeout和Termination-Action。其中,Session-Timeout为用户在线时长定时器,Termination-Action属性值为0表示将用户下线。当用户在线的时长达到定时器指定的数值时,设备会将用户下线。

MAC认证静默定时器

图3-6所示,在MAC认证过程中,若用户在短时间内频繁认证失败,一方面会占用过多的系统资源,另一方面存在攻击者通过多次尝试输入用户名和密码的方式,暴力破解用户名和密码的风险。使能静默功能后,若某一用户在60秒内认证失败的次数达到指定值,则设备会将该用户静默一段时间,静默期间,设备会丢弃该用户的MAC认证请求。

图3-6 MAC认证静默流程

在以下场景中,MAC认证静默功能不生效:

  • 已执行authentication pre-authen-access enable命令使能预连接功能。
  • 已执行authentication event action authorize命令配置异常认证状态下用户的网络访问权限。

MAC认证流程

在用户进行MAC认证的过程中,接入设备的处理逻辑如图3-7所示,此处以RADIUS认证方式为例进行说明。

  1. 接入设备检测到新的MAC地址后,即触发对其进行MAC认证。
  2. 接入设备向RADIUS服务器发送RADIUS认证请求报文对该终端进行MAC认证。
    1. 如果MAC认证成功,则用户上线。
    2. 如果MAC认证失败,且RADIUS服务器状态为Down(详见RADIUS服务器状态探测),设备依次检查其是否配置RADIUS服务器Down时对用户进行授权、是否配置对认证失败用户进行授权以及是否配置对预连接用户进行授权(详见NAC逃生机制),如果有,则终端获取相应权限;否则终端无任何网络访问权限。
    3. 如果MAC认证失败,且RADIUS服务器状态为Up,设备依次检查是否配置对认证失败用户进行授权以及是否配置对预连接用户进行授权,如果有,则终端获取相应权限;否则终端无任何网络访问权限。
  3. 对于异常认证状态下的用户,设备能够配置对其进行重认证,使其尽快获取正常的网络访问权限;对于MAC认证成功的用户,对其进行重认证也能保证终端的合法性(详见MAC重认证)。
  4. 当用户认证成功后,重认证失败时,如果是认证服务器Down时,则依次检查认证服务器Down时的保持原有网络访问权限,认证服务器Down时的网络访问权限,用户在认证失败时的网络访问权限,用户在预连接阶段的网络访问权限,按是否配置相应权限处理。如果是认证服务器Up但无响应时,则依次检查认证服务器无响应时保持原有网络访问权限,用户在认证失败时的网络访问权限,用户在预连接阶段的网络访问权限,按是否配置相应权限处理。

图3-7 接入设备的处理逻辑

参考文献:华为官网https://support.huawei.com/enterprise/zh/doc/EDOC1100334400/cb9769e0

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐