“Permissão negada” criando uma nova raiz Dfs baseada em domínio como não-administrador

2

Fui encarregado de delegar uma série de tarefas diárias em nosso domínio para um grupo de técnicos que não possui Domain Admins membros. Uma dessas tarefas é a criação de novas raízes de Dfs baseadas em domínio (Server 2008 R2 Enterprise DCs). E é aqui que estou preso.

Teh c0de

Isso basicamente é apenas tentar criar uma raiz Dfs baseada em domínio, usando um Controlador de Domínio arbitrário (first-in-list) como o primeiro Servidor de Namespace:

$DfsnRootName="test"
$DCList = Get-ADDomainController -Filter * | ForEach-Object { ,$_.HostName } 
New-DfsnRoot -Path "\domain.contoso.com\$DfsnRootName" -TargetPath "\$($DCList[0])\$dfsnRootName" '
             -Description "Dfs-Root für $DfsnRootName" -EnableAccessBasedEnumeration $true -Type DomainV2
$DCList | ForEach-Object {
    New-DfsnRootTarget -Path "\domain.contoso.com\$DfsnRootName" '
                       -TargetPath "\$_\$dfsnRootName" -State Online
}

O erro err0r

O código acima está lançando uma exceção mencionando o acesso perdido a um recurso CIM. O caminho ROOT\Microsoft\Windows\DFSN\MSFT_DFSNamespace fornecido em CategoryInfo parece um caminho WMI:

New-DfsnRoot : Access to a CIM resource was not available to the client.
At line:1 char:1
+ New-DfsnRoot -Path "\domain.contoso.com\$DfsnRootName" -TargetPath "\$($DCList ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (MSFT_DFSNamespace:ROOT\Microsoft\...FT_DFSNamespace) [New-DfsnRoot], CimException
    + FullyQualifiedErrorId : MI RESULT 2,New-DfsnRoot


PS Z:\> $Error[0].CategoryInfo


Category   : PermissionDenied
Activity   : New-DfsnRoot
Reason     : CimException
TargetName : MSFT_DFSNamespace
TargetType : ROOT\Microsoft\Windows\DFSN\MSFT_DFSNamespace

As tentativas de resgatar indefesos:

Eu tenho "Permissões de Gerenciamento Delegado" por meio do console do Dfs para todo o domínio:

queestáefetivamenteapenasadicionandoumaACEde"controle total" ao principal adicionado ao contêiner CN=Dfs-Configuration,CN=System AD.

E como eu estava recebendo um erro indicando a falta de permissões no Gerenciador de controle de serviços usando o "Adicionar root do Dfs" Assistente em dfsmgmt.msc , usei sc sdset scmanager para manipular a string SDDL adicionando respectivo grupo com permissões "KA" (acesso de chave), análogo ao BUILTIN\Administrators ACE que existe por padrão.

Dessa forma, posso usar o assistente "Adicionar root do Dfs" para percorrer todas as etapas, mas a criação da própria raiz ainda está falhando - "O servidor de espaço para nome \ ADSRV0 \ Test não pode adicionado. O acesso é negado "

W00t?

    
por the-wabbit 20.02.2017 / 17:42

2 respostas

2

Os endpoints Just Enough Administration (JEA) são adequados à sua tarefa. A criação de um ponto final JEA requer três decisões principais:

  1. Quem pode chamar o ponto final do JEA?
  2. O que o chamador pode fazer?
  3. Quem fará a chamada ser executada?

O endpoint do PowerShell no PS 5.1 não é tecnicamente um endpoint do JEA, mas o mecanismo é essencialmente o mesmo.

Get-PSSessionConfiguration
Name : microsoft.powershell PSVersion : 5.1
StartupScript:
RunAsUser :
Permission : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed

A partir disso, os grupos de permissão definem quem pode ligar. Não há limitação no ponto de extremidade do PowerShell sobre o que pode ser feito, portanto, você tem recursos completos de linguagem. E, por último, com o RunAsUser em branco - o código é executado representado como o usuário ou as credenciais fornecidas.

Com essa base, consulte a ajuda para Register-PSSessionConfiguration e uma visão geral do JEA .

Para pontos de bônus, considere o uso de GMSA (Group Managed Service Accounts) como parte de sua solução, particularmente como o chamador.

No seu caso: Você pode restringir o endpoint a ser chamado por seus usuários com privilégios limitados.

Em seguida, defina os cmdlets específicos que você deseja que eles usem. Estes podem ser incorporados ou expostos a partir dos módulos personalizados que você especificar. Mantenha essas informações específicas para a sua tarefa, para evitar a elevação de ataques de privilégios com argumentos complicados ou muitos comandos de baixo nível expostos que podem tirar vantagem de serem executados como um usuário elevado.

Você pode usar um RunAsUser de um administrador de domínio ou outra conta com privilégios suficientes.

    
por 14.03.2017 / 20:00
1

Para criar um namespace DFS em todo o domínio, uma conta deve ter um privilégio de Administrador Local em um servidor de espaço para nome, que é ADSRV0 no seu caso. Sua última mensagem de erro sugere-me que não é assim no seu caso ..

    
por 07.03.2017 / 22:58