附录:与 macOS 11(及更高版本)相关的 Cisco Secure Client 更改

在 macOS 11 及更高版本上,Cisco Secure Client 利用 macOS 系统扩展框架,而以前使用的是现已过时的内核扩展框架。管理员必须批准 Cisco Secure Client 系统扩展,如以下部分所述。此外,如果遇到严重的系统扩展(或相关的操作系统框架)问题,作为最后的变通方法,您可以按照故障转移至 Cisco Secure Client 内核扩展的步骤进行操作,但这仅出于此目的而安装且不会再默认使用。

关于 Cisco Secure Client 系统扩展

Cisco Secure Client 在 macOS 11(及更高版本)上使用网络系统扩展,捆绑在名为 Cisco Secure Client - Socket Filter 的应用程序中。该应用程序会控制扩展的激活和停用,并安装在 /Applications/Cisco 下。

Cisco Secure Client 扩展包含以下三个组件,可在 macOS 系统首选项 - 网络用户界面窗口中显示:
  • DNS 代理

  • 应用程序/透明代理

  • 内容过滤器

Cisco Secure Client 要求其系统扩展及其所有组件就能处于活动状态方可正常运行,这意味着上述组件全部安装到位,并在 macOS 网络用户界面的左窗格中显示为绿色(正在运行)。

批准 Cisco Secure Client 系统扩展

Cisco Secure Client 系统扩展激活需要由具有管理员权限的最终用户批准或 MDM 批准:

批准系统扩展加载/激活

按照操作系统提示或更明确的 Cisco Secure Client 通知应用程序的说明,批准 Cisco Secure Client 系统扩展及其内容过滤器组件。

过程


步骤 1

当您从 macOS 收到“系统扩展已阻止”(System Extension Blocked) 消息时,点击 Cisco Secure Client - 通知应用程序中的打开首选项 (Open Preferences) 按钮或打开安全首选项 (Open Security Preferences) 按钮。您还可以导航到“系统首选项”(System Preferences) 应用程序并转到“安全和隐私”(Security&Privacy) 窗口。

步骤 2

点击左下角的锁,然后提供请求的凭证以解锁并允许更改。

步骤 3

点击安全和隐私窗口中的允许 (Allow),接受思科 Cisco Secure Client - 套接字过滤器扩展。


当多个系统扩展需要审批时,按钮标记为“详细信息...”(Details...)。。在这种情况下,点击详细信息...(Details...),选中Cisco Secure Client - 套接字过滤器 (Cisco AnyConnect Socket Filter) 复选框,点击确定 (OK),然后批准需要“允许”(Allow) 的任何后续提示。

下一步做什么

您将收到批准扩展内容过滤器组件的提示,并在批准后收到通知。

使用 MDM 批准系统扩展

使用管理配置文件具有以下设置的 SystemExtensions 负载来批准 Cisco Secure Client 系统扩展而无需最终用户交互:

特性

团队标识符

DE8Y96K9QP

捆绑包标识符

com.cisco.anyconnect.macos.acsockext

系统扩展类型

NetworkExtension

使用以下 WebContentFilter 负载设置来批准扩展的内容过滤器组件:

特性

AutoFilterEnabled

false

FilterBrowsers

false

FilterSockets

true

FilterPackets

false

FilterGrade

防火墙

FilterDataProviderBundleIdentifier

com.cisco.anyconnect.macos.acsockext

FilterDataProviderDesignatedRequirement

anchor apple generic and identifier "com.cisco.anyconnect.macos.acsockext" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = DE8Y96K9QP)

PluginBundleID

com.cisco.anyconnect.macos.acsock

VendorConfig

UserDefinedName

思科 AnyConnect 内容过滤器

确认激活 Cisco Secure Client 系统扩展

要确认 Cisco Secure Client 系统扩展是否已获批准并激活,请运行 systemextensionsctl list 命令:

% systemextensionsctl list
1 extension(s)
--- com.apple.system_extension.network_extension
enabled active teamID bundleID (version) name [state]
* * DE8Y96K9QP com.cisco.anyconnect.macos.acsockext
(5.0.00xxx/5.0..00xxx) Cisco Secure Client - Socket Filter Extension
[activated enabled]

您还可以检查系统首选项网络 UI 以确认所有三个 Cisco Secure Client 扩展组件是否均已激活。

停用 Cisco Secure Client 系统扩展

