sexta-feira, 20 de julho de 2018

Active Directory Lingering Objects

De emprego novo, está bem complicado manter as postagens periódicas, mas ainda assim o interesse e compromisso em compartilhar conteúdo relevante à comunidade técnica permanece inalterado.

Como mencionei recentemente, isso tem se mostrado bastante gratificante e o resultado é imediato: Quanto mais busco ensinar, mais aprendo.

Dessa vez tratarei sobre um problema relativamente comum, mas cuja resolução é pouco difundida e que gera um belo trabalho aos administradores de redes Microsoft: Lingering Objects.

Notem que, mais do que somente uma dor de cabeça aos SysAdmins, o não tratamento dessa situação pode representar um sério problema de segurança em ambientes corporativos.

Essa situação ocorre em função de problemas de replicação entre os controladores de domínio. Ao ser reconectado à topologia de replicação, objetos que foram excluídos do Active Directory através de um controlador de domínio que apresente problemas de replicação, podem "reaparecer" no domínio como "objetos remanescentes".

Isso se a replicação voltar a ocorrer em tempo superior a vida útil do tombstone lifetime (TSL).

Antes de prosseguirmos, é importante entendermos o TSL e seu modo de funcionamento.

Vamos lá ...

Quando excluímos um objeto do Active Directory, esse objeto não é imediatamente excluído. 

Ele recebe uma "marca" que o identifica como objeto a ser excluído e através da estrutura de replicação, os demais controladores de domínio são notificados sobre a exclusão desse objeto, que ocorrerá dentro de um limite de tempo definido de acordo com a versão do sistema operacional.

Esse período de tempo é chamado de TSL, ou tombstone lifetime. Ao atingir o tempo de TSL definido, o objeto marcado é excluído definitivamente.

O TSL também define a idade máxima de um backup do System State "recuperável". Não é possível recuperar um backup cuja idade seja maior que o TSL da floresta do Active Directory.

O valor padrão do TSL depende da versão do sistema operacional em execução no primeiro controlador de domínio instalado em uma floresta. No Windows 2000 o valor era de 60 dias. A partir dele, passou a ser de 180 dias.

O valor padrão pode ser consultado e alterado através do utilitário ADSIEDIT.msc, conforme abaixo.

Imagem 01

Se um DC for restaurado a partir de um backup que contenha um objeto excluído em outro lugar (DC), o objeto será exibido novamente no Domain Controller restaurado. Como o objeto de marca para exclusão nos outros DCs foi removido, o DC restaurado não receberá o objeto de marca de exclusão (via replicação) e portanto, nunca será notificado da exclusão. O objeto excluído "permanecerá" na cópia local restaurada do Active Directory.

Como os objetos remanescentes ocorrem?

Se um controlador de domínio permanecer desconectado por um período maior que o TSL da floresta, um ou mais objetos que foram excluídos do Active Directory em todos os outros controladores de domínio poderá permanecer no controlador de domínio desconectado. Tais objetos são chamados de objetos remanescentes. Como o controlador de domínio está offline enquanto o TSL está ativo, o controlador de domínio nunca receberá através do processo de replicação da marca de exclusão.

Se esse controlador de domínio for reconectado à topologia de replicação existente, ele atuará como um parceiro de replicação de origem mantenedor de um objeto que seu parceiro de destino não possui.

Problemas de replicação podem ser detectados quando objetos são atualizados no controlador de domínio. Nesse caso, quando o parceiro de replicação tenta replicar a atualização de entrada, o controlador de domínio de destino responderá de duas maneiras:

Se o controlador de domínio de destino tiver o "Strict Replication Consistency" habilitado, o controlador reconhece que não é possível atualizar o objeto. O controlador para localmente a replicação de entrada da partição de diretório do controlador de domínio de origem.

Se o campo acima estiver desabilitado, o controlador solicitará a réplica completa do objeto atualizado. Nesse caso, o objeto será reintroduzido no diretório.

O que pode gerar desconexões longas?

Diversas situações podem provocar um longo período de desconexão entre controladores de domínio, tais como uma desconexão proposital da rede, o envio de um controlador de domínio pré-configurado para seu local remoto demorar mais do que um TSL padrão, links de comunicação ficarem indisponíveis por longos períodos. 

