Mostrar mensagens com a etiqueta LDAP. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta LDAP. Mostrar todas as mensagens

segunda-feira, 15 de junho de 2020

Entendendo as FSMO do Active Directory


Nós podemos imaginar o Active Directory como um banco de dados, onde estão armazenados os atributos de toda sua infraestrutura de rede, como por exemplo, nomes de usuários, senhas, contas de computador, etc.

Nas versões iniciais do Active Directory, a chance de conflitos era muito alta. Pois o sistema de gerenciamento de conflitos não atuava de forma efetiva quando haviam dois Controladores de Domínio realizando alterações simultaneamente.

E um dos conceitos apresentados para solucionar estes problemas foram as regras FSMO (Flexible Single-Master Operation), que são regras aplicadas a determinadas funções dos Controladores de Domínio que tem como objetivo manter o funcionamento correto do ambiente.

Ao todo temos 5 regras FSMO – elas são divididas em 2 grupos – sendo que 2 delas atuam na floresta e 3 que atuam diretamente no domínio.

Regra FSMO

Como mencionado anteriormente, as regras FSMO são divididas basicamente em 5.

  • Schema master
  • Domain naming master
  • RID master
  • PDC emulator
  • Infrastructure master

 

Schema Master

O Schema é considerado o coração do Active Directory. Você pode estar se perguntando “Mas o que é o Schema?”.

O Schema é o conjunto de todos os atributos associados aos objetos presentes no Active Directory, o que incluem usuários, senhas, telefones, ID, isto para citar somente alguns atributos.

Como o Schema pode ser alterado/customizado, a regra de Schema Master se encarrega de gerenciar qualquer alteração, evitando assim problemas de conflito.

Domain naming Master

Esta regra é responsável pela verificação e validação dos domínios que estão sob a mesma floresta.

Por exemplo se você estiver adicionando um novo domínio, em uma floresta existente, é o Domain Naming Master quem garante que este nome de domínio seja único na floresta.

Por exemplo, se esta regra estiver inoperante por algum motivo, não será possível adicionar um novo domínio na floresta.

RID Master

Qualquer Controlador de Domínio tem a função de criar novos objetos, (usuários, grupos, contas de computadores, etc). Como sabemos cada objeto do Active Directory possui um identificador único chamado SID.

A construção do SID é feita através de um SID do domínio, mais um ID relativo que é gerado pelo RID Master. Cada Controlador de Domínio, recebe inicialmente uma faixa de 512 RIDs, quando o Controlador de domínio precisar de mais RIDs ele negocia a alocação de mais uma faixa de 512 RIDs com o RID Master.

Desta forma o RID Master garante que dentre todos os objetos do Active Directory não exista nenhum SID duplicado.

PDC Emulator

A função do PDC Emulator é de “emular” um PDC NT 4.0 para manter a compatibilidade com clientes mais antigos.

Porém mesmo que esta compatibilidade não seja necessária no seu ambiente, o PDC Emulator tem outras funções muito importantes. Esta regra trata de alterações de contas de usuários, bloqueios de usuário, relação de confiança com outros domínios e florestas, além destas funções o PDC Emulator também é responsável pela sincronização dos relógios do domínio.

Infrastructure Master

Esta regra tem a basicamente a função de manter todos os objetos do Active Directory atualizados. Ela deve assegurar que o Display Name dos usuários seja atualizado caso este atributo seja alterado. Esta regra é mais importante quando o ambiente possui vários domínios.


Problemas com FSMO


Sintoma

FSMO

Explicação

Usuários não conseguem fazer logon

PDC Emulator

O relógio pode não estar sincronizado

Não é possível criar usuários e grupos

RID Master

RID Pool precisar ser renovado. É preciso ter contato com o RID Master

Não é possível elevar o nível funcional de uma floresta

Schema Master

A regra precisa estar ativa para executar esta função

Não é possível adicionar ou remover um domínio

