quinta-feira, 23 de agosto de 2018

Protegendo senhas com o LAPS


Cada vez mais, a proteção de credenciais, dados e a consequente manutenção da privacidade torna-se mandatória.

Assim, no artigo desse mês falarei sobre proteção de senhas utilizando o Local Administrator Password Solution, ou simplesmente “LAPS”.

Antes, vamos a um breve contexto.

Cada computador membro de um domínio gerenciado pelo Active Directory mantém uma conta de administrador local. Essa conta é criada automaticamente e configurada manualmente durante a instalação do computador, seja ela uma instalação simples ou quando utiliza-se ferramentas de implantação de software em grande escala, como por exemplo o Configuration Manager.

Essa conta de administrador local permite que o pessoal de operações de TI acesse o computador caso esse não consiga estabelecer conectividade com o domínio.

Gerenciá-la de forma segura não é tarefa das mais fáceis. Para melhor entendermos a complexidade, vamos imaginar alguns cenários.

O primeiro deles é um pequeno escritório, composto por poucos computadores que são administrados por um usuário chave, com um pouco mais de experiência em TI. Por conveniência, ele definiu a mesma senha para o administrador local das estações, gravou em sua memória, que até hoje não apresentou grandes lapsos, ou anotou numa caderneta que por sua vez fica trancada numa gaveta onde teoricamente só ele possui acesso. Aqui, não abordaremos o fato da senha ficar anotada numa caderneta.

O outro cenário envolve uma grande empresa, com milhares de servidores e estações de trabalho, sistemas complexos e alta dependência de recursos tecnológicos. Possui vários administradores de redes, com distintos níveis de conhecimento técnico e do negócio, contratados em épocas distintas, sendo que o mais antigo, trabalha há décadas na empresa. Por conveniência, esse administrador mais antigo de casa definiu uma senha para os administradores locais e tenta através de scripts e GPO´s fazer com que essa senha seja aplicada à todas estações de trabalho.

Ocorre que em função da correria característica da profissão, o time de administração não consegue garantir com 100% de precisão que esse script tenha sido executado em todas as máquinas e logo, não possuem convicção de que a senha do administrador local seja exatamente a mesma em todas as máquinas.

Isso representa um sério problema, pois em caso de necessidade extrema, será necessário quebrar a senha do administrador local e isso demandará considerável tempo. Pode inclusive não ser possível acessar uma importante estação de trabalho com seu administrador local.

Por outro lado, ainda que os administradores consigam garantir que absolutamente todas estações de trabalho possuam a mesma senha de administrador local, teríamos nesse caso um sério problema de segurança, pois se um invasor, nesse caso, necessariamente mal-intencionado descobrir essa senha, o dano causado poderá ser grande, muito grande.

Vejam que situação complicada!!!

O ideal é que cada máquina possua uma senha de administrador local distinta, de modo que se a senha de uma máquina for descoberta, as demais permanecerão seguras.

A essa altura, devo estar sendo taxado como “doido”, “paranoico” ou mesmo outros adjetivos impublicáveis em meios mais formais mas proferidos com naturalidade no dia a dia, visto que administrar centenas ou mesmo milhares de senhas seria extremamente difícil, senão impossível.

Pois bem, trago uma novidade e essa tem nome e sobrenome: Local Administrator Password Solution, ou simplesmente “LAPS”.

Desenvolvido pela Microsoft, o LAPS incrementa significativa segurança aos computadores, garantindo que o administrador local de cada computador tenha uma senha exclusiva. Sim, isso é possível, e a implantação dessa ferramenta é relativamente simples.

Além de exclusiva, utilizando o LAPS, a senha do administrador local será randômica em cada computador gerenciado. Sim, o LAPS altera a senha do administrador local regularmente e a armazena com segurança no AD DS.

Dito isso, utilizarei as próximas linhas para jogar um pouco de luz sobre o LAPS, seus  requisitos, implementação, configuração e gerenciamento de senhas das contas de administrador local.

Requisitos do LAPS


- O LAPS funciona em todas as versões x86 ou x64 suportadas do sistema operacional Windows Client e Windows Server.

- Exige que o nível funcional de domínio seja “Windows Server 2003” ou mais recente e só funciona em computadores que sejam membros de um domínio do Active Directory.


- O agente do LAPS deve ser instalado nos hosts gerenciados e pode ser implantado por meio de Diretivas de Grupo.

