Office Servers and Services

"La connaissance ne vaut que si elle est partagée" / "An effective Knowledge is a shared one"

Exchange + DSC = xExchange partie 2

Posted by Anthony Costeseque sur janvier 2, 2016


Bonjour à tous,

Que cette nouvelle année 2016 rime avec passion, énergie et réalisation !

Pour bien débuter continuons notre exploration de DSC dans Exchange :D

Et avant d’attaquer le dur nous allons préparer notre environnement de travail.

Cela va consister en :

    1 – Préparation du certificat pour sécuriser les credential stockés dans les fichiers .MOF générés

    2 – Déploiement des Modules DSC nécessaires sur les serveurs cibles

    3 – Modification WMI – augmentation des quotas

Commençons par le certificat

Pour plus de détails je vous invite à lire :

http://blogs.msdn.com/b/powershell/archive/2014/01/31/want-to-secure-credentials-in-windows-powershell-desired-state-configuration.aspx

http://blogs.msdn.com/b/powershell/archive/2015/10/02/powershell-dsc-faq-sorting-out-certificates.aspx

L’objectif est simple, étant donné que les fichiers .MOF stocke les credential fourni en clair il faut les sécuriser. La sécurisation se fera en utilisant une paire de clefs (présent dans un certificat SSL) pour crypter / décrypter les credentials.

Lors de la génération des configurations la clef publique est utilisée et lors de la lecture des configurations par le LCM des clients DSC c’est la clef privée qui sera utilisée.

  

Clef Publique

Clef Privée

Poste Admin

Oui

Non

DSC Clients

Non

Oui

 

Pour la démonstration j’utiliserai une PKI Microsoft (AD CS) Enterprise (non standalone pour pouvoir utiliser les template).

On duplique le template « Worstation Authentication »


Et on le personnalise



On lui donne un nom (DSC Client) et une durée de validité (ici 1 an), on autorise l’export de la clef privée.



2048 pour un certificat d’1 an c’est largement suffisant, on donnera le Subject au moment de la demande.



Pour la renforcer la sécurité on peut modifier les ACL pour n’autoriser que le groupe d’ordinateurs qui va utiliser DSC à pouvoir s’enrôler.


On publi notre template


On est prêt à générer notre certificat

Je vais réaliser la demande à partir u serveur qui va me servir à Push mes configuration et qui me servira aussi de Pull serveur par la suite.




J’ouvre une mmc pour charger la snap-in certificat (au niveau compte d’ordinateur)




Dans toutes les taches on faire une nouvelle demande de certificat




Mon template est bien disponible et il me faut personnaliser le Subject







On commence par le « Common Name » ici « DSC Certificate » puis (optionnel) on peut ajouter l’organization / l’organization Unit et le Pays, on fini par donner un Friendly Name au certificat (ici DSC Certificate)



La demande c’est bien déroulé et le certificat est bien disponible dans store personnel du compte d’ordinateur local (note la clef sur le dessin du certificat montre que la clef privée est présente)

Nous allons maintenant exporter le certificat avec sa clef privée pour le déployer sur les Clients, lors de l’export nous supprimerons la clef privée du certificat (car comme vu au début la clef privée n’est pas nécessaire sur le poste d’admin)






Bien cocher « supprimer la clef privée si l’export réussi », puis sécuriser le fichier avec un mot de passe complexe ! vous pouvez utiliser PowerShell pour en générer un :)


[Reflection.Assembly]::LoadWithPartialName(« System.Web »)

[System.Web.Security.Membership]::GeneratePassword(16,0)


Notez que le dessin de la clef a disparu (la clef privée n’est plus présente)

Maintenant il faut exporter la clef publique qui sera utilisée par le serveur d’admin qui génèrera les fichiers de configurations





Pour finir nous allons récupérer le Thumbprint


    cd Cert:\LocalMachine\My

    ls

