AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1096156
Accepted
dlanod
dlanod
Asked: 2022-03-15 21:11:51 +0800 CST2022-03-15 21:11:51 +0800 CST 2022-03-15 21:11:51 +0800 CST

为什么 MS GPO 选项会破坏使用主机文件作为机器名称的 SMB 共享?

  • 772

我们在测试 GPO 上将“ Microsoft 网络服务器:服务器 SPN 目标名称验证级别”设置为“客户端需要”。

我们的测试系统在它们的主机文件中有一些自定义机器别名,但是一旦打开该选项,我们就不能再使用机器别名访问 SMB 共享。

我一直在努力寻找有关这种互动的信息,所以希望有人能够在这里解释这种互动,是否有办法补救?

windows group-policy security active-directory server-message-block
  • 1 1 个回答
  • 671 Views

1 个回答

  • Voted
  1. Best Answer
    user1686
    2022-03-15T23:00:32+08:002022-03-15T23:00:32+08:00

    这与“主机”文件无关——它破坏了通过与服务器“真实”名称不同的主机名访问的共享。您的结果是正常的,因为这实际上是 GPO 的全部目的。

    有问题的 GPO 很像在某些 Web 服务器中发现的 TLS SNI 强制执行:客户端声明“我在这里与服务器 SRV01.EXAMPLE.COM 交谈”并且如果服务器不将该名称识别为虚拟主机之一它服务,它完全拒绝客户。因此,如果客户端声明它想与您的 /etc/hosts 别名之一交谈,但服务器不知道别名,它会拒绝客户端。

    Kerberos 已经内置了类似的强制措施(这就是为什么您需要使用 为别名注册 SPN setspn),但 GPO 使其更加严格,并将相同的保护扩展到 NTLM。

    (正如文档页面中已经提到的,这应该防止 NTLM 中继攻击,其中恶意服务器 A 接受 NTLM 身份验证,然后将完全相同的 NTLM 数据包转发到真实服务器 B - 攻击将被阻止,因为服务器 B 会看到“我想从客户端与服务器 A" 交谈。)

    仍然可以使用主机别名,但它需要越来越多的注册表旋钮。官方的方法是netdom computername REALHOST /add:THEALIAS像在这篇 TechNet 帖子中那样使用,我发现博客帖子声称即使经过严格的 SPN 验证也足以使别名可用,但似乎还不够——至少有一个如果不是它忘记触摸的两个注册表值。

    1. NETDOM 为 AD 中的别名注册Kerberos SPN,允许为其获取 Kerberos 票证,类似于手动发出以下两个命令:

      setspn -S HOST/THEALIAS REALHOST$
      setspn -S HOST/thealias.example.com REALHOST$
      

      这是 Kerberos 所必需的,没有理由不在 AD 环境中使用 Kerberos,因此无论您选择使用 NETDOM 还是手动操作,您都应该注册别名 SPN。

      (从技术上讲,SMB 使用“cifs/”主体,但在 AD 中,只要注册了“host/”SPN,它们就会隐式出现。)

    2. 然后 NETDOM 在服务器注册表的两个位置添加别名,导致服务器在 AD DNS 中注册其附加名称并通过 NetBIOS 浏览器宣布它们:

      • 路径:HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
        名称:AlternateComputerNames
        类型:REG_MULTI_SZ
        数据:{ thealias.example.com}

      • 路径:HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
        名称:OptionalNames
        类型:REG_MULTI_SZ
        数据:{ THEALIAS}

      它们似乎对身份验证没有任何影响(甚至没有 Kerberos),所以我相信如果您使用 /etc/hosts 或在 DNS 中创建手动 CNAME 记录,这两者都是完全可选的。

    3. NETDOM没有创建的另一个参数是:

      • 路径:HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
        名称:BackConnectionHostNames
        类型:REG_MULTI_SZ
        数据:{ thealias.example.com}

      这个仅用于“环回”连接,因此通常可能不是绝对必要的,但至少在我的情况下,服务器确实需要连接到自己的别名,因此需要设置。

    4. 最后,我发现“SPN 目标名称验证”功能有自己的允许名称列表,必须手动更新 - 否则即使存在上述所有设置,别名也会由于严格的 SPN 验证而被拒绝:

      • 路径:HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
        名称: 类型:REG_MULTI_SZ 数据:{ , }SrvAllowedServerNames

        THEALIASthealias.example.com

      您需要同时列出每个别名的短名称和FQDN——根据我的实验,列出一个并不会自动暗示另一个。

    注册 Kerberos SPN 并设置SrvAllowedServerNames注册表值后,即使经过严格的目标验证,别名也应该最终正常工作。

    • 8

相关问题

  • 知道任何适用于 Windows 的快速可编写脚本的 ftp 客户端吗?[关闭]

  • 如果 Windows 服务崩溃,如何自动重新启动它?

  • 无法安排任务(访问被拒绝)

  • 物理机重启时自动重启虚拟机(VMWare)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve