Installation d’un Lab Active Directory

Introduction

Cet article montre comment créer un environnement Active Directory dans le cadre de l’élaboration d’une infrastructure de Test.

Pour le déploiement du Rôle «AD-Domain-Services» nous utiliserons Powershell ou Powershell DSC ce qui vous permettra d’avoir une certaine consistance sur la configuration du rôle contrairement à l’opération via l’interface graphique.

Configuration de l’environnement

Avant de pouvoir effectuer la configuration du Rôle, je vous invite à effectuer quelques configurations système à l’aide de Powershell

# Set Network configuration
$NetAdapter = Get-NetAdapter
$NetAdapter | New-NetIPAddress -IPAddress 172.16.10.12 -PrefixLength 24 -DefaultGateway 172.16.10.10
$NetAdapter | Set-DNSClientServerAddress -ServerAddresses 172.16.10.12, 172.16.10.13

# Rename computer
Rename-Computer -NewName SRV-AD01

# Restart
restart-computer

Installation

Powershell

Le script ci-dessous vous permettra d’installer le rôle «AD-Domain-Services» et d’effectuer l’installation de ce dernier.
# Install Windows Feature
install-windowsfeature AD-Domain-Services

# Install AD Forest
$Params = @{
    SafeModeAdministratorPassword = (ConvertTo-SecureString 'P@ssw0rd' -AsPlainText -Force)
    ForestMode                    = "WinThreshold"
    DomainMode                    = "WinThreshold"
    DomainName                    = "Netboot.lab"
    DomainNetbiosName             = "NETBOOT"
    DatabasePath                  = "C:\Windows\NTDS"
    SysvolPath                    = "C:\Windows\SYSVOL"
    LogPath                       = "C:\Windows\NTDS"
    InstallDns                    = $true
    CreateDnsDelegation           = $false
    NoRebootOnCompletion          = $false
    Force                         = $true
}
Install-ADDSForest @Params

Une fois que le serveur a effectué l’installation de l’Active Directory, vous pouvez effectuer les opérations ci-dessous, qui permettront d’activer la Corbeille AD et de forcer la génération d’une clef Kerberos.

# Enable AD Recycle bin
$Params = @{
    Identity = 'CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=netboot,DC=lab'
    Scope = "ForestOrConfigurationSet"
    Target = "Netboot.lab"
}
Enable-ADOptionalFeature @Params

# Install a KDS Root Key so we can create MSA/gMSA accounts
If (-not (Get-KDSRootKey)) {
    Write-Verbose -Message "KDS Root Key Needs to be installed..."
    Add-KDSRootKey -EffectiveTime ((Get-Date).AddHours(-10))
}

Powershell DSC

A l’aide de Powershell DSC nous allons effectuer la configuration de votre contrôleur de domaine. La configuration que je vous partage peut être exécutée directement sur le serveur ou bien via un Serveur Pull.

Pré-requis

Avant de pouvoir effectuer l’exécution de cette configuration, vous allez devoir effectuer l’installation de quelques modules Powershell DSC à l’aide de la commande ci-dessous:

PS> Install-Module xPSDesiredStateConfiguration, xActiveDirectory, xDNSServer

Configuration

La configuration ci-dessous vous permettra d’effectuer automatiquement les tâches suivantes :

  • + Installation des fonctionnalités
    • – Windows-Server-Backup
    • – DNS
    • – AD-Domain-Services
  • + Installation des outils d’administration
    • – RSAT-AD-PowerShell
    • – RSAT-AD-Tools
    • – RSAT-DNS-Server
  • + Configuration de l’Active Directory
  • + Activation de la Corbeille AD
  • + Forcer la génération de la clef Root de Kereros
  • + Possibilité d’ajouter ce contrôleur à un domaine existant

Vous noterez que dans la configuration on utilise le mode «ApplyOnly» ce qui permet d’éviter de rejouer la configuration toutes les 15 minutes.

