Active Directory (AD) Domain Controller Build Best Practices
DOMAIN NAMING:
- Do not use Domain.local, since “.local” is not routable
- Use an Internet routable domain name, such Domain.com or Domain.net
- Best practice is to use the same name as your public domain name
- Do not use dashes (-) or underscores (_) in the DC server names
- Allows to get a public SSL/TLS certificate
- Allows to setup Entra ID Connect Sync to sync on-prem domain object to the cloud
DOMAIN CONTROLLER (DC) NAMING:
- DC names should follow a standard naming convention, such as “DC01”, “DC02”, etc
- Name should be 15 or less characters long to comply with NetBIOS
- Do not use dashes (-) or underscores (_) in the DC server names
DC BUSINESS CONTINUITY:
- DCs should not be shut down to operate efficiently; shutting down DCs breaks replication and authentication from workstations and other services
- For testing purposes, a single DC is sufficient holding all FSMO roles
- DC should be backed up regularly and backups tested
- DCs should be on recent, supported versions (Server 2019, 2022, or 2025)
DNS SERVER BEST PRACTICES:
- With a single DC in a domain, the DC should point their primary DNS to themselves
- With two DCs in a domain, DC01 should point to DC02 as primary, and itself as secondary
- With multiple DCs, follow the same strategy as above, pointing the DC to itself last
- Do not use loopback IP addresses in DNS settings (i.e 127.0.0.1)
- Do not use public DNS servers in DCs Network Interface Card (NIC) settings (i.e. 8.8.8.8)
DOMAIN ADMINISTRATORS:
- Domain Administrators should not be standard users with elevated rights
- If you John Smith has a user account “John.Smith” they should have a “John.Smith-Admin” account that has elevated Domain Admin role and is not used by the user regularly
- Domain Admin accounts should be monitored for suspicious activity (MDR, SIEM, IDS, etc)
- Domain Admin accounts should have complex passwords, different from other passwords; passwords should not be shared with others
- Domain Admin accounts should have MFA where possible
- Domain Admin accounts should be unique to each admin for proper auditing; no re-sharing accounts between multiple users for auditing and non-repudiation purposes
SETTING EXTERNAL TIME SOURCES:
There are three common scenarios:
- Single DC: Set an external time source if it’s the single DC (by default it’s the PDC Emulator role holder).
- Multiple DCs at one site: If there are multiple DCs at one site, set an external time source on the PDC Emulator ONLY (other DCs and computers will get time from it).
- *Multiple DCs at several sites: If there are multiple DCs across sites, set an external time source on one DC per site.
You can use commands to set external sources (in Administrative mode):
- Set external time sources: w32tm /config /syncfromflags:manual /manualpeerlist:”0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org 3.pool.ntp.org”
- Restart time service: net stop w32time && net start w32time
- Update time config: w32tm /config /update
- Resync: w32tm /resync
Verify configuration: w32tm /query /configuration
CONFIGURE GROUP POLICIES:
Create group policies for everything possible, to automate user onboarding, workstation setups, etc.
- Network Printers Deployment
- Network Shares/Drives Deployment
- Domain Password Policy
- Windows Firewall
- Loopback Policy
- Enable Remote Desktop
- Create Desktop/Web Shortcuts
- Browser Restrictions (Edge, Chrome, Firefox)
- Block password saving
- Cloud sync account sign-in
- Insecure settings
- Windows 10/11