Domain Naming Master

Esta alteração necessita da regra funcional

Não é possível alterar senha dos usuários

PDC Emulator

Alteração de senhas necessitam do PDC Emulator

Recomendações para uso das regras FSMO

Os controladores de domínio irão armazenar as regras FSMO, quando nosso ambiente só possuir somente 1 controlador de domínio ele vai armazenar todas a regras. Mas, conforme a complexidade do ambiente podemos encontrar vários controladores de domínio na estrutura, e para estes casos existem algumas recomendações para otimizar as funções das regras FSMO no Active Directory.

01 – O PDC Emulator e o RID Master devem estar no mesmo controlador de domínio, pois o PDC Emulator é um grande consumidor de RID’s.

02 – Se possível, manter o Infrastructure Master em um controlador de domínio que não seja Global Catalog.

03 – Para facilitar o gerenciamento, Schema Master e Domain Naming Master podem estar no mesmo controlador de domínio, que também deve ser o Global Catalog.

04 – Periodicamente verifique se todas as FSMO estão disponíveis e funcionando corretamente.


Conclusão

Como podemos ver, as regras FSMO impedem conflitos no Active Directory, e além disso oferecem flexibilidade para lidar com diferentes funções.


Fonte:  https://cooperati.com.br/2017/10/entendendo-as-fsmo-do-active-directory/

segunda-feira, 15 de outubro de 2018

Como configurar o log de eventos de diagnóstico do Active Directory e do LDS


Resumo

Este artigo passo a passo descreve como configurar o log de eventos de diagnóstico do Active Directory nos sistemas operacionais Microsoft Windows Server.
O Active Directory registra eventos no log de Serviços de Diretório ou Instância LDS no Visualizador de Eventos. Você pode usar as informações coletadas no log para ajudar a diagnosticar e resolver possíveis problemas ou monitorar a atividade de eventos relacionados ao Active Directory em seu servidor.
Por padrão, o Active Directory registra apenas eventos críticos e eventos de erro no log do serviço de diretório. Para configurar o Active Directory para registrar outros eventos, você deve aumentar o nível de log editando o registro.

Log de eventos de diagnóstico do Active Directory

As entradas do Registro que gerenciam o log de diagnóstico do Active Directory são armazenadas nas seguintes subchaves do Registro: 
Controlador de domínio : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics
LDS: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<LDS instance name>\Diagnostics
Cada um dos seguintes valores REG_DWORD na  subchave Diagnostics representa um tipo de evento que pode ser gravado para o log de eventos:

1 KCC (Knowledge Consistency Checker)
2 Eventos de segurança
3 Eventos da interface ExDS
4 Eventos da interface MAPI
5 Eventos de replicação
6 Coleta de lixo
7 Configuração interna
8 Acesso ao diretório
9 Processamento interno
10 Contadores de desempenho
11 Inicialização / término
12 Controle de serviço
13 Resolução de nomes
14 Backup
15 Campo Engenharia
16 Eventos da interface LDAP
17 Configuração
18 Catálogo global
19 Mensagens entre sites
Novo no Windows Server 2003:
20 Cache de grupo
21 Replicação de valor vinculado
22 Cliente
DS RPC 23 Servidor DS RPC
24 Esquema DS
Novo no Windows Server 2012 e no Windows 8:
25 Mecanismo de Transformação
26 Controle de Acesso Baseado em Declarações

1 Knowledge Consistency Checker (KCC)
2 Security Events
3 ExDS Interface Events
4 MAPI Interface Events
5 Replication Events
6 Garbage Collection
7 Internal Configuration
8 Directory Access
9 Internal Processing
10 Performance Counters
11 Initialization/Termination
12 Service Control
13 Name Resolution
14 Backup
15 Field Engineering
16 LDAP Interface Events
17 Setup
18 Global Catalog
19 Inter-site Messaging
New to Windows Server 2003:
20 Group Caching
21 Linked-Value Replication
22 DS RPC Client
23 DS RPC Server
24 DS Schema
New to Windows Server 2012 and Windows 8:
25 Transformation Engine
26 Claims-Based Access Control