Imaginem por exemplo, um controlador de domínio a bordo de um navio de cruzeiro que pode se tornar incapaz de replicar informações com seus parceiros porque, em função de um imprevisto, o navio está no mar por mais tempo que o TSL padrão.

Ou ainda um administrador encurtar o valor de TSL para forçar a coleta de lixo de objetos excluídos e gerar um falso positivo.

Problemas com as configurações de relógio ou mesmo com a bateria da placa mãe de um servidor físico.

Enfim ... são muitas as possibilidades.

Indicações de que um controlador de domínio possui objetos remanescentes

É importante mencionar que um controlador de domínio desatualizado pode armazenar objetos "fantasmas" sem efeito perceptível mediante algumas condições, como por exemplo, um administrador, aplicativo ou serviço não atualizar o objeto remanescente, não tentar criar um objeto que possua o mesmo nome no domínio ou não tentar criar um objeto utilizando o mesmo UPN na floresta. 

Mesmo quando não há nenhum efeito perceptível, a presença de objetos remanescentes pode causar problemas. Esses problemas são mais prováveis ​​de ocorrer se um objeto remanescente for um objeto de segurança.

Os eventos mencionados na tabela abaixo indicam que objetos remanescentes podem existir na floresta do Active Directory.


Já os eventos mencionados na tabela abaixo indicam que objetos remanescentes efetivamente existem na floresta do Active Directory.


Também é possível detectar a presença de objetos remanescentes na floresta através do utilitário REPADMIN. Através dele, pode-se forçar a replicação do AD e os seguintes eventos poderão ser detectados.


Existe ainda a opção de utilizar o AD Replication Status Tool, ferramenta em modo gráfico que cujo download pode ser efetuado aqui.

Como remover objetos remanescentes?

Objetos remanescentes podem ser removidos utilizando o utilitário REPADMIN.exe com o parâmetro /removelingeringobjects.

Também é possível removê-los através do comando ldp.exe.

Uma outra maneira (bem mais simples, diga-se de passagem) de se remover tais objetos, é através da ferramenta denominada "Lingering Object Liquidator", cujas todas informações podem ser obtidas aqui.

Evitando objetos remanescentes

No final das contas, a prevenção é sempre o melhor remédio. Assegurar-se de que as replicações entre os controladores de domínio estão funcionando corretamente é fundamental para garantir a saúde do Active Directory.

Através do comando repadmin / showrepl * / csv> showrepl.csv é possível exportar a um relatório completo, identificar e posteriormente remover objetos remanescentes no AD.

Adicionalmente, pode-se ativar a entrada de registro Strict Consistency Replication para que os objetos suspeitos sejam colocados em quarentena. Posteriormente, os administradores podem remover esses objetos antes de se espalharem pela floresta. 

A referida entrada de registro está localizada na seguinte subchave do Registro:
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ NTDS \ Parameters.

O tipo de dados para esta entrada é REG_DWORD. Se você definir o valor como 1, a entrada será ativada. A replicação de entrada da partição de diretório especificada na origem é interrompida no destino. 

Se você definir o valor como 0, a entrada será desativada. O destino solicitará o objeto completo do controlador de domínio de origem. Isso permitirá que o objeto remanescente seja "ressuscitado".

Também é possível executar essa tarefa através do comando regadd HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters /v "StrictReplication Consistency" /t REG_DWORD /d 1.

Se você tiver um controlador de domínio que esteja executando o Windows Server 2003 com SP1, não será necessário modificar o registro para definir o valor da entrada do Registro de Consistência de Replicação Restrita. 

Nesse caso, pode-se utilizar a ferramenta Repadmin.exe para definir esse valor para um controlador de domínio na floresta ou para todos os controladores de domínio na floresta. 

Para obter mais informações sobre como usar o Repadmin.exe para definir a consistência de replicação, visite o seguinte site da Microsoft:

Outra alternativa é aumentar o TSL via ADSIEDIT, alterando o valor do atributo tombstoneLifetime, evidenciado na imagem 1 desse artigo.

Mais uma vez espero ter de alguma forma contribuído com a comunidade técnica para a resolução de mais esse problema cotidiano.

Abraço e até a próxima publicação.