Cisco Secure Client 卸载期间,系统会提示用户输入管理员凭证,以便批准停用系统扩展。在 macOS 12 及更高版本上,在部署将 RemovableSystemExtensions 属性添加到 SystemExtensions 负载的管理配置文件后,可以以静默方式删除 Cisco Secure Client 系统扩展。此属性必须包含 Cisco Secure Client 系统扩展的捆绑包标识符 (com.cisco.anyconnect.macos.acsockext)。



仅当管理员希望自动执行 Cisco Secure Client 卸载时,才应使用此管理配置文件配置,因为它授予任何具有 root 权限的用户或进程删除 Cisco Secure Client 系统扩展的能力,而不会提示用户输入密码。


故障转移到内核扩展

Cisco Secure Client 仍在 macOS 11(及更高版本)上安装其内核扩展;但是,只有在出现关键系统扩展(或相关操作系统框架)问题时,才可将其作为备用方案使用,而且只能在思科技术支持中心 (TAC) 的指导下使用,因为 Apple 已在 macOS 10.15 中弃用了内核扩展。在 macOS 11(及更高版本)上加载之前,内核扩展需要通过 MDM 审批。最终用户审批不再可供选择。

开始之前

仅将这些步骤用作最后的解决方法。

过程


步骤 1

使用管理配置文件的 SystemPolicyKernelExtensions 负载通过以下设置来批准 Cisco Secure Client 内核扩展:

特性

团队标识符

DE8Y96K9QP

捆绑包标识符

com.cisco.kext.acsock

MDM 配置文件将进行安装。

步骤 2

运行以下会导致 Cisco Secure Client 停用系统扩展并开始使用内核扩展的命令。系统将提示您输入管理员凭证。

  • 在 macOS 13 及更高版本上:

    % osascript -e 'quit app "Cisco Secure Client - AnyConnect VPN Service.app"' && open -W -a "/opt/cisco/secureclient/bin/Cisco Secure Client - AnyConnect VPN Service.app" --args uninstall && sudo /opt/cisco/secureclient/kdf/bin/acsocktool -kf && open -a "/opt/cisco/secureclient/bin/Cisco Secure Client - AnyConnect VPN Service.app"

  • 在 macOS 12 及更早版本上:

    % sudo launchctl unload /Library/LaunchDaemons/com.cisco.secureclient.vpnagentd.plist && sudo /opt/cisco/secureclient/kdf/bin/acsocktool -kf && sudo launchctl load /Library/LaunchDaemons/com.cisco.secureclient.vpnagentd.plist

步骤 3

运行以下命令以验证是否已加载内核扩展:% kextstat | grep com.cisco.kext.acsock


如果 Cisco Secure Client 无法加载其内核扩展,请执行重新引导。

恢复到系统扩展

如果思科 TAC 确认修复了系统扩展问题(并消除了故障转移到内核扩展的需求),则可运行以下命令,指示 Cisco Secure Client 切换回系统扩展:命令取决于您所运行的 Cisco Secure Client 版本。

如果思科 TAC 确认修复了系统扩展问题,请安装建议的 Cisco Secure Client 或 macOS 版本的修复程序。

应用建议的修复后(从而消除故障转移到内核扩展的需要),运行以下命令,指示 Cisco Secure Client 切换回系统扩展。命令取决于您所运行的 macOS 版本。

在 macOS 13 及更高版本上:

% osascript -e 'quit app "Cisco Secure Client - AnyConnect VPN Service.app"' && open -W -a "/opt/cisco/secureclient/bin/Cisco Secure Client - AnyConnect VPN Service.app" --args uninstall && sudo /opt/cisco/secureclient/kdf/bin/acsocktool -kfr && open -a "/opt/cisco/secureclient/bin/Cisco Secure Client - AnyConnect VPN Service.app"

在 macOS 12 及更早版本上:

% sudo launchctl unload /Library/LaunchDaemons/com.cisco.secureclient.vpnagentd.plist && sudo /opt/cisco/secureclient/kdf/bin/acsocktool -kfr && sudo launchctl load /Library/LaunchDaemons/com.cisco.secureclient.vpnagentd.plist

Cisco Secure Client 系统和内核扩展批准的示例 MDM 配置文件