Notre certificat publique se trouve dans C:\DSC\Certificates\DSCCertificate-Public.cer

Et son Thumbprint est E2D4D502C2C201F19A364EF5879D5B8E83B0327E

Passons au déploiement de la clef privée sur les clients DSC (les serveurs Exchange) à l’aide du script DeployPrivateKey.ps1 (de Mike Hendrickson)


    Disponible ici : http://1drv.ms/1IJGIZB

Nous allons devoir désactiver le Firewall temporairement le temps de l’exécution des scripts

    Get-NetFirewallProfile -CimSession AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04 | Select PSComputerName,Name,Enabled | FT Name,Enabled -GroupBy PSComputerName -AutoSize

Get-NetFirewallProfile -CimSession AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04 | Set-NetFirewallProfile -Enabled False

Get-NetFirewallProfile -CimSession AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04 | Select PSComputerName,Name,Enabled | FT Name,Enabled -GroupBy PSComputerName -AutoSize

Nous pouvons maintenant lancer le script


    cd c:\DSC\Scripts\HelperScripts

.\DeployPrivateKey.ps1 -TargetComputers AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04



Utiliser des credential (local ou du domaine) ayant des droits d’administrateur sur les clients DSC (les serveurs Exchange)





Le certificat a été correctement déployé et la clef privée est sécurisée

Continuons avec le déploiement des Modules DSC nécessaires sur les serveurs cibles

Avec WMF 4 il faut installer le module PowerShellGet pour trouver et installer facilement les modules PowerShell présent dans la Gallery (module automatiquement present avec WMF 5)

https://www.microsoft.com/en-us/download/details.aspx?id=49186&751be11f-ede8-5a0c-058c-2ee190a24fa6=True



Les cmdlets disponibles

    Get-Command -Module PowerShellGet


Vérifions que le module xExchange est bien disponible

    Find-Module xExchange


Installons le module, la première utilisation d’Install-Module demande l’installation de NuGet

    Install-Module xExchange -Force


Le module est maintenant disponible dans « C:\Program Files\WindowsPowerShell\Modules »

Nous allons le copier dans c:\DSC\Modules


Maintenant nous allons utiliser le script DeployDSCModules.ps1 (de Mike Hendrickson)


Disponible ici : http://1drv.ms/1IJGIZB


    .\DeployDSCModules.ps1 -TargetComputers AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04

Il est possible de rajouter des modules par la suite (comme xWebAdministration) puis de relancer le script


Finissons avec la modification de WMI (augmentation des quotas)

Pour eviter l’erreur PowerShell provider MSFT_xExchClientAccessServer failed to execute Test-TargetResource functionality with error message: Exception of type ‘System.OutOfMemoryException’ was thrown.

Il est nécessaire d’augmenter les quotas WMI pour que Remote PowerShell s’exécute correctement.

Nous allons utiliser le script SetWMIQuota.ps1 (de Mike Hendrickson)


    Disponible ici : http://1drv.ms/1IJGIZB


    .\SetWMIQuota.ps1 -TargetComputers AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04

Et voilà notre environnement est maintenant prêt !! :)))

Nous pouvons réactiver le Firewall des serveurs

    Get-NetFirewallProfile -CimSession AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04 | Select PSComputerName,Name,Enabled | FT Name,Enabled -GroupBy PSComputerName -AutoSize

Get-NetFirewallProfile -CimSession AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04 | Set-NetFirewallProfile -Enabled True

Get-NetFirewallProfile -CimSession AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04 | Select PSComputerName,Name,Enabled | FT Name,Enabled -GroupBy PSComputerName -AutoSize

 

Dans la prochaine partie (3) nous allons voir le déploiement entièrement automatisé de JetStress !

Bonne lecture ! Et encore une fois une Excellente Année 2016 à tous :D

Anthony Costeseque

Laisser un commentaire

Choisissez une méthode de connexion pour poster votre commentaire:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

 
%d blogueurs aiment cette page :