Fundo
Eu herdei um grupo de servidores Windows Server 2019 recentemente. A configuração não é... ideal. Eles são todos parte de um grupo de trabalho, myworkgroup
, mas não há domínio envolvido. Cada um tem sua própria conta de administrador local, theadmin
. Todas as theadmin
contas locais têm a mesma senha. Um servidor tem uma pasta compartilhada habilitada.
O layout geral se parece com:
- ServidorA
- Compartilhamento de arquivo:
C:\Shared
(nome: "Compartilhado") - Administrador local:
ServerA\theadmin
(mesma senha, por exemploredactedpw1234
)
- Compartilhamento de arquivo:
- ServidorB
- Administrador local:
ServerB\theadmin
(mesma senha, por exemploredactedpw1234
)
- Administrador local:
- Servidor C
- Administrador local:
ServerC\theadmin
(mesma senha, por exemploredactedpw1234
)
- Administrador local:
- ServidorQA
- Administrador local:
ServerQA\theadmin
(mesma senha, por exemploredactedpw1234
)
- Administrador local:
O desafio
Em algum momento — difícil precisar exatamente quando — a theadmin
conta ServerQA agora consegue ler \\ServerA\Shared
, mas não consegue modificar ou excluir arquivos (observei um problema com uma tarefa agendada em execução nessa conta e depois verifiquei pelo Windows Explorer enquanto estava conectado com essa conta).
As contas do ServerB e do ServerC theadmin
não parecem ter esse problema. Quando conectado na theadmin
conta local nessas duas máquinas, posso olhar \\ServerA\Shared
e modificar/criar/excluir arquivos conforme o esperado.
Então meu desafio pode ser resumido como:
- ✅
ServerB
,ServerC
, eServerQA
parecem ter a mesma configuração - ✅
ServerB
pode acessar\\ServerA\Share
no Windows Explorer e criar/modificar arquivos - ✅
ServerC
pode acessar\\ServerA\Share
no Windows Explorer e criar/modificar arquivos - ❌
ServerQA
consegue ler\\ServerA\Share
no Windows Explorer, mas recebe um erro de permissão ao tentar criar ou modificar arquivos.
Coisas que eu tentei
- Reiniciando o
ServerQA
servidor Get-SmbConnection
em todos os servidores.- O padrão de configuração parece ser o mesmo no ServerB, ServerC e ServerQA - O usuário é listado como
[TheMachine]\theadmin
em cada caso, e a credencial é a mesma. Então, todos eles estão usando suastheadmin
credenciais locais. - O dialeto é
3.1.1
para todas as máquinas.
- O padrão de configuração parece ser o mesmo no ServerB, ServerC e ServerQA - O usuário é listado como
Get-SmbMultichannelConnection
parece mostrar o mesmo padrão para todos eles.Interface index [The Ethernet1 index for the server], RSS: True, RDMA: False
- Tentou remover e restabelecer o compartilhamento
- No ServerQA,
net use /delete \\ServerA\Shared
- No ServerA
Get-SmbSession
e, em seguida,Close-SmbSession
para fechar todas as sessões dessa máquina - No ServerQA,
net use \\ServerA\Shared /user:ServerQA\theadmin redactedpw1234
para restabelecer - No ServerQA,
net use
eGet-SmbConnection
para confirmar que as coisas estão configuradas conforme o esperado
- No ServerQA,
- Executei
whoami /all
em todos os servidores e verifiquei se todas as contas locais estão nos mesmos grupos locais. - Verifiquei os logs de eventos SMBClient e SMBServer nos respectivos servidores. Nada se destaca.
- Verifiquei o registro. Todos os servidores têm os mesmos valores em
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
- Embora eu possa estar faltando em algum outro lugar que eu deveria procurar?
Get-SmbClientConfiguration
retorna o mesmo resultado exato em todos os servidores- Instalou o módulo powershell NTFSSecurity e executou
Get-NTFSEffectiveAccess -Path \\ServerA\Shared
de todos os servidores. Todos retornaram o resultado. - Em
ServerA
, correuicacls "C:\Shared"
. Isso retornou ServerA\theadmin como tendo acesso, mas nenhuma das outras contas de administrador específicas da máquina. Então, estou assumindo que isso não é tão relevante. - Em
ServerA
, correuGet-SmbShareAccess -Name "Shared"
. OServerA\theadmin
usuário estava nos resultados, mas nenhum dostheadmin
usuários das outras máquinas foi mencionado especificamente. - Continuei e comparei os resultados. Há diferenças em privilégios, mas, até onde posso perceber, eles parecem refletir SIDs locais. Mas estou menos familiarizado com isso
secedit /export /cfg c:\Windows\temp\secpol.cfg
.ServerB
ServerQA
- Em cada servidor, executei
gpresult /h
e comparei os arquivos HTML. Até onde posso perceber, não há diferenças. - Por uma ótima tentativa de resposta abaixo, eu verifiquei o
ServerQA
registro do servidor para ver seHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy
estava definido1
como deveria. Infelizmente, já está.
Pergunta
Considerando tudo isso, como posso determinar qual é a diferença entre o acesso de ServerQA
vs ServerB
ou ServerC
nesta situação? Há alguma ferramenta adicional que eu deva considerar? Há algum ponto comum de solução de problemas que estou esquecendo para determinar a diferença entre servidores? Estou perdido.
Atualização: está mais perto?
Após reiniciar ServerA
(que hospeda o compartilhamento de arquivos) e ServerQA
(o cliente problemático), os sintomas pareceram desaparecer por cerca de 10 minutos. Consegui modificar arquivos e ver as tarefas agendadas sendo executadas conforme o esperado e modificando arquivos. Então os sintomas retornaram sem nenhuma ação da minha parte e permaneceram assim.
Os membros do grupo de administradores estão sujeitos a restrições ao acessar um compartilhamento remotamente. Você deve conseguir testar isso facilmente desabilitando essa restrição.
Ver:
https://learn.microsoft.com/en-us/troubleshoot/windows-server/windows-security/user-account-control-and-remote-restriction
Como funcionam as restrições remotas do UAC
Para proteger melhor os usuários que são membros do grupo local de Administradores, implementamos restrições de UAC na rede. Esse mecanismo ajuda a prevenir ataques de loopback. Esse mecanismo também ajuda a prevenir que softwares maliciosos locais sejam executados remotamente com direitos administrativos.
Contas de usuários locais (conta de usuário do Security Account Manager)
Quando um usuário que é membro do grupo Administradores locais no computador remoto de destino estabelece uma conexão administrativa remota usando o
net use * \\remotecomputer\Share$
comando, por exemplo, ele não se conectará como um administrador completo. O usuário não tem potencial de elevação no computador remoto e não pode executar tarefas administrativas.Como desabilitar restrições remotas do UAC
No host que não consegue se conectar, adicione o seguinte valor de registro:
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
O valor de registro LocalAccountTokenFilterPolicy pode ter um valor de 0 ou 1. 0 cria um token filtrado. É o valor padrão. As credenciais do administrador são removidas. 1 cria um token elevado.
O mistério parece ter sido resolvido — e foi algo que eu não havia previsto, mas que eu e outros podemos achar útil no futuro.
A chave aqui provavelmente está em notar que herdei esses servidores.
Eu tinha verificado as configurações do Windows Defender dos servidores. O que eu não percebi é que nosso provedor de serviços gerenciados também está usando o antivírus Sophos -- e que eu não tinha visibilidade desses logs. Eles também deveriam nos alertar quando surgem problemas, mas parecem ter falhado em fazer isso neste caso.
A Sophos sinalizou incorretamente nossa atividade, que modifica muitos arquivos, como um ataque de ransomware. Como tal, o antivírus estava tomando medidas para impedir a atividade, o que explica a natureza transitória do problema e que ele frequentemente se resolvia sozinho apenas para falhar novamente após algum tempo.
Adicionar este local a uma lista de isenções para esse produto pareceu resolver esses problemas.
Obrigado a todos que trabalharam para identificar a causa! Espero que os passos identificados aqui ainda sejam úteis para outros no futuro.