Configuration SetupActiveDirectory
{
    Import-DscResource -ModuleName PSDesiredStateConfiguration
    Import-DscResource -ModuleName xActiveDirectory
    Import-DscResource -ModuleName xDNSServer

    Node $AllNodes.NodeName {

        # Assemble the Local Admin Credentials
        If ($Node.LocalAdminPassword) {
            [PSCredential]$LocalAdminCredential = New-Object System.Management.Automation.PSCredential ("Administrator", (ConvertTo-SecureString $Node.LocalAdminPassword -AsPlainText -Force))
        }

        If ($Node.DomainAdminPassword) {
            [PSCredential]$DomainAdminCredential = New-Object System.Management.Automation.PSCredential ("Administrator", (ConvertTo-SecureString $Node.DomainAdminPassword -AsPlainText -Force))
        }

        LocalConfigurationManager
        {
            ActionAfterReboot = 'ContinueConfiguration'
            ConfigurationMode = 'ApplyOnly'
            RebootNodeIfNeeded = $true
        }

        WindowsFeature BackupInstall
        {
            Ensure = "Present"
            Name   = "Windows-Server-Backup"
        }

        WindowsFeature DNSInstall
        {
            Ensure = "Present"
            Name   = "DNS"
        }

        WindowsFeature ADDSInstall
        {
            Ensure    = "Present"
            Name      = "AD-Domain-Services"
            DependsOn = "[WindowsFeature]DNSInstall"
        }

        WindowsFeature RSAT-AD-PowerShellInstall
        {
            Ensure    = "Present"
            Name      = "RSAT-AD-PowerShell"
            DependsOn = "[WindowsFeature]ADDSInstall"
        }

        if ($Node.InstallRSATTools -eq $true)
        {
            WindowsFeature RSAT-ManagementTool-AD
            {
                Ensure    = "Present"
                Name      = "RSAT-AD-Tools"
                DependsOn = "[WindowsFeature]ADDSInstall"
            }
            WindowsFeature RSAT-ManagementTool-DNS
            {
                Ensure    = "Present"
                Name      = "RSAT-DNS-Server"
                DependsOn = "[WindowsFeature]ADDSInstall"
            }
        }

        if($Node.Role -eq "Primary DC")
        {
            xADDomain PrimaryDC
            {
                DomainName                    = $Node.DomainName
                DomainAdministratorCredential = $DomainAdminCredential
                SafemodeAdministratorPassword = $LocalAdminCredential
                DependsOn                     = "[WindowsFeature]ADDSInstall"
            }

            xWaitForADDomain DscForestWait
            {
                DomainName           = $Node.DomainName
                DomainUserCredential = $DomainAdminCredential
                RetryCount           = 20
                RetryIntervalSec     = 30
                DependsOn            = "[xADDomain]PrimaryDC"
            }

            # Enable AD Recycle bin
            xADRecycleBin RecycleBin
            {
                EnterpriseAdministratorCredential = $DomainAdminCredential
                ForestFQDN                        = $Node.DomainName
                DependsOn                         = "[xWaitForADDomain]DscForestWait"
            }

            # Install a KDS Root Key so we can create MSA/gMSA accounts
            Script CreateKDSRootKey
            {
                SetScript = {
                    Add-KDSRootKey -EffectiveTime ((Get-Date).AddHours(-10))
                }
                GetScript = {
                    Return @{
                        KDSRootKey = (Get-KDSRootKey)
                    }
                }
                TestScript = {
                    If (-not (Get-KDSRootKey)) {
                        Write-Verbose -Message "KDS Root Key Needs to be installed..."
                        Return $False
                    }
                    Return $True
                }
                DependsOn = '[xWaitForADDomain]DscForestWait'
            }
        }
        else
        {

            xWaitForADDomain DscDomainWait
            {
                DomainName           = $Node.DomainName
                DomainUserCredential = $DomainAdminCredential
                RetryCount           = 100
                RetryIntervalSec     = 10
                DependsOn            = "[WindowsFeature]ADDSInstall"
            }

            xADDomainController SecondaryDC
            {
                DomainName                    = $Node.DomainName
                DomainAdministratorCredential = $DomainAdminCredential
                SafemodeAdministratorPassword = $LocalAdminCredential
                DependsOn                     = "[xWaitForADDomain]DscDomainWait"
            }

        }
    }
}

Initialisation

Vous trouverez ci-dessous un exemple de paramétrage vous permettant de lancer le processus de configuration de votre contrôleur de domaine.

# Parameters
$Configs = @{
    AllNodes = @(
        @{
            NodeName                    = "localhost"
            DomainName                  = "Netboot.Lab"
            LocalAdminPassword          = "P@sswOrd!"
            DomainAdminPassword         = "P@sswOrd!"
            Role                        = "Primary DC"
            PsDscAllowPlainTextPassword = $True
            InstallRSATTools            = $True
        }
    )
}

# Create Mof configuration
SetupActiveDirectory -ConfigurationData $Configs;

# Make sure that LCM is set to continue configuration after reboot
Set-DSCLocalConfigurationManager -Path .\SetupActiveDirectory –Verbose

# Build the domain
Start-DscConfiguration -Wait -Force -Path .\SetupActiveDirectory -Verbose

Dans le cadre d’une infrastructure de Production, je vous recommande de crypter les informations de connexion a l’aide de certificat (https://docs.microsoft.com/en-us/powershell/dsc/securemof)

Note du Chef

Je vous recommande vivement d’utiliser pour cette machine virtuelle la version Core ou Nano de Windows Serveur, ceci vous apportera les bénéfices suivants :

  • – Réduction de la consommation CPU/RAM
  • – Surface d’attaque plus petite
  • – Moins de mise à jour
  • – Amélioration de votre maîtrise de Powershell

Un bon Administrateur se doit de ne jamais se connecter directement sur le serveur cible, Microsoft fournit un large panel d’outil d’administration ( RSAT, Server Manager, Powershell, etc.) vous permettant d’effectuer toutes les tâches quotidiennes sans devoir utiliser le bureau à distance.

Sources

About the Author

Thomas ILLIET

No Comments

Laisser un commentaire