Sommaire
ToggleIntroduction
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
- Configuring the Local Configuration Manager
- Create the Key Distribution Services KDS Root Key
- Securing the MOF File
- Install-ADDSForest
- Enable-ADOptionalFeature
- PowerShell du Zero
Un article signé Thomas Illiet