Sommaire
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
# 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.