Active Directory Domain Services (AD DS) serves as the backbone of Windows-based enterprise networks, providing centralized authentication and authorization services. At its core, AD DS implements LDAP-compliant directory services using a hierarchical structure of domains, trees, and forests.
# Basic AD DS hierarchy representation in PowerShell
$ADForest = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()
$ADForest.Domains | ForEach-Object {
Write-Output "Domain: $($_.Name)"
$_.DomainControllers | ForEach-Output {
Write-Output " DC: $($_.Name) (OS: $($_.OSVersion))"
}
}
The authentication process in AD DS follows the Kerberos protocol:
- Client requests Ticket Granting Ticket (TGT) from Key Distribution Center (KDC)
- KDC verifies credentials and issues encrypted TGT
- Client presents TGT when requesting service tickets
- Service tickets grant access to specific resources
AD DS organizes resources as objects with attributes. Common object types include:
# Creating a new user with PowerShell
New-ADUser -Name "John Doe" `
-SamAccountName "jdoe" `
-UserPrincipalName "jdoe@contoso.com" `
-Path "OU=Users,DC=contoso,DC=com" `
-AccountPassword (ConvertTo-SecureString "P@ssw0rd123" -AsPlainText -Force) `
-Enabled $true
AD DS tightly integrates with Group Policy for centralized configuration management:
# Applying GPO to specific OU
$GPO = Get-GPO -Name "Security Baseline"
$OU = "OU=Workstations,DC=contoso,DC=com"
New-GPLink -Name $GPO.DisplayName -Target $OU -LinkEnabled Yes
AD DS uses multi-master replication with:
- Intra-site replication (15-second notification)
- Inter-site replication (configurable schedules)
- Urgent replication for critical changes
# Checking replication status
repadmin /showrepl
repadmin /replsummary
Key security features include:
# Auditing AD changes
Set-ADDomainMode -Identity "contoso.com" `
-DomainMode "Windows2016Domain" `
-Confirm:$false
# Implementing Privileged Access Workstations
Import-Module ActiveDirectory
$PAWComputers = Get-ADComputer -Filter {OperatingSystem -like "*Server*"}
$PAWComputers | Set-ADObject -ProtectedFromAccidentalDeletion $true
Active Directory Domain Services (AD DS) is Microsoft's directory service that provides centralized authentication and authorization for Windows networks. At its core, AD DS stores information about network resources (users, computers, printers) in a hierarchical database and makes this information available to authorized entities.
The AD DS structure consists of several logical components:
// Example PowerShell command to query AD structure
Get-ADForest | Select-Object Name, Domains, GlobalCatalogs
Get-ADDomain | Select-Object DNSRoot, DomainControllers
AD DS primarily uses Kerberos for authentication. Here's a simplified flow:
1. Client requests TGT from Domain Controller (AS-REQ)
2. DC verifies credentials and issues TGT (AS-REP)
3. Client requests service ticket (TGS-REQ)
4. DC validates TGT and issues service ticket (TGS-REP)
5. Client presents service ticket to target server (AP-REQ)
6. Server verifies ticket and grants access (AP-REP)
Here's how to programmatically interact with AD DS using common languages:
C#/.NET Example
using System.DirectoryServices;
var entry = new DirectoryEntry("LDAP://DC=domain,DC=com");
var searcher = new DirectorySearcher(entry) {
Filter = "(&(objectClass=user)(sAMAccountName=username))"
};
SearchResult result = searcher.FindOne();
Python Example
import ldap3
server = ldap3.Server('dc.domain.com')
conn = ldap3.Connection(server, 'user@domain.com', 'password', auto_bind=True)
conn.search('dc=domain,dc=com', '(objectClass=user)')
print(conn.entries)
Essential PowerShell commands for AD management:
# Create new user
New-ADUser -Name "John Doe" -SamAccountName jdoe -UserPrincipalName jdoe@domain.com
# Reset password
Set-ADAccountPassword -Identity jdoe -Reset -NewPassword (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force)
# Add to group
Add-ADGroupMember -Identity "Developers" -Members jdoe
When dealing with replication problems:
repadmin /showrepl
repadmin /syncall /APed
dcdiag /test:replications
Critical security considerations for AD implementations:
# Enable LDAPS
Install-ADServiceAccount -Identity 'CN=LDAP,CN=Managed Service Accounts,DC=domain,DC=com'
Set-ADObject -Identity 'CN=LDAP,CN=Managed Service Accounts,DC=domain,DC=com' -Add @{'msDS-AllowedToDelegateTo'=@('host/dc1.domain.com','host/dc2.domain.com')}
Leveraging AD FS for modern authentication:
// OAuth 2.0 flow with AD FS
POST /adfs/oauth2/token HTTP/1.1
Host: adfs.domain.com
Content-Type: application/x-www-form-urlencoded
grant_type=password
&username=user@domain.com
&password=P@ssw0rd
&client_id=your_app_id
&resource=https://api.target.com