- Exige atualização do esquema do Active Directory através da execução do cmdlet Update-AdmPwdADSchema, incluso no módulo do PowerShell que se torna disponível após a instalação do LAPS em um computador. O usuário que executará o cmdlet deverá ser membro do grupo Administradores de Esquema. A execução do comando deve ocorrer em um computador que esteja no mesmo site do Active Directory que o computador que contém a função Mestre de Esquema da floresta.

- O LAPS exige que o .NET Framework 4.0 e o Windows PowerShell 2.0 ou mais recente sejam instalados nos computadores para os quais ele gerenciará as senhas do administrador local.

Como o LAPS trabalha?


O LAPS funciona através de Diretiva de Grupo. Quando uma atualização de diretiva de grupo ocorre, as seguintes etapas ocorrem:

- O LAPS determina se a senha da conta de administrador local expirou.  Se a senha não expirou, o LAPS não toma nenhuma ação.

- Se a senha expirou, ela será alterada para um novo valor aleatório com base nos parâmetros configurados via GPO para as senhas do administrador local. Após isso, será armazenada em um atributo confidencial no ADDS, associado à conta de computador do computador que teve sua senha atualizada. A nova data de expiração também será armazenada no ADDS, em atributo do associado à conta de computador.

- Usuários autorizados podem consultar senhas armazenadas no AD DS, bem como podem efetuar uma alteração de senha do administrador local em um computador específico.

Configurando e gerenciando senhas usando o LAPS - Visão Geral


Antes de iniciarmos, precisaremos efetuar o download do LAPS clicando aqui.

Para que o gerenciamento e proteção de senhas através do LAPS ocorra, o primeiro passo é criar uma unidade organizacional (caso não exista) e após isso, mover as contas de computadores que serão gerenciadas para essa unidade organizacional (OU).

Após isso, através do cmdlet Set-AdmPwdComputerSelfPermission atribui-se aos computadores dessa unidade organizacional a capacidade de atualizar a senha de sua conta de administrador local quando ela expirar. 

Por exemplo, para permitir que computadores armazenados na OU denominada “Financeiro” atualizem suas senhas utilizando o LAPS utilizaremos o seguinte comando:

Set-AdmPwdComputerSelfPermission -Identity “Financeiro”

Por padrão, as contas que são membros dos grupos “Admins. Do Domínio” e “Administradores de Empresa” podem acessar e exibir as senhas armazenadas.

Para atribuir a outros grupos tal capacidade, utilizamos o comando Set-AdmPwdReadPasswordPermission.

Por exemplo, para atribuir ao grupo “Suporte” a capacidade de exibir a senha do administrador local em computadores na unidade organizacional “Financeiro”, utilizaremos o seguinte comando:

Set-AdmPwdReadPasswordPermission -Identity “Financeiro” -AllowedPrincipals “Suporte”

A próxima etapa é executar o instalador para instalar os modelos de GPO no AD DS. 

Depois de instalar os modelos, poderemos configurar as seguintes políticas: 

Ativar o gerenciamento de senha do administrador local - Essa política ativará o LAPS e permitirá o gerenciamento centralizado da senha da conta do administrador local.

Configurações de senha - Essa política permite configurar a complexidade, o comprimento e a idade máxima da senha do administrador local. O padrão é que você pode usar letras maiúsculas e minúsculas, números e caracteres especiais. O comprimento da senha padrão é de 14 caracteres, podendo ser estendido para até 64 caracteres e a idade máxima padrão é de 30 dias, podendo ser estendida para até 365 dias.

Não permita o tempo de expiração da senha por mais tempo que o necessário - Quando ativada, a senha é atualizada de acordo com a política de expiração de senha do domínio. 

Nome da conta de administrador para gerenciar - Use esta política para identificar contas de administrador locais personalizadas. 

Consultando as senhas gerenciadas pelo LAPS


A visualização das senhas gerenciadas pelo LAPS pode ser efetuada das seguintes formas:

1- Exibindo as propriedades da conta do computador com os recursos avançados habilitados em Usuários e Computadores do Active Directory e examinando o atributo ms-Mcs-AdmPwd.

2- Utilizando o aplicativo da interface do usuário (UI) do LAPS. 

3- Através do cmdlet Get-AdmPwdPassword do Windows PowerShell, disponível por meio do módulo AdmPwd.PS, que será disponibilizado na instalação do LAPS.

Vamos à pratica?


