Dark blue background with light strikes
time 3 minute read

Collision of Best Practices: Azure Security Baseline, Default Domain Policy, and Resulting Challenges

As organizations increasingly migrate infrastructure to the cloud, deploying Domain Controllers in Azure has become standard practice. Over the years, we have assisted numerous clients in expanding their cloud footprint or establishing a cloud presence, which almost invariably involves deploying at least one Domain Controller in Azure. Until recently, this process had been largely uneventful. However, a recent experience resulted in a complex challenge rooted in a collision of best practices inconsistently followed, requiring significant effort to diagnose and resolve.

Scenario: Recurring Reversion of the Default Domain Policy GPO
The issue originated when a domain-wide password policy change triggered disruptions. Users were being prompted to change their passwords well ahead of the expected schedule or being locked out entirely. The domain’s password policy was configured within the Default Domain Policy (DDP) Group Policy Object (GPO). After adjustments were made to the policy, the settings inexplicably reverted within 15 minutes. Attempts to trace the source of the change yielded no direct evidence—only that the DDP had been incrementally updated.

Best Practice #1: Avoid Modifying Default Policies
The first complicating factor was deviating from a well-established best practice: not to modify the Default Domain Policy or Default Domain Controller Policy directly. These policies are foundational, and any changes to them risk cascading, domain-wide issues. The recommended practice is to create new GPOs for specific configurations and apply them at the appropriate levels. However, in this scenario, the existing configurations were already within the DDP and deploying them in new GPOs was not a viable option.

Simultaneously, several other projects were in progress, including Exchange upgrades, implementations of password manager, and deployments of Advanced Group Policy Management (AGPM). Although these activities initially appeared to be plausible sources of the issue, our thorough investigations determined that they were unrelated.

When troubleshooting, start by asking: “What changed?” While this often leads to identifying recent updates, configuration adjustments, or deployments, none of the obvious changes provided answers. Ultimately, we considered an unlikely but potentially plausible culprit: recent deployment of Domain Controllers to Azure.

Best Practice #2: Applying the Azure Security Baseline
Applying Azure’s security baseline to virtual machines is an essential best practice, enhancing security and compliance. However, in this instance, it directly contributed to the issue. The security baseline itself does not create or modify Group Policy Objects (GPOs)—a fact which would cause many to dismiss it as a cause. We were out of likely suspects however, we needed to investigate other options, even those initially appearing implausible at first glance. Our investigation uncovered an obscure behavior specific to Domain Controllers.

When modifications are made to the Local Security Policy on a Domain Controller, changes to certain policies will be written back to the Default Domain Policy, propagating domain-wide. While most Local Security Policy settings on Domain Controllers are locked down, certain configurations can still be altered using command-line tools or security templates. Azure’s security baseline evaluated the Azure Domain Controllers, identified non-compliance issues, and pushed changes to the Local Security Policy. This process subsequently triggered updates to the Default Domain Policy.

Since the Domain Controller itself was updating the Group Policy Object (GPO), none of the logs provided useful information for identifying the source of the change, as the policy was simply updated and the version incremented.

Mitigation Strategies
Upon identifying the root cause, the immediate question was how to mitigate the issue. While creating a new GPO with the desired settings and enforcing precedence over the DDP would have resolved the problem, this approach was not viable due to specific organizational constraints. This highlights the importance of isolating critical settings into dedicated GPOs from the outset.

Organizations should inventory settings currently applied through the Default Domain Policy and migrate them to dedicated GPOs. This approach minimized the risk of unintended changes, improves manageability, and significantly eases the burden of attempting to investigate odd GPO behavior.

While applying the Azure security baseline is almost universally beneficial, administrators should be aware of its potential impact on Domain Controllers, particularly in environments where GPO management doesn’t always adhere to best practices.

Organizations are advised to review their existing Default Domain Policy prior to deploying Domain Controllers to Azure and remediate any configurations identified which were changed. This process will help identify and mitigate potential edge cases, such as the one discussed, which may lead to future complications.

Although this particular issue was an edge case, it underscores the importance of meticulous planning and adherence to best practices and having a committed partner for cloud implementations. By proactively identifying and addressing potential pitfalls, organizations can avoid similar disruptions as they continue their cloud journeys.

For more information or assistance in preparing and implementing best practices, please contact our team of experts at service@helient.com.