使用以下 MDM 配置文件来加载 Cisco Secure Client 系统和内核扩展,包括系统扩展的内容过滤器组件。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

      <dict>

      <key>PayloadContent</key>

      <array>

            <dict>

                  <key>AllowUserOverrides</key>

                  <true/>

                  <key>AllowedKernelExtensions</key>

                  <dict>

                        <key>DE8Y96K9QP</key>

                        <array>

                        <string>com.cisco.kext.acsock</string>

                        </array>

                  </dict>

                  <key>PayloadDescription</key>

                  <string></string>

                  <key>PayloadDisplayName</key>

                  <string>Cisco Secure Client Kernel Extension</string>

                  <key>PayloadEnabled</key>

                  <true/>

                  <key>PayloadIdentifier</key>

                  <string>37C29CF2-A783-411D-B2C7-100EDDFBE223</string>

                  <key>PayloadOrganization</key>

                  <string>Cisco Systems, Inc.</string>

                  <key>PayloadType</key>

                  <string>com.apple.syspolicy.kernel-extension-policy</string>

                  <key>PayloadUUID</key>

                  <string>37C29CF2-A783-411D-B2C7-100EDDFBE223</string>

                  <key>PayloadVersion</key>

                  <integer>1</integer>

            </dict>

            <dict>

                  <key>AllowUserOverrides</key>

                  <true/>

                  <key>AllowedSystemExtensions</key>

                  <dict>

                        <key>DE8Y96K9QP</key>

                        <array>

                        <string>com.cisco.anyconnect.macos.acsockext</string>

                        </array>

                  </dict>

                  <key>PayloadDescription</key>

                  <string></string>

                  <key>PayloadDisplayName</key>

                  <string>Cisco Secure Client System Extension</string>

                  <key>PayloadEnabled</key>

                  <true/>

                  <key>PayloadIdentifier</key>

                  <string>A8364220-5D8D-40A9-Af66-1Fbfef94E116</string>

                  <key>PayloadOrganization</key>

                  <string>Cisco Systems, Inc.</string>

                  <key>PayloadType</key>

                  <string>com.apple.system-extension-policy</string>

                  <key>PayloadUUID</key>

                  <string>A8364220-5D8D-40A9-Af66-1Fbfef94E116</string>

                  <key>PayloadVersion</key>

                  <integer>1</integer>

            </dict>

            <dict>

                  <key>Enabled</key>

                  <true/>

                  <key>AutoFilterEnabled</key>

                  <false/>

                  <key>FilterBrowsers</key>

                  <false/>

                  <key>FilterSockets</key>

                  <true/>

                  <key>FilterPackets</key>

                  <false/>

                  <key>FilterType</key>

                  <string>Plugin</string>

                  <key>FilterGrade</key>

                  <string>firewall</string>

                  <key>PayloadDescription</key>

                  <string></string>

                  <key>PayloadDisplayName</key>

                  <string>Cisco Secure Client Content Filter</string>

                  <key>PayloadIdentifier</key>

                  <string>com.apple.webcontent-filter.339Ec532-9Ada-480A-Bf3D-A535F0F0B665</string>

                  <key>PayloadType</key>

                  <string>com.apple.webcontent-filter</string>

                  <key>PayloadUUID</key>

                  <string>339Ec532-9Ada-480A-Bf3D-A535F0F0B665</string>

                  <key>PayloadVersion</key>

                  <integer>1</integer>

                  <key>FilterDataProviderBundleIdentifier</key>

                  <string>com.cisco.anyconnect.macos.acsockext</string>

                  <key>FilterDataProviderDesignatedRequirement</key>

                  <string>anchor apple generic and identifier "com.cisco.anyconnect.macos.acsockext" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = DE8Y96K9QP)</string>

                  <key>PluginBundleID</key>

                  <string>com.cisco.anyconnect.macos.acsock</string>

                  <key>UserDefinedName</key>

                  <string>Cisco AnyConnect Content Filter</string>

            </dict>

      </array>

      <key>PayloadDescription</key>

      <string></string>

      <key>PayloadDisplayName</key>

      <string>Approved Cisco Secure Client System and Kernel Extensions</string>

      <key>PayloadEnabled</key>

      <true/>

      <key>PayloadIdentifier</key>

      <string>A401Bdc2-4Ab1-4406-A143-11F077Baf52B</string>

      <key>PayloadOrganization</key>

      <string>Cisco Systems, Inc.</string>

      <key>PayloadRemovalDisallowed</key>

      <true/>

      <key>PayloadScope</key>

      <string>System</string>

      <key>PayloadType</key>

      <string>Configuration</string>

      <key>PayloadUUID</key>

      <string>A401Bdc2-4Ab1-4406-A143-11F077Baf52B</string>

      <key>PayloadVersion</key>

      <integer>1</integer>

</dict>

</plist>