Para exemplificar, montei um laboratório com duas máquinas virtuais, sendo um servidor Windows 2016 nomeado DC-LAB-01 com o ADDS instalado e uma estação Windows 7 nomeada CLIENT-01.

Abaixo os passo necessários: 

1. Conectar ao controlador de domínio (no meu caso, DC-LAB-01) com o Administrador do domínio ou usuário com permissões equivalentes.

2. Crie uma nova OU denominada e mova a conta do computador CLIENT-01 para essa OU. Para exemplificar, criarei uma OU denominada "Financeiro", conforme comandos e exemplos abaixo.

New-ADOrganizationalUnit -Name "Financeiro"

Get-ADComputer - Filter 'Name -like "Cli*"' -SearchBase "CN=Computers,DC=MCSE-Brasil,DC=int" | Move-ADObject -TargetPath "OU=Financeiro,DC=MCSE-Brasil,DC=int"


Execução dos comandos em powershell


Resultado esperado



3. Execute o arquivo LAPS.x64.msi, cujo download pode ser efetuado aqui para instalar as ferramentas de gerenciamento do LAPS, a interface do cliente, o respectivo módulo do PowerShell, bem como os modelos de GPO. Passo a passo evidenciado nas imagens abaixo.


Instalação do LAPS no DC - Passo 1

Instalação do LAPS no DC - Passo 2

Instalação do LAPS no DC - Passo 3

Instalação do LAPS no DC - Passo 4



Instalação do LAPS no DC - Passo 5



4. Ainda em DC-LAB-01, abra uma sessão elevada do Windows PowerShell e execute os seguintes comandos, em sequencia:

Import-Module admpwd.ps
Update-AdmPwdADSchema 
Set-AdmPwdComputerSelfPermission -Identity “Financeiro”


Execução dos comandos em powershell


5. No console Gerenciamento de Diretiva de Grupo, crie uma nova GPO denominada LAPS_GPO (ou qualquer outro nome de sua preferência) e vincule-a a unidade organizacional denominada “Financeiro”, conforme exemplo abaixo.


Criação de nova GPO


6. Edite a GPO recém criada. Expanda os nós Policies e Administrative Templates e, no nó LAPS, edite a política Enable local admin password management e configure-a como ativada, conforme abaixo.


Habilitando LAPS através de GPO


7. Edite a política de Password Settings, configurando-a como Ativada e configure o comprimento da senha como 20 e a idade da senha como 30 (ou qualquer outro valor respeitando os limites da ferramenta), conforme exemplo abaixo. Feito essas configurações, feche o editor de Gerenciamento de Diretivas de Grupo.


Definindo parâmetros de senhas através de GPO


Definições de senhas através de GPO habilitada


8. Acesse a máquina CLIENT-01 com usuário administrativo e execute o arquivo LAPS.x86.msi ou LAPS.x64.msi (de acordo com a arquitetura de seu sistema operacional) utilizando as configurações padrão. Nesse passo, o agente do LAPS (que pode ser instalado via GPO) será instalado com as configurações padrão.

9. Ainda no CLIENT-01, em um prompt de comandos digite gpupdate /force, pressione "Enter" e a seguir reinicie a máquina.


Forçando aplicação de GPO


10. Retorne ao servidor DC-LAB-01.

11. Abra o aplicativo da interface do usuário do LAPS e, no campo "ComputerName", digite CLIENT-01 para visualizar a senha do administrador local, a data de expiração da mesma e ter a possibilidade de definir uma data para expiração da senha atual.


Visualizando a senha do administrador local pela interface do LAPS


12. Em DC-LAB-01 abra o PowerShell, digite o comando abaixo para visualizar a senha do administrador local da estação gerenciada e pressione enter:

Get-AdmPwdPassword CLIENT-01 | Select Password


Visualizando a senha do administrador local pelo powershell

13. Para visualizar a senha e a data de expiração, utilize o seguinte comando powershell:

Get-AdmPwdPassword CLIENT-01 | Select Password,ExpirationTimeStamp


Visualizar a senha e a data de expiração pelo powershell

14. Outra forma de visualizar a senha definida dinamicamente, bem como sua data de expiração é através do comando abaixo:

Get-AdmPwdPassword CLIENT-01 | Out-Gridview




Viram como é simples? Simples, eficaz e muito mais seguro!!!

Mais uma vez espero ter de alguma forma contribuído para o enriquecimento técnico dos assíduos leitores de minhas publicações.

Gostou? Compartilhe e ajude a disseminar o conhecimento!!!

Abraço e até a próxima!!!