Como desabilitar todas as contas de administrador, exceto o administrador interno de um domínio?

5

Suponha que um administrador de um domínio seja acionado e agora você seja o novo administrador de um servidor do Windows 2012. Ao gerenciar a rede, algo informa que algumas pessoas estão usando contas locais com direitos administrativos para fazer logon nos computadores (eles podem ter obtido esses usuários do administrador anterior). Agora, o que você deseja fazer é desativar todos os administradores locais, EXCETO o administrador interno com a diretiva de grupo.

Eu tentei alterar o "Permitir logon local" em:

Computer Configuration
 * Policies
   * Windows Settings
     * Security Settings
       * Local Policies
         * User Rights Assignment

Mas o problema é que o Windows só permite que você faça isso se você adicionar o "Grupo de administradores" à lista permitida e, ao fazer isso, voltaremos à estaca zero.

    
por Iman Bagheri 06.02.2016 / 21:59

1 resposta

8

Talvez você esteja fazendo a pergunta errada. Em vez de tentar desabilitar várias contas de usuários locais em vários computadores diferentes, talvez você deva usar Grupos Restritos na Diretiva de Grupo para definir exatamente quem tem permissão para ser um membro do grupo Administradores nos computadores. Ele removerá todas as contas que estão no grupo Administradores local em todas as máquinas, exceto as contas (ou grupos) que você especificar.

link

Mas, se por algum motivo você realmente quiser deixar as contas de usuários locais no grupo Administradores local em todos os clientes, mas apenas desativá-las, você terá que desenvolver um script para fazer isso.

Edit: Porque é uma tarde preguiçosa de sábado, eu escrevi um script que faz o que você descreveu. Ele desativa todas as contas de usuário locais do usuário que são membros do grupo Administradores exceto para o Administrador interno. Não é o caminho mais eficiente, mas tenho preguiça de otimizá-lo. Mais uma vez, para constar, minha recomendação é usar grupos restritos de política de grupo, mas eu senti vontade de fazer alguns scripts.

# Author: Ryan Ries
# This script disables all local user accounts who are members of the Administrators group,
# except for the built-in Administrator (sid-500).
# Use at your own risk.
Set-StrictMode -Version Latest

[Int]$DomainRole = (Get-WmiObject Win32_ComputerSystem).DomainRole

# Don't run if we are a domain controller.
If (($DomainRole -EQ 4) -OR ($DomainRole -EQ 5))
{
    Write-Error "This script cannot be run on a domain controller."
    Return
}

# We need to be an elevated administrator.
$CurrentUser = New-Object System.Security.Principal.WindowsPrincipal([System.Security.Principal.WindowsIdentity]::GetCurrent())

If (-Not($CurrentUser.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)))
{
    Write-Error "$($CurrentUser.Identity.Name) is not currently an Administrator. (Need UAC elevation?)"
    Return
}

Add-Type -AssemblyName System.DirectoryServices.AccountManagement

$ContextType = [System.DirectoryServices.AccountManagement.ContextType]::Machine

$Context = New-Object System.DirectoryServices.AccountManagement.PrincipalContext -ArgumentList $ContextType, $Env:COMPUTERNAME

$IDType = [System.DirectoryServices.AccountManagement.IdentityType]::SamAccountName

$Group = [System.DirectoryServices.AccountManagement.GroupPrincipal]::FindByIdentity($Context, $IDType, 'Administrators')

Foreach ($Member In $Group.Members)
{
    If ($Member.Sid.Value.EndsWith('-500'))
    {
        # This is the built-in local administrator, so we'll skip it.
        Continue
    }

    $User = [ADSI]"WinNT://./$($Member.SamAccountName)"

    $User.UserFlags = 2

    $User.CommitChanges()

}
    
por 06.02.2016 / 22:05