隧道式EAP (TEAP)

本文介绍了一种名为隧道式EAP(TEAP)的新EAP协议,它将用户和设备的身份验证结合在一起。此外,还详细说明了TEAP部署的关键要素,包括ClearPass配置、Active Directory GPO配置、通过GPO进行自动注册以及其他需要注意的事项。

TEAP – 隧道式EAP

EAP(可扩展认证协议)是802.1x框架中用于通过集中认证服务器验证用户身份的标准。EAP因其灵活性而非常有效,允许在协议内使用不同的认证方法。目前,最常用的EAP认证方法是PEAP-MSCHAPv2(基于凭证的认证)和EAP-TLS(基于证书的认证)。通常,EAP框架只允许使用一种认证方法,但在使用隧道认证方法时,EAP也支持在安全隧道内链式使用多种认证方法。这意味着可以在单次认证请求中验证多个因素。尽管EAP链式认证有多种变体,但由于缺乏客户端支持,其广泛应用受到阻碍。隧道EAP(TEAP)是一种链式EAP认证方法(详见https://tools.ietf.org/html/rfc7170),自Windows 10版本2004(2020年5月)起,Windows 10和11平台已原生支持TEAP。然而,Mac和Linux平台尚未支持TEAP。

TEAP 协议

TEAP认证利用EAP框架,并通过RADIUS作为网络设备与AAA服务器之间的承载协议。TEAP使用TLS建立安全隧道,并在该隧道内使用内部EAP方法。它不支持不安全的TLS版本,如1.0或1.1。

TEAP认证分为两个不同的阶段。第一阶段通过TLS握手建立受保护的隧道。在这一阶段,匿名身份、TEAP版本、EAP方法类型以及TLS连接所需的信息在安全隧道之外进行交换。

为了确保安全,建议使用通用的匿名身份,以避免在RADIUS消息中暴露真实用户名。

如果启用了会话恢复,则只执行第一阶段,且不使用内部认证方法。如果会话恢复被禁用或持续时间已过,服务器和客户端将回退到完整认证。

TEAP的第二阶段交换在TLS隧道内进行。根据不同内部EAP方法的状态,AAA服务器可以选择返回Access-Accept或Reject。

在Windows设备上,TEAP用于在单个RADIUS请求中结合机器认证和用户认证。根据每种认证的状态,可以定义策略以返回Access-Accept、特定用户角色/VLAN或Reject。TEAP目前支持EAP-MSCHAPv2或EAP-TLS作为内部认证方法,并且可以任意组合使用。例如,可以使用PEAP-MSCHAPv2进行机器认证,而使用EAP-TLS进行用户认证,反之亦然。请注意,由于凭证认证存在固有的安全风险,建议尽可能使用基于证书的认证。

TEAP 的应用场景

将用户和计算机身份验证相结合的能力,有助于解决当前Windows域身份验证中的许多问题。随着Windows 10/11 22H2版本的发布,微软启用了凭据保护功能,这在企业和教育版本中禁用了基于凭据的身份验证。这是微软向基于证书的身份验证转变的更广泛努力的一部分。虽然这提高了安全性,但在用户证书注册和身份验证方面也带来了一些操作上的挑战。

一个常见的场景是将笔记本电脑交给新员工。作为加载镜像过程的一部分,可以将笔记本电脑加入AD域并安装机器证书。然而,用户证书只能在笔记本电脑分配给用户后才能安装。在传统的EAP-TLS身份验证中,当新用户使用其域凭据登录时,由于没有用户证书,用户身份验证会失败。这导致设备失去网络连接,意味着用户证书的注册必须在开放网络或公司网络之外进行。

借助TEAP,现在可以在同一请求中灵活地进行机器认证或用户认证。当用户证书不存在时,笔记本电脑不会因认证失败而失去网络连接,而是可以通过机器认证保持连接,从而提供基本的网络访问。一旦证书注册过程完成并且用户证书可用于认证,设备即可获得完整的网络访问权限。

通过证书自动注册,用户身份验证似乎取决于用户登录和证书注册的时间。为了提供更一致的用户体验,建议使用登录脚本,在初始证书注册后强制重新验证。有关示例将在本文档后面的自动注册部分中介绍。

在许多组织中,常见的是多用户共享使用Windows机器。为了确保每位登录用户能够安全地进行身份验证,需要使用独立的用户证书。传统的EAP-TLS协议可以利用机器证书在没有用户登录时保持连接。然而,当新用户登录且没有用户证书时,EAP-TLS就会失效。TEAP协议则有效解决了在共享设备上使用证书进行用户和机器身份验证的挑战。在之前的场景中,设备通过机器证书保持网络连接,但访问权限有限。当第一位用户登录时,设备仍通过机器认证保持连接,使用户能够完成证书注册过程。一旦证书注册完成,设备便同时进行用户和机器认证,此时设备可以获得完全访问权限。当该用户注销后,设备仅进行机器认证,并恢复到有限的网络访问状态,直到下一位用户登录并完成相同的步骤以获得完全访问权限。

TEAP 在设备进行机器认证时,即使不在网络覆盖范围内,也能发挥作用。当设备进入网络范围时,它只进行用户认证。然而,使用 TEAP 时,每次设备连接到网络,客户端都会尝试同时进行机器认证和用户认证。TEAP 也已在 eduroam 部署中用于机器认证。随着其应用的增加,TEAP 有望在域认证方面解决更多问题。

ClearPass 配置

为了使ClearPass能够与TEAP配合使用,需要进行一些配置。由于TEAP并未作为默认的认证方法包含在ClearPass中,因此我们需要创建一个新的认证方法,并配置相应的认证源过滤查询、角色映射、执行策略和执行配置文件。

创建新的身份验证方法

首先,我们需要通过导航至“配置 > 身份验证 > 方法 > 添加”,选择类型为“TEAP”来创建新的身份验证方法。

在使用 EAP-TEAP 时,如果可用,机器和用户的凭据会同时发送。内部的两种认证方法被分为方法一和方法二,其中方法一通常用于机器认证,而方法二通常用于用户认证。因此,一个单一的认证请求会包含与每个内部方法相关的两个不同用户名。下方截图中显示的“访问追踪器中的用户名”字段决定了哪个用户名会在访问追踪器中显示。

支持的内部认证方法类型包括 EAP-MSCHAPv2 和 EAP-TLS。请注意,在 ClearPass 中,您可以为“EAP-TLS”类型定义不同的认证方法,并添加授权和 OCSP 设置。所有“EAP-TLS”类型的方法都可以供选择。

在选择内部认证方法后,还可以选择其中一个作为默认选项,以优化认证流程。

自定义 Active Directory 授权过滤器

默认的活动目录授权过滤器使用“Authentication:Username”属性从AD中获取用户属性。这与TEAP用于用户身份验证时配合良好。如果您只需获取用户身份验证的授权属性,则无需进行进一步的自定义,可以直接跳到下一部分。

(&(sAMAccountName=%{Authentication:Username})(objectClass=user))

如果需要获取机器的属性,则需要在 AD 认证源中添加一个额外的过滤器。

要添加自定义过滤器,请依次进入“配置”>“身份验证”>“来源”,然后点击需要添加自定义过滤器的活动目录身份验证来源。接着,进入“属性”选项卡,点击“添加更多过滤器”。

请添加以下过滤查询以获取机器属性,例如组成员资格。

(&(sAMAccountName=%{Authentication:TEAP-Method-1-Username})(objectClass=computer))

在默认过滤器和自定义过滤器之间,ClearPass 现在可以从活动目录中获取机器和用户组成员资格以及其他属性,如下所示:

创建角色和角色映射

为了为机器和用户认证提供不同的访问级别,请在“配置 > 身份 > 角色 > 添加”中创建新的角色:“TEAP 机器认证”和“TEAP 用户认证”。

请参照下方截图创建角色映射,以便在ClearPass中为用户和机器认证分配不同的角色。

创建执行配置文件和策略

在仅进行机器认证的情况下,Method-2 的用户名为空。如果在认证方法中将“Access-Tracker 中的用户名”属性设置为 Method-2,那么访问追踪器中的条目将缺少用户名,如下所示。

可以通过使用强制配置文件在身份验证后发送适当的用户名来解决此问题。首先,我们需要创建一个强制配置文件,以便在 RADIUS Access-Accept 中发送用户名。

接下来,我们需要创建一个执行配置文件,以便在RADIUS Access-Accept中发送机器名称。

最后,将这两个执行配置文件合并为一个执行策略,如下所示:

当用户认证成功时,我们返回用户名;如果只有机器认证成功,我们则返回机器名。这样,无论是用户名还是机器名,都会在访问追踪器中显示,而不是在用户名字段中留下空白。

创建服务

TEAP可以通过添加之前讨论的角色映射和执行策略条件,集成到现有的Windows身份验证服务中。在制定策略条件时,必须考虑到运行不支持TEAP操作系统的设备。TEAP还包含额外的计算属性,如TEAP-Method-1-Status和TEAP-Method-2-Status,这些可以用作策略条件的一部分。计算属性列表还包括用于身份验证的客户端证书的属性。请注意,如果设备仅进行机器身份验证,则机器证书属性可用。当设备同时使用证书进行机器和用户身份验证时,计算属性将仅包含用户证书的属性。

TEAP认证请求示例:

部署TEAP

Windows 10 2004 版本于2020年5月发布,后续版本原生支持TEAP。尽管可以手动配置客户端以实现TEAP认证,但企业需要一种方法来将网络配置文件部署到大量设备上。活动目录组策略是将TEAP配置文件推送到加入域的设备上的常用方法。另一个选择是使用MDM解决方案,如Microsoft Intune,来推送配置文件。接下来,我们将简要讨论这些部署选项。

配置 Windows 客户端

EAP-TEAP 是可在下述客户端中选择的认证方法之一:

在 EAP-TEAP 设置中,可以选择主要和次要的认证方法。请注意,建议启用身份隐私,以防止真实用户名在 TLS 隧道外以明文形式暴露。

每种身份验证方法都有额外的配置选项,可用于选择受信任的根证书颁发机构和服务器名称。

配置 AD 组策略

创建一个新的组策略对象(GPO),并将其应用于相应的组织单位(OU)。在此示例中,由于该 GPO 涵盖了用户和计算机的身份验证,因此选择了用户和计算机的 OU。

在GPO中,TEAP可以用于有线、无线或两者兼有的网络。在这里,一个名为TME-Secure的网络策略已为无线网络创建。

TEAP认证方法仅适用于Windows Server 2022。对于较早的版本,我们需要导入一个包含TEAP网络设置的XML文件,具体步骤将在本文后面详细说明。

在TEAP属性中,您可以选择主要和次要的身份验证方法。如果下拉菜单无法正常工作,您可以尝试使用键盘上的上下箭头键在不同的身份验证方法之间切换。

使用XML备份导入方法配置TEAP SSID

在2022年之前的Windows服务器中,TEAP身份验证方法尚不可用。因此,我们首先需要在一台标准的Windows计算机上手动配置TEAP,并使用netsh命令将WLAN配置文件导出为XML格式。接下来,我们需要在GPO中替换EAP配置的XML文件。

1、在GPO中配置一个标准的EAP-TLS SSID。

2、右键点击并备份组策略对象。

这将创建一个包含组策略的文件夹。

该文件夹将包含一个名为backup.xml的文件,其中保存了WLAN配置。

3、手动在 Windows 客户端上配置 TEAP。选择合适的主要和次要 EAP 方法,并配置 EAP 方法的高级设置,如受信任的根证书颁发机构。

4、请导出使用以下 netsh 命令创建的 TEAP Wi-Fi 配置文件:

netsh wlan export profile “TEAP-Test-SSID” folder=C:\WiFi-Profile interface=WiFi

5、请打开TEAP Wi-Fi配置文件,并复制其中的EAPConfig XML部分。

6、请打开组策略备份中的backup.xml文件,并将步骤5中复制的部分替换为EAPConfig。

7、从备份位置还原组策略对象。

使用GPO进行证书自动注册

通过组策略自动注册功能,用户在登录计算机时可以自动获取证书。有关配置自动注册的步骤,请参见此处:

https://learn.microsoft.com/en-us/windows-server/networking/core-network-guide/cncg/server-certs/configure-server-certificate-autoenrollment

必须确保机器与域控制器之间的网络连接正常,以便进行GPO更新和用户证书注册。

第一步是在组策略对象下的“公钥策略”中启用自动注册功能。

启用自动注册、证书续订和证书更新功能。

在证书颁发机构下,为用户和机器证书创建模板。

CA的安全权限还应允许适当的用户组拥有“请求证书”的权限。

重新连接注册后

请注意,在自动注册的情况下,可能会出现TEAP认证在证书注册完成之前发生的情况。这意味着只有机器认证能够通过,因此设备仍然停留在机器角色。体验的差异取决于证书注册的速度和网络配置文件推送的时间。为了获得更一致的用户体验,可以使用不同的方法,如仅在首次登录时运行的登录脚本、计划任务、会话超时等,以确定性地重置网络并强制重新认证,此时设备应能够完成用户和机器的双重认证。

以下文章提供了有关如何设置首次登录时运行的登录脚本的详细信息:

https://woshub.com/run-gpo-logon-script-once

https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/dn789190(v=ws.11)

以下是一个示例登录批处理脚本,该脚本仅在首次登录时执行,具体依据上文提到的文章。

@echo off

IF EXIST C:\Users\UserName%\AppData\app_init.txt GOTO END

date /t >> C:\Users\UserName%\AppData\app_init.txt

time /t >> C:\Users\UserName%\AppData\app_init.txt

REM Put your code here, which will be executed once

REM Wait for 60 seconds for the certificate enrollment to complete before triggering auto reconnect

Start-Sleep -Seconds 60

netsh wlan disconnect interface=“Wi-Fi”

Start-Sleep -Seconds 5

netsh wlan connect interface=“Wi-Fi” ssid=“TME-Secure” name=“TME-Secure”

:END

Microsoft Intune TEAP 配置

Microsoft Intune 是一款功能强大的云端终端管理系统,可用于管理应用程序和设备。Intune 能够将网络配置文件和证书推送到受管理的设备上,现在还支持配置 TEAP 网络配置文件,并使用 SCEP 协议注册用户和设备证书。

要配置有线 TEAP 配置文件,请依次进入 Intune > 设备 > Windows > 配置文件 > 创建配置文件。

将平台设置为“Windows 10及更高版本”,选择配置文件类型为“模板”,然后选择“有线网络”模板,最后点击“创建”。

为 TEAP 配置文件命名

请仔细审查并适当设置范围和适用性规则。在配置设置中,选择 EAP 类型为隧道式 EAP(TEAP),并在“证书服务器名称”下提供 AAA 服务器的名称。在此,我们使用证书进行主认证和次认证,并将 ClearPass Onboard 作为 SCEP 服务器。关于在 Intune 管理的设备上使用 Onboard CA,还有一份单独的技术说明。

https://www.arubanetworks.com/techdocs/ClearPass/TechNotes/Extensions-Intune-Onboard/Default.htm

对于无线设备,需要进行一些额外的配置步骤。在撰写本文时,Intune 尚不支持在无线网络配置文件中使用 EAP-TEAP。然而,Intune 支持使用自定义 XML 来配置网络配置文件。要配置无线 TEAP 配置文件,请依次导航至 Intune > 设备 > Windows > 配置文件 > 创建配置文件。

将平台设置为“Windows 8.1 及更高版本”,将配置文件类型设置为“WIFI”,然后点击“创建”。

为TEAP配置文件命名

在配置设置中,为连接命名,并上传之前在“使用XML备份导入方法配置TEAP SSID”一节中从Windows设备导出的TEAP网络配置文件XML。

根据需要将配置文件分配到适当的组,并完成配置文件的创建。

This Post Has One Comment

  1. 请问做TEAP 认证时,是先认证机器还是先认证用户,ARUBA无线控制器配置TEAP认证时,配置方法是否和802.1x 配置方法一致,请问有配置知道吗

请登录评论。