Níveis de registro

Cada entrada pode receber um valor de 0 a 5 e esse valor determina o nível de detalhes dos eventos registrados. Os níveis de registro são descritos como:

  • 0 (nenhum): somente eventos críticos e eventos de erro são registrados nesse nível. Esta é a configuração padrão para todas as entradas, e deve ser modificada somente se ocorrer um problema que você queira investigar.
  • 1 (Mínimo): Eventos de muito alto nível são registrados no log de eventos nessa configuração. Os eventos podem incluir uma mensagem para cada tarefa principal executada pelo serviço. Use essa configuração para iniciar uma investigação quando você não souber a localização do problema.
  • 2 (Básico)
  • 3 (Extensivo): esse nível registra informações mais detalhadas do que os níveis inferiores, como as etapas executadas para concluir uma tarefa. Use essa configuração quando você tiver reduzido o problema a um serviço ou a um grupo de categorias.
  • 4 (verboso)
  • 5  (Interno): este nível registra todos os eventos, incluindo sequências de depuração e alterações de configuração. Um registro completo do serviço é registrado. Use essa configuração quando você rastrear o problema para uma categoria específica de um pequeno conjunto de categorias.

Como configurar o log de eventos de diagnóstico do Active Directory

Para configurar o log de eventos de diagnóstico do Active Directory, siga estas etapas.
Importante: Esta seção, método ou tarefa contém etapas que informam sobre como modificar o registro. No entanto, podem ocorrer sérios problemas se você modificar o registro incorretamente. Portanto, certifique-se de seguir estas etapas cuidadosamente. Para proteção adicional, faça o backup do registro antes de modificá-lo. Em seguida, você pode restaurar o registro se ocorrer um problema.

  1. Clique em Iniciar e, em seguida, clique em Executar .
  2. Na caixa Abrir , digite regedit e, em seguida, clique em OK .
  3. Localize e clique nas seguintes chaves do Registro. 

Controlador de domínio : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics
LDS: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<LDS instance name>\Diagnostics

Cada entrada que é exibida no painel direito da janela do Editor do Registro representa um tipo de evento que o Active Directory pode registrar. Todas as entradas são configuradas para o valor padrão de 0 (Nenhum).

  1. Configure o log de eventos para o componente apropriado:
    1. No painel direito do Editor do Registro, clique duas vezes na entrada que representa o tipo de evento para o qual você deseja fazer logon. Por exemplo, eventos de segurança .
    2. Digite o nível de log desejado (por exemplo, 2 ) na caixa Dados do valor e clique em OK .
  2. Repita a etapa 4 para cada componente que você deseja registrar.
  3. No menu Registro , clique em Sair para fechar o Editor do Registro.

Notas

  • Os níveis de log devem ser definidos para o valor padrão de 0 (Nenhum), a menos que você esteja investigando um problema.
  • Quando você aumenta o nível de log, o detalhe de cada mensagem e o número de mensagens que são gravadas no log de eventos também aumentam. Um nível de diagnóstico de 3 ou superior não é recomendado, porque o registro nesses níveis requer mais recursos do sistema e pode degradar o desempenho do seu servidor. Certifique-se de redefinir as entradas para 0 depois de concluir a investigação do problema.

quarta-feira, 7 de dezembro de 2016

LDAP Properties for CSVDE and VBScript

Research LDAP* Properties for the User Object

This page explains the common LDAP attributes which are used in VBS scripts and PowerShell.  Programs like VBScript (WSH), CSVDE and LDIFDE rely on these LDAP attributes to create or modify objects in Active Directory.  For example, when you bulk import users you will include the LDAP attributes: dn and sAMAccountName.

