潮流有货 2025-09-25 18:50 采纳率: 98.5%
浏览 11
已采纳

This action is not allowed with this security level configuration

在配置Windows远程桌面服务时,用户登录时常遇到错误提示“This action is not allowed with this security level configuration”。该问题通常出现在启用了网络级身份验证(NLA)但客户端不支持或未正确配置时。当服务器设置要求NLA,而本地计算机未启用凭据安全支持提供者(CredSSP)或使用旧版RDP客户端时,系统将阻止连接以防止潜在安全风险。此限制旨在防止中间人攻击,但会影响兼容性,尤其是在较老的操作系统或第三方RDP工具中。如何在保障安全的前提下解决该连接限制?
  • 写回答

1条回答 默认 最新

  • 扶余城里小老二 2025-09-25 18:50
    关注

    解决Windows远程桌面服务中“This action is not allowed with this security level configuration”错误

    1. 问题背景与常见场景分析

    在配置Windows远程桌面服务(Remote Desktop Services, RDS)时,用户登录时常遇到错误提示:“This action is not allowed with this security level configuration”。该问题的核心在于网络级身份验证(Network Level Authentication, NLA)的安全策略与客户端兼容性之间的冲突。

    NLA要求在建立完整的远程桌面会话前,先对用户进行身份验证,从而防止未授权访问和中间人攻击。然而,当服务器强制启用NLA,而客户端使用的是旧版RDP协议、不支持CredSSP(Credential Security Support Provider)或未正确配置凭据传递机制时,连接将被拒绝。

    典型触发场景包括:

    • 使用Windows XP或早期Windows 7版本的RDP客户端连接现代Windows Server
    • 第三方RDP工具(如rdesktop、FreeRDP)未启用NLA支持
    • 组策略中强制要求FIPS合规或高安全级别加密
    • CredSSP更新缺失导致认证协议协商失败
    • 本地组策略或域策略限制了允许的身份验证方法

    2. 深层技术原理剖析

    NLA依赖于CredSSP协议实现安全的身份凭证传输。CredSSP提供了一种机制,使客户端能够在建立远程会话之前向服务器证明其身份,同时防止密码在网络中明文传输。

    当服务器设置为“需要用户身份验证才能连接(使用NLA)”时,RDP服务会在TCP三次握手后立即启动TLS加密通道,并通过CredSSP完成客户端身份验证。如果客户端无法响应此挑战(例如缺少CredSSP支持或注册表配置错误),则返回“This action is not allowed...”错误。

    以下是NLA连接过程的关键阶段:

    1. TCP连接建立(端口3389)
    2. 服务器发送证书并启动TLS加密
    3. 协商认证方式(CredSSP、SSPI等)
    4. 客户端提交凭据进行预验证
    5. 验证通过后加载用户会话环境
    6. 图形界面初始化
    7. 会话保持与加密通信
    8. 异常检测与断开机制触发
    9. 日志记录(事件ID: 21 & 24 in TerminalServices-RDPClient)
    10. 审计跟踪写入安全日志

    3. 安全与兼容性的权衡策略

    在保障安全的前提下解决该问题,需避免简单地禁用NLA(这将显著降低安全性)。以下为推荐的多维度解决方案矩阵:

    方案类型适用场景安全影响实施复杂度是否推荐
    升级客户端至Win10+/RDP 8.0+可控终端环境无负面影响✅ 强烈推荐
    启用CredSSP客户端策略混合OS环境维持原有安全等级✅ 推荐
    部署RD网关(Remote Desktop Gateway)跨公网访问增强整体安全性✅ 高价值推荐
    临时降级安全级别(测试用)紧急故障排查增加MITM风险⚠️ 仅限临时
    使用Intune/MDM推送合规配置企业级设备管理提升一致性✅ 长期推荐
    配置受信任站点与证书信任链自签名证书环境减少警告但需维护PKI✅ 推荐

    4. 具体修复步骤与注册表调整

    若客户端支持CredSSP但仍未成功连接,可检查以下关键配置项:

    
    # PowerShell命令:检查本地是否启用CredSSP客户端支持
    Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaults\Client" -Name "DefaultEncryptionLevel"
    
    # 注册表路径:控制NLA行为
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
        → UserAuthentication (DWORD): 
            0 = 不要求NLA(不安全)
            1 = 要求NLA(推荐值)
    
    # 启用CredSSP作为 SSP 提供者
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders
        → SecurityProviders = msapsspc.dll,credssp.dll
        

    5. 网络拓扑中的最佳实践流程图

    以下Mermaid流程图展示了从客户端发起连接到最终会话建立的决策路径:

    graph TD A[客户端发起RDP连接] --> B{是否支持NLA?} B -- 否 --> C[显示错误: This action is not allowed...] B -- 是 --> D[尝试建立TLS加密通道] D --> E{服务器证书可信?} E -- 否 --> F[提示证书警告] E -- 是 --> G[启动CredSSP身份验证] G --> H{凭据验证成功?} H -- 否 --> I[拒绝连接并记录事件] H -- 是 --> J[加载用户配置文件] J --> K[渲染远程桌面界面] K --> L[会话正常运行]

    6. 补丁管理与协议演进建议

    Microsoft已发布多个针对CredSSP漏洞(如CVE-2018-0886)的安全更新。确保所有系统安装了KB4088787或更高版本补丁至关重要。

    对于长期运行的老系统,建议采取以下措施:

    • 部署WSUS统一管理RDP相关更新
    • 启用Schannel日志以调试TLS协商失败
    • 使用Microsoft Remote Desktop Client替代mstsc.exe(支持更多现代协议扩展)
    • 在Active Directory环境中配置基于证书的身份验证(Smart Card Logon)
    • 结合Azure AD Conditional Access实现零信任接入控制
    • 定期审查Event Viewer中TerminalServices-RemoteConnectionManager日志
    • 使用Netsh trace抓包分析RDP协商细节
    • 配置QoS标记以优先处理RDP流量
    • 启用远程FX或AVC/H.264编码提升用户体验
    • 集成SIEM系统监控异常登录尝试
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 9月25日