背景
我最近继承了一组 Windows Server 2019 服务器。设置并不理想。它们都是工作组的一部分myworkgroup
,但不涉及域。每个都有自己的本地管理员帐户。theadmin
所有本地theadmin
帐户都有相同的密码。一台服务器启用了共享文件夹。
总体布局如下:
- 服务器A
- 文件共享:(
C:\Shared
名称:“共享”) - 本地管理员:(
ServerA\theadmin
相同密码,例如redactedpw1234
)
- 文件共享:(
- 服务器B
- 本地管理员:(
ServerB\theadmin
相同密码,例如redactedpw1234
)
- 本地管理员:(
- 服务器C
- 本地管理员:(
ServerC\theadmin
相同密码,例如redactedpw1234
)
- 本地管理员:(
- 服务器QA
- 本地管理员:(
ServerQA\theadmin
相同密码,例如redactedpw1234
)
- 本地管理员:(
挑战
在某个时候——很难准确指出具体时间——ServerQAtheadmin
帐户现在可以读取\\ServerA\Shared
,但无法修改或删除文件(看到以此帐户身份运行的计划任务存在问题,然后在以该帐户身份登录时通过 Windows 资源管理器进行验证)。
ServerB 和 ServerC 的theadmin
账户似乎没有这个问题。当在这两台机器上登录本地账户时,我可以按预期theadmin
查看和修改/创建/删除文件。\\ServerA\Shared
我的挑战可以总结如下:
- ✅
ServerB
、ServerC
和ServerQA
似乎具有相同的配置 - ✅
ServerB
可以在 Windows 资源管理器中访问\\ServerA\Share
并创建/修改文件 - ✅
ServerC
可以在 Windows 资源管理器中访问\\ServerA\Share
并创建/修改文件 - ❌
ServerQA
可以在 Windows 资源管理器中读取,\\ServerA\Share
但在尝试创建或修改文件时收到权限错误。
我尝试过的事情
- 重启
ServerQA
服务器 Get-SmbConnection
在所有服务器上。- ServerB、ServerC 和 ServerQA 上的设置模式似乎相同 - 用户列表
[TheMachine]\theadmin
与每个情况相同,并且凭证相同。因此,它们都使用本地theadmin
凭证。 - 该方言适用
3.1.1
于所有机器。
- ServerB、ServerC 和 ServerQA 上的设置模式似乎相同 - 用户列表
Get-SmbMultichannelConnection
似乎所有这一切都表现出了同样的情况。Interface index [The Ethernet1 index for the server], RSS: True, RDMA: False
- 尝试删除并重新建立共享
- 在 ServerQA 上,
net use /delete \\ServerA\Shared
- 在 ServerA 上,
Get-SmbSession
然后Close-SmbSession
关闭该计算机的所有会话 - 在 ServerQA 上
net use \\ServerA\Shared /user:ServerQA\theadmin redactedpw1234
重新建立 - 在 ServerQA 上,
net use
确认Get-SmbConnection
一切设置均符合预期
- 在 ServerQA 上,
- 在所有服务器上运行
whoami /all
并验证本地帐户都属于同一本地组。 - 检查了各个服务器上的 SMBClient 和 SMBServer 事件日志。没有什么特别的。
- 检查注册表。所有服务器的
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
- 虽然我可能错过了我应该寻找的其他地方?
Get-SmbClientConfiguration
在所有服务器上返回相同的结果- 安装了NTFSSecurity powershell 模块并
Get-NTFSEffectiveAccess -Path \\ServerA\Shared
从所有服务器运行。全部返回结果。 - 在 上
ServerA
,运行icacls "C:\Shared"
。这返回 ServerA\theadmin 具有访问权限,但没有其他计算机的特定管理员帐户。所以我认为这不太相关。 - 在
ServerA
,运行Get-SmbShareAccess -Name "Shared"
。ServerA\theadmin
用户出现在结果中,但没有theadmin
具体提及其他机器的用户。 - 运行并比较结果。权限下存在差异,但据我所知,它们似乎反映了本地 SID。但我对此不太熟悉
secedit /export /cfg c:\Windows\temp\secpol.cfg
。ServerB
ServerQA
- 在每台服务器上运行
gpresult /h
并比较 HTML 文件。据我所知,没有区别。 - 根据下面一个很好的答案,我检查了
ServerQA
服务器的注册表,看是否已正确HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy
设置。不幸的是,它已经正确设置了。1
问题
考虑到以上所有情况,我如何确定在这种情况下访问与访问ServerQA
之间的差异?我是否应该考虑使用其他工具?我是否缺少一个常见的故障排除点来确定服务器之间的差异?我不知所措。ServerB
ServerC
更新--越来越近了?
ServerA
重新启动(托管文件共享的客户端)和(有问题的客户端)后ServerQA
,症状似乎消失了大约 10 分钟。我能够修改文件,并看到计划任务按预期运行并修改文件。然后症状又回来了,我没有采取任何行动,并且一直如此。
管理员组的成员在远程访问共享时会受到限制。您应该能够通过禁用该限制轻松测试这一点。
看:
https://learn.microsoft.com/en-us/troubleshoot/windows-server/windows-security/user-account-control-and-remote-restriction
UAC 远程限制的工作原理
为了更好地保护本地管理员组成员用户,我们在网络上实施了 UAC 限制。此机制有助于防止环回攻击。此机制还有助于防止本地恶意软件以管理权限远程运行。
本地用户帐户(安全帐户管理器用户帐户)
例如,当目标远程计算机上本地管理员组成员的用户使用该
net use * \\remotecomputer\Share$
命令建立远程管理连接时,他们不会以完全管理员身份进行连接。用户在远程计算机上没有提升权限的潜力,因此无法执行管理任务。如何禁用 UAC 远程限制
在无法连接的主机上,添加以下注册表值:
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
LocalAccountTokenFilterPolicy 注册表值可以是 0 或 1。0 会生成过滤令牌。这是默认值。管理员凭据会被删除。1 会生成提升令牌。
这个谜团似乎已经解开了——这是我没有预料到的,但我和其他人将来可能会发现它很有帮助。
这里的关键可能在于注意到我继承了这些服务器。
我检查了服务器的 Windows Defender 设置。我没有意识到我们的托管服务提供商也在使用 Sophos 防病毒软件——而且我无法查看这些日志。他们还应该在出现问题时向我们发出警报,但在这种情况下似乎没有这样做。
Sophos 错误地将我们的活动(修改了许多文件)标记为勒索软件攻击。因此,防病毒软件正在采取措施阻止该活动,这解释了该问题的暂时性,并且它通常会自行解决,但一段时间后会再次失败。
将此位置添加到该产品的豁免列表中似乎可以解决这些问题。
感谢所有努力找出原因的人!希望这里确定的步骤将来仍然对其他人有用。