* LDAP is the Lightweight Directory Access Protocol.

Topics for LDAP Attributes

Hall of Fame LDAP Attribute - DN  Distinguished Name

As the word 'distinguished' suggests, this is THE LDAP attribute that uniquely defines an object.  Each DN must have a different name and location from all other objects in Active Directory.  The other side of the coin is that DN provides a way of selecting any object in Active Directory.  Once you have selected the object, then you can change its attributes.

Time spent in getting to know the DN attribute will repay many fold.  Observe the different components CN=common name, OU = organizational unit.  DC often comes with two entries, DC=CP, DC=COM.  Note that DC=CP.COM would be wrong.  Incidentally in this situation, DC means domain content rather than domain controller.

Another point with the syntax is to check the speech marks; when used with VBScript commands, DN is often enclosed in "speech marks".  Even the speech marks have to be of the right type, "double quotes are correct", 'single quotes may be ignored', with unpredictable results.  Finally, pay particular attention to commas in distinguished names.

LDAP Attributes from Active Directory Users and Computers

The diagram below is taken from Active Directory Users and Computers. It shows the commonest LDAP attributes for vbs scripts.

image

When you write your scripts, check how the LDAP attributes map to the Active Directory boxes.

Research Tip:

One of my favourite techniques is to add values in the active directory property boxes, then export using CSVDE.  Next, open the .csv file in Excel, search for the value, and read the LDAP field name from row 1.

LDAP Attribute

Example

C
Country: e.g GB for Great Britain.
CN - Common Name
CN=Guy Thomas.  Actually, this LDAP attribute can be made up from givenName joined to SN.
CN
Maps to 'Name' in the LDAP provider. Remember CN is a mandatory property.  See also sAMAccountName.
description
What you see in Active Directory Users and Computers.  Not to be confused with displayName on the Users property sheet.
displayName
displayName = Guy Thomas.  If you script this property, be sure you understand which field you are configuring.  DisplayName can be confused with CN or description.

Display name -v- Descriptionimage

Important LDAP Notes

Display name and Description are different

Office's LDAP attribute is:

physicalDeliveryOfficeName

E-mail is plain: mail

DN - also distinguishedName
DN is simply the most important LDAP attribute.
CN=Jay Jamieson, OU= Newport,DC=cp,DC=com
givenName
Firstname also called Christian name
homeDrive
Home Folder : connect.  Tricky to configure
initials
Useful in some cultures.
name
name = Guy Thomas.  Exactly the same as CN.
objectCategory
Defines the Active Directory Schema category. For example, objectCategory = Person
objectClass
objectClass = User.  Also used for Computer, organizationalUnit, even container.  Important top level container.
physicalDeliveryOfficeName
Office! on the user's General property sheet
postOfficeBox
P.O. box.
profilePath
Roaming profile path: connect.  Trick to set up
sAMAccountName
This is a mandatory property, sAMAccountName = guyt.  The old NT 4.0 logon name, must be unique in the domain.
sAMAccountName
If you are using an LDAP provider 'Name' automatically maps to sAMAcountName and CN. The default value is same as CN, but can be given a different value.
SN
SN = Thomas. This would be referred to as last name or surname.
title
Job title.  For example Manager.
userAccountControl
Used to disable an account.  A value of 514 disables the account, while 512 makes the account ready for logon.
userPrincipalName
userPrincipalName = guyt@CP.com  Often abbreviated to UPN, and looks like an email address.  Very useful for logging on especially in a large Forest.  Note UPN must be unique in the forest.
wWWHomePage
User's home page.

Examples of Exchange Specific LDAP attributes

homeMDB
Here is where you set the MailStore
legacyExchangeDN
Legacy distinguished name for creating Contacts. In the following example,
Guy Thomas is a Contact in the first administrative group of GUYDOMAIN: /o=GUYDOMAIN/ou=first administrative group/cn=Recipients/cn=Guy Thomas
mail
An easy, but important attribute.  A simple SMTP address is all that is required billyn@ourdom.com
mAPIRecipient - FALSE
Indicates that a contact is not a domain user.
mailNickname
Normally this is the same value as the sAMAccountName, but could be different if you wished.  Needed for mail enabled contacts.
mDBUseDefaults
Another straightforward field, just the value to:True
msExchHomeServerName
Exchange needs to know which server to deliver the mail.  Example: 
/o=YourOrg/ou=First Administrative Group/cn=Configuration/cn=Servers/cn=MailSrv
proxyAddresses
As the name 'proxy' suggests, it is possible for one recipient to have more than one email address.  Note the plural spelling of proxyAddresses.
targetAddress
SMTP:@ e-mail address.  Note that SMTP is case sensitive.  All capitals means the default address.
showInAddressBook
Displays the contact in the Global Address List.

Other Useful LDAP Attributes / Propeties

c
Country or Region
company
Company or organization name
department
Useful category to fill in and use for filtering
homephone
Home Phone number, (Lots more phone LDAPs)
l  (Lower case L)
L = Location.  City ( Maybe Office
location
Important, particularly for printers and computers.
manager
Boss, manager
mobile
Mobile Phone number
ObjectClass
Usually, User, or Computer
OU
Organizational unit.  See also DN
pwdLastSet
Force users to change their passwords at next logon
postalCode
Zip or post code
st
State, Province or County
streetAddress
First line of address
telephoneNumber
Office Phone
userAccountControl
Enable (512) / disable account (514)
 

Examples of Obscure LDAP Attributes

dNSHostname
rID
url
uSNCreated, uSNChanged
LDAP and CSVDE Tip  To discover more LDAP attributes, go to the command prompt, type:
CSVDE -f Exportfile.csv.  Then open Exportfile.csv with Excel.exe.   Alternatively, use ADSI Edit and right-click the container objects.

quinta-feira, 18 de março de 2010

Acessando o Active Directory (LDAP) com ASP.Net - Parte 4 - Adicionando Dados a um atributo

Autor: Rafael Maia
Fonte:http://rafaelfranklinmaia.blogspot.com/search/label/Active%20Directory

Segue mais um código para manipulação de informações em base LDAP utilizando o .net.

O código é bem parecido com o código para atualização de dados. Mas ao invés de alterarmos um valor existente, iremos adicionar um novo valor ao atributo.

Dim recurso As New DirectoryEntry("LDAP://10.190.1.25")
Dim busca As New DirectorySearcher(recurso)
Dim resultado As SearchResult

'Você pode alterar o critério da busca para o critério que for melhor para sua aplicação.
busca.Filter = "(sAMAccountName=RafaelMaia)"
resultado = busca.FindOne()


'Adicionando o valor
Dim oDe As DirectoryEntry = Resultado.GetDirectoryEntry
oDe.Properties("mail").add("rafael@email.com.br")
oDe.CommitChanges()
oDe.Close()



Um abraço e até a próxima!!

Acessando o Active Directory (LDAP) com ASP.Net - Parte 3 - Alterando dados do usuário

Autor: Rafael Maia
Fonte:http://rafaelfranklinmaia.blogspot.com/search/label/Active%20Directory

Voltando ao assunto Active Directory.
Hoje estarei publicando um código para alteração dos atributos de um usuário em uma base LDAP.

A primeira coisa a fazer é carregar os dados do usuário que queremos alterar os dados.


Dim recurso As New DirectoryEntry("LDAP://10.190.1.25")
Dim busca As New DirectorySearcher(recurso)
Dim resultado As SearchResult
busca.Filter = "(sAMAccountName=RafaelMaia)"
resultado = busca.FindOne()

Em seguida, iremos para a alteração de fato.


Dim oDe As DirectoryEntry = Resultado.GetDirectoryEntry
oDe.Properties("mail")(0) = "rafael@email.com.br"
oDe.CommitChanges()
oDe.Close()


Pronto! O código acima altera o atributo "mail" diretamente na sua base LDAP.
Para alterar qualquer outro atributo basta trocar o nome da propriedade "mail" por qualquer outra propriedade.

Não esqueçam de importar o namespace System.DirectoryServices e das permissões necessárias para efetuar essas operações no LDAP.

Um abraço e até a próxima!!

Acessando o Active Directory (LDAP) com ASP.Net - Parte 2 - Adicionando e Removendo um usuário de um grupo

 

Autor: Rafael Maia
Fonte:http://rafaelfranklinmaia.blogspot.com/2009/10/acessando-o-active-directory-ldap-com.html


Hoje estarei dando continuidade ao assunto Active Directory.
Em uma das aplicações que estive desenvolvendo foi necessário manipular o grupo ao qual um usuário pertence.

Segue o código para adicionar e remover um usuário de um grupo no Active Directory.

Adicionando usuário ao grupo:


        Dim rootEntry As New DirectoryEntry("LDAP://10.190.1.25")
        Dim Mysearcher As New DirectorySearcher(rootEntry)
        Mysearcher.SearchRoot = rootEntry
        Mysearcher.Filter = "(&(objectCategory=group)(CN=Grupo_Teste))"
        Dim result As SearchResult = Mysearcher.FindOne()
        Dim g As DirectoryEntry = result.GetDirectoryEntry()

        Dim busca As New DirectorySearcher(rootEntry)
        busca.Filter = "(sAMAccountName=RafaelMaia)"
        result = busca.FindOne()

        Dim user As DirectoryEntry = result.GetDirectoryEntry()

        g.Invoke("Add", New [Object]() {user.Path})
        g.CommitChanges()

        g.Close()
        g.Dispose()

        user.Close()
        user.Dispose()

        Mysearcher.Dispose()
        rootEntry.Close()
        rootEntry.Dispose()

No código acima estou adicionando o usuário RafaelMaia ao grupo Grupo_Teste.
Se você tentar adicionar um usuário a um grupo que ele já pertence, ocorrerá uma exception.

Por isso, é importante validar se o usuário já pertence ao grupo antes de adicioná-lo.
Isso pode ser feito facilmente utilizando o código postado no artigo anterior.
Basta consultar os dados do usuário e verificar a propriedade "MemberOf".
Esta propriedade retorna um array de string contendo todos os grupos que o usuário pertence.

Removendo usuário do grupo:


        Dim rootEntry As New DirectoryEntry("LDAP://10.190.1.25")
        Dim Mysearcher As New DirectorySearcher(rootEntry)
        Mysearcher.SearchRoot = rootEntry
        Mysearcher.Filter = "(&(objectCategory=group)(CN=Grupo_Teste))"
        Dim result As SearchResult = Mysearcher.FindOne()
        Dim g As DirectoryEntry = result.GetDirectoryEntry()

        Dim busca As New DirectorySearcher(rootEntry)
        busca.Filter = "(sAMAccountName=RafaelMaia)"
        result = busca.FindOne()

        Dim user As DirectoryEntry = result.GetDirectoryEntry()

        g.Invoke("Remove", New [Object]() {user.Path})
        g.CommitChanges()

        g.Close()
        g.Dispose()

        user.Close()
        user.Dispose()

        Mysearcher.Dispose()
        rootEntry.Close()
        rootEntry.Dispose()


Reparem que os códigos são praticamente idênticos. Alterando somente a linha a seguir:
        g.Invoke("Remove", New [Object]() {user.Path})

Antes de excluir um usuário do grupo, verifique se o mesmo pertence realmente ao grupo em questão.
Caso tente excluir um usuário que não pertence ao grupo, ocorrerá uma exception.

É muito importante também que o usuário que está rodando sua aplicação tenha permissões para executar esta operação no active directory.

Um abraço e até a próxima!!