WSUS by Powershell. Industrialisation du déploiement des mises à jour et Indicateurs

Bonjour à tous,

j’avais envie aujourd’hui de vous montrer comment automatiser et industrialiser l’approbation automatique et donc l’application de patch Microsoft pour vos serveurs Windows.

en effet, suite à l’arriver des différents Cryptolocker qui nous menace maintenant quotidiennement, j’ai due, au sein de l’entreprise pour laquelle je travaille, passer des semaines, pour améliorer la gestion des patch Microsoft et surtout faire en sorte que ce qui était fait à la main auparavant ne le soit plus afin de diminuer le risque d’erreur humaine. Effectivement, nous nous sommes rendu compte que le fait d’oublier d’approuver des patch de sécurité Microsoft par mégarde ou parceque le process n’est pas assez clair, pouvait mettre en péril les données d’un nombre conséquent de serveur que l’on héberge.

Cet article ne sera pas porté sur l’installation ni même le paramétrage WSUS mais sur la gestion des mises à jours et leur distribution au sein de votre parc informatique. Cet article sera donc plus compréhensible par un administrateur connaissant déjà bien l’outil et qui le manipule de façon régulière.

Les scripts powershell que je vais vous présenter sont spécifiques à mon entreprise, à notre infra et aussi à notre besoin mais ils vous permettront, d’avoir une bonne base s’il s’avère que vous puissiez être amené à utiliser powershell pour gérer WSUS; ce que je vous conseille fortement pour avoir toute la souplesse que l’on va découvrir ensemble par la suite.

Je vais vous montrer:

  • comment lancer une synchronisation WSUS, récupérer les informations de synchronisation et les injecter dans une page web ou dans un fichier excel
  • comment récupérer la liste des mises à jours et les indicateurs du Tuesday Patch
  • comment approuver des mises à jours pour des groupes WSUS spécifiques
  • comment exporter le résultat de vos filtres dans un fichier au format CSV
  • comment envoyer des mails avec contenu au format HTM

Dans un premier temps, je voulais vous préciser pourquoi je ne me suis pas servi de la fonction « Règle d’approbation automatique » que l’on retrouve dans la console de gestion WSUS pour approuver les patch Microsoft. Puisque tous mes scripts parte de ce qui va suivre, j’aurai finalement plus appeler cet article « Règles d’Approbation automatique versus Powershell approbation ».

La raison est double,

  • d’une part, lorsque vous synchronisez votre serveur WSUS à Windows update, vous récupérer une liste de nouvelles mises à jours. Si la règle d’approbation automatique que vous avez créée « match » avec l’une des nouvelles mises à jours récupérées, alors celle ci sera automatique approuvée une fois la synchronisation terminée et donc mis à disposition des serveurs impactés par la Règle d’approbation automatique.

Cela me dérange dans le sens où je souhaite pouvoir synchroniser mon WSUS à Windows Update sans forcément lancer une processus d’approbation dans la foulé. En effet je souhaite décider quand approuver les patch et donc leur téléchargement.

  • D’autre part, si vous avez une infra WSUS multi serveurs comme la notre, avec un serveur WSUS parent et un ou plusieurs serveurs WSUS enfants, vous devez déjà savoir que les informations des serveur WSUS enfants seront à jour coté WSUS parent uniquement après synchronisation de deux parties.

En effet si vous ne synchronisez par souvent, vous verrez régulièrement un décalage entre le WSUS parent et le WSUS enfant. Par exemple des clients wsus absents, des groupes non présents, des dates de dernier rapport fausses etc…un peu à la manière de la console SCVMM et des host Hyper-V, si vous n’actualisez pas les hosts\machines virtuelles régulièrement pas votre console n’est pas à jour!

L’idéal est donc de tout gérer à partir du serveur parent, d’utiliser une seule console WSUS.

Venons en maintenant au premier script celui qui va lancer la synchronisation de notre WSUS

#récupération des informations WSUS via la commande Get-Wsusserver puis lancement de la synchro avec « StartSynchronization() »

(Get-WsusServer).GetSubscription().StartSynchronization()

# on créée une Variable qui va récupérer la date du jour au format français

$startTime = (get-date -f dd-MM-yyyy)

#on force l’encoding en UTF8 pour gérer les accents dans le mail

$encoding=[System.Text.Encoding]::UTF8

# envoi d’un e-mail avec send-mailmessage

Send-MailMessage -From "wsus@masociete.fr" -To "equipe.microsoft@masociete.fr" -Subject "WSUS - Synchro hebdo lancée $startTime" -SmtpServer "mail.masociete.fr" -Body "WSUS - Synchronisation hebdo lancée" -Encoding $encoding

Ce petit script permet sans avoir à se connecter nulle part, d’être avertit que la synchronisation a été lancé. Pour notre part, nous synchronisons deux fois par semaine WSUS. Le mardi et le vendredi. Le mardi soir permet de récupérer les KB du Tuesday Patch Microsoft (2eme mardi du mois) le plus tôt possible et le vendredi afin d’avoir au moins deux synchronisation par semaine avec les WSUS Downstream.

Regardons maintenant via un second script comment récupérer les informations de synchronisation.
J’entends par là le nombre de nouvelles mises à jours, celles révisées et celles expirées également.

# On récupère dans la variable $Lastsync les informations de la dernières synchronisation WSUS

$lastSync = (Get-WsusServer).GetSubscription().GetLastSynchronizationInfo()

# On va définir un scope afin de récupérer uniquement les mises à jours de cette synchro

$UpdateScope = New-Object -TypeName Microsoft.UpdateServices.Administration.UpdateScope

# Définir un créneau horaire afin de récupérer uniquement les mises à jours de la dernière synchronisation avec une date de début et une date de fin

$UpdateScope.FromArrivalDate = $lastSync.StartTime
$UpdateScope.ToArrivalDate = $lastSync.EndTime

# On récupère cette liste de KB en fonction de l’UpdateScope que l’on vient de configurer.

$SyncUpdates = (Get-WsusServer).GetUpdates($UpdateScope)

# On récupère depuis la variable $SyncUpdates les nouvelles Mises à jours et on les compte

$published = $SyncUpdates | where {($_.publicationstate -like "Published")}
$published.count

# On récupère depuis cette liste les Mises à jours révisées et on les compte

$revised = $SyncUpdates | where {($_.publicationstate -like "revised")}
$revised.count

# On récupère depuis cette liste les Mises à jours expirées et on les compte

$expired = $SyncUpdates | where {($_.publicationstate -like "expired")}
$expired.count

# On récupère la liste de tous les clients WSUS rattachés à nos WSUS (serveurs Wsus parent et enfants grâce à IncludeDownstreamComputerTargets) et on fait le compte

$wsus = Get-WsusServer
$computers = $wsus | Get-WsusComputer -IncludeDownstreamComputerTargets
$computers.count

Pour l’envoi de nos mails nous utilisons en body un fichier HTM. Cette base de format nous permet de réaliser des ajouts à chaud ou simplement d’écrire des choses en dure et de le laisser static.
Le rendu est agréable à visionner (enfin je trouve ^^)

J’ai du coup un fichier HTM par besoin\fonction – Si le fichier HTM est temporaire c’est à dire avec des données que j’injecte seulement à l’instant T comme c’est le cas dans notre exemple je pars d’un Template que je copie, que je complète, que j’envoie puis que je supprime.

# Copie du fichier HTM Temporaire

xcopy /s "C:\Scripts\HTM\IndicateurWSUS\TEMPLATE\*.*" "C:\Scripts\HTM\IndicateurWSUS\"

# Une fois le fichier copié, on déclare le chemin correspondant à notre fichier temporaire.

$Filehtm = "C:\Scripts\HTM\IndicateurWSUS\WSUS.htm"

# On récupère via get-content le contenu du HTM et on y injecte les données des variables précédemment récupérées. L’ajout de donnée se fait vers des numéros de lignes biens spécifique que l’on a préparée en amont.

$fileContent = Get-Content $Filehtm
$fileContent[966] += $computers.count
$fileContent[979] += $published.count
$fileContent[993] += $revised.count
$fileContent[1008] += $expired.count
$fileContent[1023] += $update.count
$fileContent | Set-Content $filehtm

# Une fois notre fichier HTM « mis à jour » avec les données qui vont biens on configure le body du mail comme étant le contenu du fichier HTM.

$body = Get-Content -Path $filehtm | Out-String

# on se positionne en encoding UTF8 afin de gérer les accents que ce soit dans le Subject ou le Body du mail que l’on va envoyer.

$encoding=[System.Text.Encoding]::UTF8

# On positionne la date dans une variable avec le format qui nous intéresse

$startTime = (get-date -f dd-MM-yyyy)

# Envoi du mail via send-mailmessage, l’option -bodyashtml permet d’indiquer que l’envoi de mail utilise un body en mode HTML afin qu’il puisse être correctement interprété

Send-MailMessage -From "wsus@societe.fr" -To "equipe.microsoft@societe.fr","m.jouan@societe.fr" -Subject "Indicateur WSUS - Etat Synchro du Tuesday Patch datant du $startTime" -SmtpServer "mail.masociete.fr" -Encoding $encoding -Body $body -bodyashtml

# On peut exécuter une pause de 5s si besoin via la commande ping.

ping -n 5 127.0.0.1

# Comme expliqué un peu plus haut on supprime le fichier HTM qui a été généré à partir du template

rm "C:\Scripts\HTM\IndicateurWSUS\WSUS_fichiers\" -r -force
rm "C:\Scripts\HTM\IndicateurWSUS\WSUS.htm"

Comment trouvez vous le résultat ? J’ai masqué nos photos mais je vous assure que ce système de communication est appréciable en plus d’être assez simple à prendre en main

Nous pourrions nous arrêter là mais j’ai eu envie d’aller plus loin :), nous allons maintenant pousser ces indicateurs dans un fichier excel
Mais qui dit fichier Excel dit arborescence Windows, la notre ressemble à beaucoup d’autres: « \\Production\Qualité\2018\Indicateurs-2018-02.xls », vous l’aurez compris il va donc falloir jouer avec les mois et les années.
Nous utilisons un seul et même fichier mensuel pour l’ensemble des indicateurs de la société, WSUS on a donc sa propre feuille Excel nommée « WSUS »

Avant de pouvoir remplir mensuellement mon Excel de façon automatisé, j’ai d’abord fait en sorte de gérer le mois et l’année que ce soit dans le path comme dans le nom du fichier lui-même.

# Je déclare donc plusieurs variables afin de récupérer ces deux valeurs

$startTime = get-date
$startTime.Year
$startTime.Month

# Je continue dans la déclaration de variable afin d’être sur ce qu’on appelle du long terme…

if($startTime.Year -like '2018'){$year='2018'}
if($startTime.Year -like '2019'){$year='2019'}
if($startTime.Year -like '2020'){$year='2020'}
if($startTime.Year -like '2021'){$year='2021'}
if($startTime.Year -like '2022'){$year='2022'}
if($startTime.Year -like '2023'){$year='2023'}
if($startTime.Year -like '2024'){$year='2024'}
if($startTime.Year -like '2025'){$year='2025'}
if($startTime.Year -like '2026'){$year='2026'}
if($startTime.Year -like '2027'){$year='2027'}
if($startTime.Year -like '2028'){$year='2028'}
if($startTime.Year -like '2029'){$year='2029'}
if($startTime.Year -like '2030'){$year='2030'}

if($startTime.Month -like '1'){$month='01'}
if($startTime.Month -like '2'){$month='02'}
if($startTime.Month -like '3'){$month='03'}
if($startTime.Month -like '4'){$month='04'}
if($startTime.Month -like '5'){$month='05'}
if($startTime.Month -like '6'){$month='06'}
if($startTime.Month -like '7'){$month='07'}
if($startTime.Month -like '8'){$month='08'}
if($startTime.Month -like '9'){$month='09'}
if($startTime.Month -like '10'){$month='10'}
if($startTime.Month -like '11'){$month='11'}
if($startTime.Month -like '12'){$month='12'}

# Je peux maintenant déclarer mon chemin correspondant au mois et à l’année en cours

$path = "\\Production\Qualité\$year\tdb_"+$year+"_"+$month+".xls"

# Je vérifie via test-path si le fichier excel que je veux remplir existe, si ce n’est pas le cas je viens copier celui du mois précédent.

if (Test-Path $path){} else {
$monthlessnew = $month - 1
$monthlessnew = "{0:D2}" -f $monthlessnew
$pathless = "\\Production\Qualité\$year\tdb_"+$year+"_"+$monthlessnew+".xls"
copy $pathless $path
}

# On récupère la valeur qui vérifie si le fichier Excel est verrouillé ou accessible (true ou False)

$FILE = try { [IO.File]::OpenWrite($path).close();$true }catch {$false}

# Si inaccessible car déjà ouvert, on envoi un mail pour informer que les indicateurs n’ont pu être ajouté automatiquement, sinon on les ajoute au fichier excel

if ($FILE -like "False"){

# J'ai créée un fichier txt avec le chiffre indiquant le numéro de la colonne sur laquelle je vais compléter mes cellules
# Je vous rappelle avoir souhaité tout automatiser, c'était auparavant fait manuellement, je sais cependant aujourd'hui que les indicateurs du mois en cours 02/2017 devront arriver dans la colonne 27
# Avec Excel pour cibler la bonne colonne vous devez retirer 1, dans mon cas je dois donc utiliser 26. Si vous avez bien suivi c'est pourtant la colonne Excel qui à ce jour est déjà complétée et comporte les valeurs du mois de Janvier 2018.
# Je récupère donc la valeur actuelle de mon fichier txt qui est "26"
# Nous nous situons dans la partie du script où le fichier excel est actuellement verrouillé, j’envoie donc simplement un mail pour signaler le blocage et j'incrémente également mon numéro de colonne pour l'exécution de ce script le mois prochain

$colonn = get-content C:\Scripts\colonne.txt
$colonne = [int]$colonn + 1
$colonne > C:\Scripts\colonne.txt
$startTime = (get-date -f MM/yy)

Send-MailMessage -From "wsus@masociete.fr" -To "equipe.microsoft@masociete.fr","m.jouan@masociete.fr" -Subject "Indicateur WSUS - Fichier Excel verrouillé - $startTime" -SmtpServer "mail.masociete.fr" -Encoding $encoding -bodyashtml

} else {

# On est dans la section ou le fichier excel est accessible
# Je peux configurer mes variables qui vont me permettre d'ouvrir mon fichier Excel en indiquant bien via WorkSheets.item la feuille Excel sur laquelle je souhaite travailler.
$xl=New-Object -ComObject Excel.Application
$wb=$xl.WorkBooks.Open($path)
$ws=$wb.WorkSheets.item("Wsus")
$xl.Visible=$true

$startTime = (get-date -f MM/yy)

# on Récupère la valeur de la colonne à traiter
$colonn = get-content C:\Scripts\colonne.txt

# Je peux maintenant positionner les valeurs dans les cellules correspondantes à la bonne colonne.
$ws.Cells.Item(2,$colonn)=$startTime
$ws.Cells.Item(3,$colonn)=$computers.count
$ws.Cells.Item(4,$colonn)=$published.count
$ws.Cells.Item(5,$colonn)=$revised.count
$ws.Cells.Item(6,$colonn)=$expired.count
$ws.Cells.Item(7,$colonn)=$update.count

# J'ajoute maintenant '1' à la valeur précédente qui était "26"
$colonne = [int]$colonn + 1
# Je viens ensuite réinjecter cette nouvelle valeur dans mon fichier d'origine afin que l’exécution du script le mois prochain utilise la colonne suivante
$colonne > C:\Scripts\colonne.txt

# Nous reste plus qu'à sauvegarder nos modifications puis à quitter.
$wb.Save()
$wb.close()
$xl.Quit()

# On termine en indiquant par mail que le fichier excel a bien été complété

Send-MailMessage -From "wsus@societe.fr" -To "equipe.microsoft@societe.fr","m.jouan@societe.fr" -Subject "Indicateur WSUS - Fichier Excel complété - $startTime" -SmtpServer "mail.masociete.fr" -Encoding $encoding -bodyashtml

Avec cette méthode, les indicateurs WSUS mensuel sont automatiquement complétés dans le fichier Excel.

Voyons maintenant comment approuver ces kb récupérées juste avant part la synchronisation du Tuesday Patch! Celle du 2ème mardi du mois.

# on récupère les info du serveur, le script s'exécutant localement, pas besoin de préciser le nom, le port, si ssl.
$wsus = Get-WsusServer
# on récupère la date du jour
$startTime = (get-date -f MM-dd-yyyy)
# A laquelle on va retirer environ 25 jours, l'idée étant de ratisser large, c'est à dire récupérer l'ensemble des patch des différentes synchro entre ce Tuesday Patch et celui du mois précédent.
$startTime2 = (get-date).AddDays(-25).ToString("MM-dd-yyyy")

# dans la variable $update on récupère toutes les mises à jour de sécurité de tous les produits datant au maximum de plus de 25j, nous excluons également certaines KB via l'option "$_.Title -notlike"
$update = $wsus.GetUpdates() | where {((($_.UpdateClassificationTitle -like "Mises à jour de définitions") -and ($_.ProductTitles -like "windows defender")) -or (($_.UpdateClassificationTitle -like "Mise à jour de la sécurité") -and ($_.ProductTitles -like "*"))) -and ($_.CreationDate -gt $startTime2) -and ($_.IsDeclined -ne "True") -and (($_.Title -notlike "*4056892*") -and ($_.Title -notlike "*4056891*") -and ($_.Title -notlike "*4056890*") -and ($_.Title -notlike "*4056888*") -and ($_.Title -notlike "*4056893*") -and ($_.Title -notlike "*4056898*") -and ($_.Title -notlike "*4056897*") -and ($_.Title -notlike "*4056899*"))}

# On récupère l'identifiant des groupes que l'on souhaite traiter "Serveurs PREPROD" et "Serveurs Recette"
$group = $wsus.GetComputerTargetGroups() | where {($_.Name -like '*Serveurs PREPROD*' -or $_.Name -like '*Serveurs Recette*')}

# On approuve pour ces groupes l'installation de toutes les KB récupérées précédemment
foreach ($Member in $group) {
foreach ($Approval in $update) {
  $Approval[0].Approve(“Install”,$Member)}
   }

# Déclaration de deux chemins au format .csv qui viendront accueillir la liste des serveurs membres des groupes pour l'un et la liste des KB pour l'autre.
$file1 = "\\Fileshare\WSUS-Preprod-Recette-$startTime.csv"
$file2 = "\\FileShare\WSUSKB-Preprod-Recette-$startTime.csv"

# On pousse dans $file1 les serveurs impactés, 
[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | out-null
$computerScope = new-object Microsoft.UpdateServices.Administration.ComputerTargetScope;
$computerScope.IncludeDownstreamComputerTargets = $true
$wsus.GetComputerTargets($computerScope) | Where-Object {($_.RequestedTargetGroupName -like "*Serveur PREPROD*" -or $_.RequestedTargetGroupName -like '*Serveurs Recette*')} | select FullDomainName,LastReportedStatusTime,RequestedTargetGroupName | Sort-Object -Property RequestedTargetGroupName | Export-Csv -Path $file1 -Delimiter ";" -append


# On export ensuite la liste des KB approuvées dans $file2
$update | select Title,UpdateClassificationTitle,ProductTitles,LegacyName,CreationDate,ArrivalDate | Out-File $file2 -append -Width 300

# On peut maintenant préparer le mail à envoyer, on déclare un fichier HTM comme vu précédemment, celui est en revanche simplement statique.
$file3 = "C:\Scripts\HTM\ApprobationQual\WSUS.htm"

# On déclare ce fichier HTM en tant que Body du mail
$body = Get-Content -Path $file3 | Out-String

# On modifie l'encoding afin de gérer correctement les accents
$encoding=[System.Text.Encoding]::UTF8

# Puis envoi du mail avec les deux pièces jointes
Send-MailMessage -From "wsus@ma-societe.fr" -To "equipe.microsoft@ma-societe.fr" -Subject "WSUS - Mise à jour Microsoft sur environnement PRE PROD ET Recette - fait le $startTime" -SmtpServer "mail.ma-societe.fr" -Encoding $encoding -Body $body -bodyashtml -Attachments "$file1","$file2"

A travers ces quelques explications et lignes de scripts, je vous invite fortement à utiliser powershell pour préparer\gérer votre serveurs WSUS.
Alors oui, cela nous a pris un temps certain mais le résultat est plus que convainquant aujourd’hui.

Je réaliserai un nouvel article sur WSUS mais cette fois autour du reporting, cela vous permettra facilement de savoir quels serveurs:
– est en attente de redémarrage
– est en erreur suite à l’installation de mise à jours
– n’a pas contacté son serveur WSUS depuis plusieurs jours

Je vous montrerai également comment profiter de la puissance SQL et des Vues existantes.

Maxime

Publicités

Automatisation de l’ Ajout\Suppression des comptes locaux – Script Powershell

Bonjour,

pour des besoins métier, nous avons du élaborer un script powershell nous permettant le maintien à jour des comptes locaux de plusieurs serveurs.
ce script est poussé toutes les 30min par un agent puppet installé sur nos centaines de serveur.

Ses fonctions:

– Création d’un groupe qui sera membre du groupe administrateur
– Ajout de compte et ajout au groupe précédemment créée.
– Suppression automatique de compte en cas de départ de la société
– Suppression automatique de compte si l’ajout n’a pas été fait via le fichier CSV
– N’empêche pas l’utilisateur déjà présent de changer de mot de passe.

Le script utilise un fichier csv pour récupérer la liste à jour des utilisateurs.


# Déclaration groupe admin local
$group = "Administrateurs"
$group2 = "Administrators"
$group3 = "Admins-Astreinte"

# Création du groupe Admins-Astreinte
net localgroup $group3 /add /comment:"Groupe Administrateurs Astreinte - ne pas ajouter manuellement d'utilisateur risque fort de suppression automatique via Puppet"

# Ajout du groupe Admins-Astreinte au groupe administrateur\administrator peut importe la langue installée.

net localgroup $group /add $group3
net localgroup $group2 /add $group3

# déclaration date
$date = (get-date).ToString("dd-MM-yyyy")

# récupération du nom du serveur
$adsi = [ADSI]"WinNT://$env:COMPUTERNAME"

# récupération du contenu de la liste à jour des utilisateurs
$userfile = get-content "C:\Liste-a-jours.csv"

# récupération liste utilisateur actuellement présent dans le groupe
$Astreintemembers = NET LOCALGROUP $group3

# pour tous les membres actuels du groupe Admins-Astreinte
foreach ($user in $Astreintemembers){
if (!$user){}
else{
# S'il est également présent dans le fichier CSV alors on ne fait rien, sinon il est supprimé
if ($userfile | select-string -pattern $user){
}
else {
NET USER $User /delete
# J'incrémente également un fichier afin de pouvoir historiser les suppressions si besoin de comprendre ce qui s'est passé.
$del = (-join ($user," - ",$date))
$del >> c:\Suppression-groupe-Astreinte.txt
}}}

# On s'occupe ensuite des nouveaux arrivants
foreach ($user in $userfile){
# On vérifie si l'utilisateur existe localement
$existing = $adsi.Children | where {$_.SchemaClassName -eq 'user' -and $_.Name -eq $user}
# Si inexistant alors création du mot de passe et création du compte
if ($existing -eq $null) {
$year="2018"
$Pass = (-join ("*!",$env:COMPUTERNAME,$user,$year,"*!"))
$SecurePassword = $Pass | ConvertTo-SecureString -AsPlainText -Force

    Write-Host "Creation d'un nouvel utilisateur."
    & NET USER $user $SecurePassword /add /y /FULLNAME:$user /comment:"Utilisateur Astreinte"
    WMIC USERACCOUNT $user SET PasswordExpires=FALSE

    Write-Host "Ajout du compte $user au groupe $group3."
    & NET LOCALGROUP $group3 $user /add
   
        }
else {}
}

En espérant que ce petit script ou en tout cas une partie de celui ci puisse vous aider\aiguiller lors d’un besoin similaire!

Maxime

RDS 2008R2\2012R2 – PowerShell Script de Maintenance.

Bonjour,

rapidement je vous mets à disposition un petit script Powershell qui nous a permis d’automatiser les reboots des serveurs RDS2008R2 d’un client en pleine journée de production.
En effet celui ci rencontre des problèmes d’ouverture de session parfois dans la journée, plus personne ne peut se connecter sur l’un des serveurs de la ferme, avec des chargements de bureau Windows interminable. De plus si le broker décide que c’est ce serveur qui a le moins de session alors il continuera d’envoyer toutes nouvelles ouverture de session dessus.

Nous avons constaté que lorsque ce phénomène ce produit, plusieurs Event ID, le 6004 6005 et 6006 remplissaient le journal d’application.

Pour pallier à cela, une tâche planifiée se déclenche lorsque l’un des Event ID apparait et exécute un script PowerShell qui est le suivant:

La commande exécutée est la suivante:

powershell.exe -ImportSystemModules C:\Scripts\mon-script.ps1

Ci joint le contenu du script:

# On autorise le système d'exploitation à exécuter ce script
set-executionpolicy -executionpolicy unrestricted -force

# configuration de la variable starttime pour correspondre à l'instant T moins 5min
$ts = New-TimeSpan -Minutes 5
$startTime = (get-date) - $ts

# On récupère le nom du serveur
$name = $env:computername

# configuration de la variable Endtime à l'instant T
$endTime = (get-date)

# récupération des erreurs concernant les problèmes d'ouverture de session sur les 5 dernières minutes
$TSE = Get-EventLog -LogName "Application" -source Wlclntfy -After $startTime -before $endTime | where {$_.eventID -eq 6004 -or $_.eventID -eq 6005 -or $_.eventID -eq 6006}

# Je récupère ici la valeur présente dans le fichier. Elle est sensé être à 1 en cas de problème voir plus bas, cela me permet de ne pas continuer le script si un redémarrage est déjà enclenché.
$file3 = get-content C:\Scripts-CIS\plantage-en-cours.txt

if ($file3 -ieq '1'){}
	else {
                # on va ensuite compter le nombre d'erreur dans ce créneau de 5min via $TSE.count
		if ($TSE.count -gt '10'){
                # si plus grand que 10, alors on met en maintenance le serveur
                # on prévient toutes les sessions ouvertes via la fonction msg
		msg * "Vous êtes actuellement connecté sur $name qui va redémarrer pour maintenance d'ici 20min, merci de bien vouloir fermer votre session. L'équipe informatique."
		cd RDS:
		cd .\RDSConfiguration
		cd .\ConnectionBrokerSettings
                # une fois dans l’arborescence de la configuration RDS, on retire le serveur de la fonction LoadBalancing
		Set-Item .\LoadBalancingState 0
                # et on programme le redémarrage de celui ci
		shutdown /r /t 1200 /c "Ce serveur va redémarrer d'ici 20min pour des raisons de maintenance"
                # De cette façon, le problème d'ouverture de session est détecté tôt, le serveur redémarré au bout de 20min laissant le temps aux utilisateurs de fermer leur session.
                # J'en profite pour incrémenter un fichier afin de vérifier après plusieurs jour\semaines combien de fois il s'est auto redémarré.
		$file = get-content C:\Scripts-CIS\count-plantage.txt
		$file2 = [int]$file + 1
		$file2 > C:\Scripts-CIS\count-plantage.txt
                # Je pousse ensuite la valeur 1 au fichier "plantage-en-cours.txt"
                # Ce qui évitera au script de refaire la procédure si un autre Event ID arrivait entre temps.
		echo 1 > C:\Scripts-CIS\plantage-en-cours.txt
		exit
		}
			else {
                # Si $TSE.count plus petit que 10 je ne sors pas encore le serveur de la ferme RDS
                # J'en profite même pour forcer le Loab Balancing à 1. Cette partie est néanmoins facultative.
			cd RDS:
			cd .\RDSConfiguration
			cd .\ConnectionBrokerSettings
			Set-Item .\LoadBalancingState 1
			exit
}}

Il existe un dernier script powershell a ne surtout pas oublier, qui s’exécute au démarrage du serveur et qui a toute mon attention le voici:

# On remet le compteur plantage-en-cours.txt à zero
echo 0 > C:\Scripts-CIS\plantage-en-cours.txt
# On replace le serveur dans le LoadBalancing de la ferme RDS
cd RDS:
cd .\RDSConfiguration
cd .\ConnectionBrokerSettings
Set-Item .\LoadBalancingState 1
exit

Alors certes, on peut voir cela comme un arrêt de production, mais s’agissant d’une ferme RDS, une réouverture de session par l’utilisateur et celui-ci se reconnecte sur un autre RDS de la ferme.
Ce que j’apprécie est que le client n’a plus à nous appeler en urgence parce que ses utilisateurs n’arrivent plus à se connecter; et mine de rien, la plateforme RDS vie toute seule.

En espérant que vous puissiez vous aider de cela pour une problématique similaire, que sais-je !

ps: je vous rassure, nous nous sommes également penchés sur la réelle cause du problème de chargement de session et il semblerait qu’il existe une ou deux KB (KB2575077 et KB2265716) capables de résoudre ces problèmes, à tester …

Maxime

Passez de VMWare à HyperV ? Est ce un projet finger in the nose ? Part 2

Bonjour à tous,

Voila déjà plusieurs mois depuis mon 1er article sur la migration

Vmware -> Hyper V que vous pouvez retrouver ici. Nous allons essayer de répondre intelligemment à ces quelques questions.

J’ai maintenant un peu plus de corde à mon arc pour vous en parler puisque cette migration (environ 250 machines virtuelles réparties sur plusieurs fermes ESX) est sur le point de se terminer en douceur d’ici fin d’année 2015.

 

  1. Y a t-il un intérêt à changer d’hyperviseur ?
  2. En pratique, est ce faisable ?
  3. A quel prix ? changement de matériel, formation, licence …
  4. Quels problèmes va t’on rencontrer ?
  5. Peut on se passer de SCVMM 2012R2 ?
  6. La gestion de la haute dispo est elle équivalente voir meilleur que sous ESX ?
  7. IDEM pour la live migration – vmotion

 

Y a t-il un intérêt à changer d’hyperviseur ?

Oui ! en tout cas dans notre cas, effectivement nous sommes une équipe de Windowsien et mettre les mains dans le cambouis dans un environnement FULL Microsoft apporte plus de compréhension, de facilité, d’autonomie et de visibilité à l’hyperviseur et l’ensemble des outils qui oscille autour de lui, pour ne pas les citer: la suite System Center 2012R2 avec Virtual Machine Manager, Data Protection Manager, Opération Manager, Orchestrator. La réponse aurait été la même si nous étions Linuxiens avec le souhait de remplacer Hyper-v par la solution VMWare.

Pour le coté financier, je ne peux hélas pas m’étaler, je n’ai pas eu à gérer cette partie, de plus chaque société dispose de ces propres partenariats que ce soit avec Microsoft, Vmware, CISCO et j’en passe, et en fonction, elle pourra avoir des tarifs plus ou moins compétitifs.

En pratique, est ce faisable ?

Oui ! mais non sans difficultés et son lot de surprise\blocage technique, ca prend également du temps, beaucoup de temps en fonction du nombre de VM à déplacer et du nombre de personne en charge de la migration. L’aspect « production » n’est pas à négliger, il est effectivement plus facile de migrer 30 machines virtuelles de qualité de dev de recette que de déplacer 5 vm de production que vous aurez à migrer en HNO avec le stresse d’espérer que tout se passe bien et avec un impact utilisateur proche du zéro absolu.

Sans trop exagérer j’ai le sentiment que chaque vm à ses particularités, son histoire, ses défauts …. voir un peu plus bas dans « Quelle problème va t’on rencontrer? ».

C’est génial de débuter la migration mais il faut également penser à sauvegarder les VM qui arrivent, au fil des migrations, sur l’environnement Hyper V, à les monitorer à nouveau etc .. il faut également prendre son temps et vérifier que le nouveau matériel absorbe bien la charge. Pensez à surveiller les IOPS et les temps de latence de votre SAN.

A quel prix ? changement de matériel, formation, licence …

Dans nos cas, le prix qu’impose l’achat de nouveaux serveurs DELL R630 avec double CPU E5-2667 v3 3.2Ghz, la RAM qui va bien (256Go sur chacun de nos 6 noeuds Hyper V), les switch CISCO dédiés au réseau ISCSI, les nouveaux SAN (NETAPP), il est difficile de prévoir au plus juste mais avec marge le dimensionnement d’une plateforme Hyper V. Faire en sorte que si un serveur crash, les autres tiendrons la charge supplémentaire le temps de le remonter. Une toute petite précision nous sommes effectivement partis sur une connectique de stockage à moindre coût, celle de l’ISCSI mais je ne vais pas plus m’étaler sur les choix d’infrastructure ici.

pour les licences nous utiliserons naturellement des licences Windows 2012R2 DC pour un nombre de VM illimité.

pour la formation, si il n’y a pas de compétence en interne, c’est plus prudent de se faire accompagner ne serait ce que quelques jours par une société externe, aussi bien pour la configuration du cluster Hyper V que pour la partie SAN et l’interconnexion des deux.

Heureusement ce n’était pas mon cas j’ai pu mener à bien ce projet et partager avec mes collègues mes idées, mes craintes, mes solutions de contournement.

Quels problèmes sommes nous susceptible de rencontrer ?

Alors il était difficile de deviner ce qui allait nous tomber dessus même avec un audit poussé. Mais avec le recul c’est tout de suite plus facile de vous en parler, surtout quand c’est encore tout chaud.

Dans un premier temps il y a la question de comment migre t on les données présentes sur un vmdk (vmware) en vhd(x) (hyper V)

Les serveurs ne sont pas les mêmes, les SAN ne communiquent pas entre eux, les technology de virtualisation sont différentes, idem pour les réseaux virtuels.

Il y a heureusement plusieurs options (non exhaustives j’imagine) mais avec ca vous devriez pouvoir vous en sortir.

La première vous passez par System Center Virtual Machine Manager 2012R2, mais là encore ca ne se fera pas à chaud ce qui implique un arrêt de production et c’est long …. très long …. très très très long…. pour avoir un ordre d’idée une douzaine d’heure pour une VM de 50Go. Il faudra également au préalable dégager le vswitch de la vm coté Vmware sans quoi SCVMM ne voudra pas la déplacer même éteinte.

Une fois terminée, la vm ayant été créée dans Hyper V vous n’aurez plus qu’à configurer la partie switch de la vm et reconfigurer l’@IP. Normalement SCVMM récupère l’ensemble des information de configuration, exemple RAM CPU. L’avantage est qu’il y a très peu de manipulation humaine. L’inconvénient étant la lenteur de l’opération.

La deuxième vous récupérez le(s) vmdk depuis le datastore puis vous le(s) convertissez en vhd(x) avec StarWind V2V Image Converter par exemple. La récupération du VMDK est également très lente. De l’ordre de 6-8Mbits/s. J’espère pour vous que si vous utilisez cette méthode vous aurez des meilleurs débits.

Là encore vous devez faire cela OFFLINE mais ca va ceci dit plus vite qu’avec SCVMM, vous aurez cependant besoin de reconfigurer entièrement la VM (vcpu, ram, remapper les vhd, etc ..). Si vous voulez éviter d’avoir à reconfigurer la VM, vous pouvez détacher tous les vmdk de la vm ESX et la migrer « vide » via SCVMM (premiere méthode).

Vous pouvez si la vm et l’application qu’il y a dessus le permettent cloner la vm ESX et ainsi récupérer le vmdk sans toucher à la vm encore en production. C’est possible si le delta entre le clonage -> la copie du clone ->  la conversion puis la création de la vm coté hyper-v peuvent être perdue, exemple un site web (blog ?) sur lequel tout le monde s’accorde à ne plus faire de modification le temps de la maintenance

Si toutes ces opérations vous prenne du temps, attention au redémarrage de la VM, il se peut qu’elle ne soit plus synchroniser avec votre AD. Il faudra alors réinitialiser le compte Ordinateur du serveur dans Active Directory, sortir la VM du domaine et rejoindre celui ci.

Troisième solution et c’est ma préférée, Disk2vhd, un petit utilitaire « efficace » de microsoft qui permet à la suite d’un snapshot de copier la vm vmware à chaud en .vhd sur un lecteur réseaux. Il ne vous reste plus qu’à créer la vm coté hyperV en pointant sur le vhd et ca boot. Quand vous êtes prêt, vous déconnectez le réseaux coté vmware de la vm encore allumée et vous activez le vswitch coté hyper-v. Il faudra en amont reparamétrer l’@IP sur la VM hyper V. Ce type de conversion, même rapide peuvent poser un problème si le delta entre l’opération disk2vhd et la mise à dispo de la vm sous hyper v prend trop de temps au risque de perdre des données, exemple une vm hébergeant une base de donnée.

Si on veut éviter une corruption de base de donnée, il est plus sage d’arrêter certains services avant le snapshot. (exemple SQLSERVER)

C’est également le seul outil à ma connaissance capable de récupérer le contenu d’un RDM. Petit bémol cet outil fonctionne qu’avec une VM source Windows. Pour les linux faudra passer par la solution 1 ou 2 ou 4.

En toute franchise j’ai déplacé 98% des VM Windows avec Disk2VHD.

Quatrième solution que je viens de découvrir post migration ………………….

Microsoft Virtual Machine Converter.  Je vais le tester ces prochains jours et vous faire un retour.

mais il semblerait que cet outil permet la migration à chaud des vm windows et linux selon la version installée. il est également capable de déinstaller les vmware tool et ce de façon entièrement automatisée.

Il permettrait aussi le P2V. Module disparue de VMM2012R2

ci dessous le snapshot réalisé par MVMC

image002

le suite de la migration, à mon grand étonnement, la VM source n’était pas accessible pendant la période de conversion, l’OS source était pourtant un Win 2008R2Sp1

 

image001 (1)

Fin de la migration

image001

ce n’est pas terminé, il faut ensuite configurer le réseaux virtuel de la VM et installer les services d’intégrations. Pour le délais je n’ai pas été bluffé. Encore une fois Disk2VHD est en tête mais la migration n’étant pas une course, ces différentes possibilités de migration peuvent vous attirer.

 

Peu importe de quelle maniere vous allez vous y prendre profitez en pour nettoyer la vm, les TEMP, les LOGS, les user Profils, les SoftwareDistribution directory, etc … ca sera toujours ca de moins à copier, on peut facilement récupérer une dizaine de Go. Ceci étant attention à ne pas abuser du nettoyage, garder en tête que si la migration se passe mal vous serez rassuré de pouvoir redémarrer la vm vmware le cas échéant en l’ayant laissée quasi intacte.

Ci dessous, une liste des problèmes rencontrés:

bon à savoir\retenir également -> https://technet.microsoft.com/en-us/library/dn792027.aspx

  • L’application ne démarre pas correctement, effectivement dans certain cas, les licences sont basées sur les @mac des serveurs! il vous suffira de reporter l’@mac de la vm ESX à celle d’HyperV.
  • Version windows non supportée (cf lien du dessus) -> impossible d’installer les services d’intégration, pas de réseau, pas de souris -> Service Pack à installer soit sur la VM déplacée via un ISO soit sur la source mais opération de migration à refaire et impact prod.
  • Version linux non supportée -> pour que la vm dispose d’une connection on va devoir passer un « legacy network », pas le choix -> baisse des performances réseaux. Je ne suis pas capable de juger de la baisse de perf, si elle existe vraiment et encore moins sa valeur en %. j’ai meme vue des VM linux refusant de booter tant que je n’avais pas retiré la carte réseau ou mis une carte virtuelle de type « Legacy network »
  • Perte du mdp admin local windows -> impossible d’installer les services d’intégration, refaire la migration en modifiant le mdp sur la VM source. C’est tout bête mais ca m’est arrivé … en effet vous avez beau vous etre logé en domain admin sur la vm avant la migration, je me suis vue refuser l’installation des services d’intégration et donc pas de détection de carte réseaux
  • internal error lors de l’installation des services d’intégration sur un win2008Sp2 par exemple. solution qui a fonctionné pour moi -> https://srvcore.wordpress.com/2010/05/28/integration-components-setup-error-an-error-has-occurred-internal-error/
  • Dans le même genre perte du mdp root linux -> impossible de paramétrer l’@IP de la nouvelle interface détectée.
  • Plus brutal, le fatal kernel error au boot d’une VM linux. Vous partez pour des heures de recherches sur google.
  • Os linux trop vieux -> le linux commence a charger puis s’arrête il ne trouve pas ses disk de démarrage car il est passé de sda à hda, rescue linux à faire, gparted dans certain cas, etc …. au secours !
  • Avec Vmm j’en ai également vu de toutes les couleurs j’ai du migrer 5 vm avec SCVMM puis les 100 autres avec la solution 2 ou 3 car il y a trop souvent quelque chose qui lui pose problème. C’est d’ailleurs hallucinant que Microsoft (outre MVMC et Disk2VHD) n’est pas facilité ce genre de migration. Et quel intérêt d’enlever le module P2V de SCVMM2012R2 ? ca fait tout de même râler.
  • la question des RDM (disks pass through coté Microsoft). Nous avons opter pour ne plus nous en servir et déplacer les data sur un vhd. Ce type de connectique n’a quasi plus aucun intérêt de nos jours. (hormis décharger le CPU car on ne passe pas par le system NTFS du parent). Encore une fois pour une VM windows ce n’est pas compliqué on se fait un robocopy /syncall /sec, coté linux, rsync vous aidera mais c’est tout de même moins évident avec les points de montage le fstab et j’en passe.
  • Quid des vmware tools ? Pour être franc je ne les ai pas retiré des machines virtuelles puisque je voulais modifier le moins possible les VM sources. Il faut maintenant prendre le temps de les retirer proprement …  si c’est faisable. Ca n’a pas l’air simple.

Peut on se passer de SCVMM 2012R2 ?

NON et OUI, non car vous devez obligatoirement passer par là pour la création de vos « logical switch » que vous viendrez ensuite distribuer à vos hotes Hyper V.

Vous passerez également par là pour la création de vos TEAMING dédiés au flux de vos machines virtuelles.

Vous devrez passer par là pour la migration de VM inter Cluster Hyper V et pour l’utilisation de template.

Vous devrez passer par là pour supprimer proprement une machine virtuelle. sans quoi il restera les dossiers vide de la VM voir pire le VHD.

si vous avez un abonnement avec des VM dans AZURE vous devrez également utiliser VMM pour les voir et les administrer.

en dehors de ca (je vais pas tout lister !) vous pouvez vous en passer.

Effectivement l’utilisation de l’hyper v manager et/ou la console de cluster management jouent également assez bien leur rôle. On peut pour ainsi dire tout faire à partir de là. Si je ne m’abuse certaines fonctionnalités telles que le status des repli sont beaucoup plus lisible via hyperV manager .

lorsqu’on travaille sous VMM on se rend vite compte qu’on est obligé de régulièrement mettre à jour le cluster les hosts et les vm sans quoi on a pas le vrai status à l’instant T, c’est très vite fatigant.

pour finir sur cette question, VMM reste l’outil qui permet d’avoir une vision globale de son infrastructure de virtualisation (ESX Vcenter et Hyper v + Azure dans la même console)

La gestion de la haute dispo est elle équivalente voir meilleur que sous ESX ?

je n’ai pas assez d’expérience pour juger Vmware à ce sujet.

je vais donc juger Microsoft uniquement. Nous avons eu beau plantage récemment.

sur notre cluster de production à deux nœuds, l’un des nœuds a redémarré violemment. Toutes les VM qui étaient hébergées sur ce dernier se sont mises à redémarrer sur le noeud encore actif jusqu’au moment où certaines VM n’ont pas pu démarrer faute de mémoire libre  🙂

bien dimensionner son infra c’est la clé du succès !

tout ca pour dire qu’on a beau tester\recetter son infra, y a que lorsque ca plante en pleine production qu’on voit si ca tient la route; et ce fut le cas. Alors certes on a eu une perte de la production, mais notre PCA a joué son role. Pour le manque de mémoire nous étions au courant ce qui nous a permis de rapidement éteindre les VM non critique afin de libérer quelques Go. Nous allons régler ce problème par l’ajout de deux nouveaux serveurs à notre cluster de production.

et c »est aussi dans ce genre de cas qu’on peut justifier que le budget alloué à l’infra n’était pas insensé. Quand on met tout ces œufs dans même panier à un moment donné il faut de la redondance partout sinon à quoi bon..

Gestion de la live migration – vmotion ?

je n’ai rien à dire sur la partie VMware, ca répondait vite et ca « faisait le job ». RAS

Idem pour la partie live migration de Microsoft, pas de mauvaise surprise, aucune perte de ping, l’utilisation de la bande passante est optimale. Attention tout de même lorsque vous déplacer plusieurs VM d’un seul coup, si l’une d’elle est arrêtée, vous allez lancer une quick migration de vos VM et non une Live migration … pas tout à fait pareil !

dans les best pratice de microsoft, il est préconisé un réseau dédié pour ce flux. J’ai toujours aimé séparer les flux que ce soit le heartbeat, les flux SAN, les flux d’admin, les flux de live migration, les flux de sauvegarde pourquoi pas ?

ceci dit, et cela m’a été imposé, pour nos serveurs sur les 8 ports ethernet Gigabits nous avons opté pour ceci:

un teaming de 3 ports pour l’admin, le heartbeat et la live migration

un teaming de 3 port en mode trunk pour le virtual switch des VM

2 ports ISCSI, avec chacun leur sous réseaux et MTU 9000.

ci joint un petit schéma ( merci à Swan pour sa maitrise de Visio :p )

HypV-Netapp

me voilà arrivé à la fin de cet article

en espérant qu’il vous a plu et qu’il pourra vous servir si un jour

vous partez en croisade VmWare -> Hyper V

Maxime

 

petite mise à jour de l’article

Les étapes d’une bonne migration

Ci joint la liste des tâches à réaliser lorsqu’on veut migrer une VM ESX vers Hyper V via Disk2VHD. J’espère que ca vous permettra de ne rien oublier

  • Communication aux utilisateurs et chef de projet J-1 Migration
  • Communication aux utilisateurs  et chef de projet jour J de la Migration
  • Créer le répertoire de la VM sur un LUN de votre cluster Hyper V
  • Préparer la VM – Audit du nombre de lecteur, leur lettre leur taille, le nombre de vcpu le nombre de RAM et la ou les IP, Audit applicatif, se renseigner si la licence applicatif est basée sur une @Mac par exemple, auquel cas pensez à la repositionner sur la vm Hyper-V
  • Nettoyer c:\temp + C:\Windows\SoftwareDistribution (arrêt windows update service avant) + C:\Windows\temp + C:\Users obsolète
  • Positionner le répertoire disk2vhd dans c:\temp
  • Vérifier qu’il y a un espace libre convenable sur le lecteur C:\ pour que disk2vhd puisse effectuer son snapshot
  • Arrêter les services applicatifs de la VM avant de lancer le disk2VHD exemple SQL Service
  • Une fois le Disk2VHD terminé, on a le ou les VHD dans le répertoire sur le LUN, on peut créer la VM à partir d’HYPER-V MANAGER en attachant les vhd et en positionnant la RAM, ajouter la carte réseaux sans la connecter, cette étape sera réalisée via VMM uniquement
  • Retourner dans la configuration de la VM et ajuster le nombre de VCPU
  • Vérification : Démarrer la VM et vérifier qu’elle boot et qu’elle retrouve ces lecteurs. il est possible qu’il y est une première demande de reboot
  • Installer les services d’intégration Hyper V, il faut redémarrer encore une fois la VM la plupart du temps.
  • Au redémarrage, positionnez l’@IP récupérer dans l’ancienne VM et l’@mac si besoin de la conserver
  • Via la console Cluster Manager, ajouter la VM au cluster en faisant clic droit sur roles -> Configurer role -> Next -> Virtual machine -> votre VM fraichement créée puis Next Next et Next
  • Une fois la VM Hyper V complètement prête, on va pouvoir couper le réseaux de la VM ESX, exécutez un ping -t vers l’ip de la vm
  • Allez sur VCenter, dans les paramètre de la VM ESX, décoché Connected sur l’interface réseaux pour qu’on commence à perde le ping vers la VM que l’on migre
  • Dès qu’on perd le ping, allez sur la console VMM, positionnez vous sur la conf de la nouvelle VM HYPER-V et connectez votre interface au réseau (je ne rentrerai pas dans le détail des VLAN) puis OK, la machine virtuelle va s’actualiser, si la conf IP et Gateway sont bonnes, le ping devra revenir positif, à partir de là, redémarrer la VM encore une fois
  • Vérifier que l’applicatif répond bien au redémarrage
  • Vérifier sur votre outil de monitoring que les services sont UP
  • Dans la VM Hyper V, désactiver le service Vmware tool, il est préférable de déinstaller les VMware tool avant mais moins pratique en cas de retour arrière d’urgence.
  • Concrètement la migration est terminée, il reste des tâches de fond
  • Communiquer pour cloturer l’opération
  • Eteindre la VM ESX qui n’est plus accessible
  • Si retour OK des utilisateurs le lendemain de l’opération, ajouter la VM Hyper V à votre outil de sauvegarde
  • Si retour OK Global le sur lendemain renommer la VM ESX en « NomdelaVM-MIGRE HV »
  • A J+7 de la migration – faire un remove from inventory de la VM ESX migrée
Cette liste de tâche je m’en suis servis pour migrer plus de 300VM en quelques mois. C’est concluant.

 

Mise en place d’une solution de Reverse Proxy avec le module ARR de IIS

A quoi peut bien servir un reverse proxy (RP) ?

Comme à mon habitude, je vous renvoi vers une définition déjà complète présente sur internet

http://fr.wikipedia.org/wiki/Reverse_proxy

Grosso modo, pour ceux qui ne souhaiterai pas aller lire ;p il s’agit d’un élément physique ou logiciel, qui se positionne en amont des frontaux web et les protège ainsi des attaques extérieures.

Un RP représente également un seul point d’entrée des flux en provenance du web et à destination des serveurs web. Qui dit un seul point d’entrée dit réduction du nombre des @IP publique.

Nous pouvons également l’utiliser pour faire de la répartition de charge

Etc..

Dans mon cas précis, la société utilise sharepoint server 2010 comme outil collaboratif et les utilisateurs y accèdent via cette URL ->  http://sharepoint

L’idée est de rendre cet intranet accessible également depuis l’extérieur. (Attention, je ne parle pas d’extranet …)

 

Pour parvenir à notre objectif nous avons plusieurs possibilités telles que:

choix 1) Mettre en place une redirection de port sur notre FW internet. port dest TCP 80 vers port destination TCP 80 à destination du serveur sharepoint.

choix 2) Faire la même chose mais en HTTPS port TCP 443

choix 3) Encore plus sécurisant, HTTPS + Reverse Proxy

Vous l’aurez compris nous allons nous intéresser au choix n°3 car:

– le choix 1 n’est pas envisageable car les mots de passe d’authentification circuleraient en clair sur interne

– le choix 2 est plus sécurisant mais expose toujours notre serveur web aux attaques provenant d’internet

Comme je vous l’expliquais plus haut, le RP est le meilleur choix car il va permettre de:

– masquer la véritable @IP de notre serveur

– de faire de la réécriture d’URL

– d’être en frontal et ainsi en cas d’attaque, le serveur web sharepoint ne sera pas impacté, l’accès depuis internet pourrait être down si le RP était amené a tomber mais l’accès en interne fonctionnerait encore.

– de faire de la répartition de charge si tant est qu’il y a plusieurs serveurs web derrière.

Les étapes à suivre:

  1. Choix du Reverse Proxy, ici on prend le module ARR de IIS (Application Request Routing)
  2. Création de la vm ou du serveur et on le positionne en DMZ svp !
  3. Choix du nom de domaine externe exemple sharepoint.masociété.com
  4. Configurer sharepoint pour qu’il réponde aussi bien en https:\\sharepoint qu’en https://sharepoint.masociété.com
  5. Si on veut faire les choses proprement on fait une demande de certificat à une entité externe telle que verisign (avec la liste exhaustive des noms sharepoint à prendre en compte) sinon on peut dans un premier temps commencer par faire une demande à l’autorité de certificat racine de son domaine.
  6. Lier ce certificat au serveur sharepoint mais aussi au RP (exportation du certificat puis importation)
  7. Créer la règle de redirection sur le RP
  8. Faire des tests 🙂 si tout va bien vous ne devriez pas avoir d’alerte de certificat puisqu’en frontal IIS ARR vous présentera le certificat publique
  9. Enjoy your public sharepoint site

vous aurez les screen shot quand j’aurai un peu plus de temps à consacrer à cet article! 🙂

A bientot

Passer de VMWare à HyperV ? est ce un projet finger in the nose ? part 1

Hello à tous,

tout d’abord, je tenais à vous rappeler que malgré le fait que vous soyez des millions voir des centaines de milliard à consulter régulièrement mes articles je continue de poster en français 🙂

Tout ou presque est dans la question. Mais cela soulève en fait d’autres questions avoisinantes telles que:

  1. Y a t-il un intérêt à changer d’hyperviseur ?
  2. En pratique, est ce faisable ?
  3. A quel prix ? changement de matériel, formation, licence …
  4. Quels problèmes va t’on rencontrer ?
  5. Est ce financièrement intéressant court , moyen et long terme ? cela rejoins la question 1
  6. Comment migrer les machines virtuelles sans impacter la production ?
  7. Peut on se passer de SCVMM 2012R2 ?
  8. La gestion de la haute dispo est elle équivalente voir meilleur que sous ESX ?
  9. IDEM pour la live migration – vmotion

je reviendrais compléter ce post au fur et à mesure de mes découvertes !

en attendant je vous laisse sur votre faim :p

Salutation les blogueurs.

Maxime

Il y a parfois de bonnes nouvelles et parfois de moins bonnes ….

L’AFNIC qui sont les mieux placés pour se présenter:

L’AFNIC, (Association Française pour le Nommage Internet en Coopération) est le gestionnaire du registre des noms de domaine pour les zones géographiques suivantes : .fr (France), .re (Ile de la Réunion), .pm (Saint-Pierre et Miquelon), .tf (Terres australes et antarctiques Françaises), .wf (Wallis et Futuna), .yt (Mayotte). Sa mission est d’assurer la continuité de l’espace territorial français sur internet, ainsi que l’accessibilité de ces domaines depuis n’importe quel point de l’internet. Cette mission comprend aussi l’attribution, par l’intermédiaire de bureaux d’enregistrement , des noms de domaine de premier niveau se terminant par l’une des extensions géographiques sous sa responsabilité (par exemple, « ma-societe.fr » ou « mon-nom-de-famille.wf »).

propose dès aujourd’hui 30 nouveaux caractères pour la création des noms de domaine sous sa responsabilité  .fr.re.pm.tf.wf , .yt

il s’agit de ceux-ci!

à, á, â, ã,  ä,  å, æ

ç

è, é,  ê, ë,

ì, í, î, ï,

ò, ó, ô, õ, ö,

ñ,

ù, ú, û, ü,

ý,  ÿ

ß

oe

ce marché sera ouvert à tous uniquement dans 2 mois, pour l’instant seuls les propriétaires des noms de domaines sont prioritaires.

exemple, http://www.microsoft.fr peut acheter www.mìcrosöft.fr, je vous laisse prendre votre calculette et imaginer le nombre de possibilités qui existent ………………….. la gestion des noms de domaine d’une société pourra vite devenir un gouffre financier:

  • tâches supplémentaire pour les dev et les admins ?
  • achat de nouveaux domaines
  • achat de nouveaux certificats de sécurités
  • problèmes juridiques avec les petits malins..

Mais pourquoi  donc réaliser ces achats ?

Tout simplement car si microsoft (gardons cet exemple) ne réalise pas l’achat de ces nouveaux noms de domaine, quelqu’un d’autre, probablement crapuleux pourra le faire dans 2 mois et ainsi monter un site web avec l’url très ressemblante (phishing) http://www.mìcrosoft.fr et je vous laisse ensuite imaginer le pire …récupération des logins/mot de passe, information de carte bleue etc etc..

Alors cette initiative de la part de l’Afnic est elle bonne ? Pas à mon gout.. je vous laisse imaginer les erreurs d’envoie de mail:

« mais non c’est toto@caractère.fr je te dis! »

« ha ok, moi j’avais mis caractere.fr… vieille habitude désolé… »

sans parler de l’investissement financier dont je vous ai déjà touché deux mots plus haut..

Ce sera une réelle « prise de tête »! rien que pour mon dns virtuoze.fr il y a 750 possibilités 🙂 je passerai donc de 8 euros par an à 6000 euros … merci qui ?? merci l’AFNIC.

Et tout ceci dans quel intérêt ? Sommes nous en pénurie de nom de domaine comme pour les @IP en IPV4 ???? Je ne crois pas.. l’AFNIC va s’en mettre plein les fouilles ça c’est certain par contre.

A voir en pratique très prochainement dans tous les cas … de mon côté j’ai avertie ma hiérarchie, j’espère qu’ils auront l’intelligence de regarder ça de très prêt.

Un petit lien de lAfnic qui rappel cette « innovation »

http://www.afnic.fr/medias/documents/afnic-politique-ouverture-idn.pdf

Premier Article sur blog.virtuoze.fr

Bonjour à tous,

ce premier article a pour unique but de vous préciser ce pour quoi ce blog a vu le jour.

Je souhaite vous parler au travers de mon expérience des différents outils et problèmes que j’ai pu rencontrer que ce soit en tant qu’admin sys à l’ESTP de Cachan, en tant qu’Opérateur Sécurité Telecom au sein de GDFSUEZ ou encore Admin sys et réseaux au sein de Numilog.com

;

Principalement orienté Microsoft, je reste curieux et à l’écoute de ce que l’univers Linux peut nous offrir.

Mon blog s’orientera donc vers des outils tels que la suite System Center de Microsoft, Lync Server 2010 , Sharepoint 2010, Windows Serveur 2008R2 et Hyper-V.

Mais j’aurai également l’occasion de vous parler Firewalling, Reverse proxy, loadbalancing ou encore, de la solution de stockage SAN de Dell.

;

Bonne lecture!

Maxime JOUAN

Créez un site Web ou un blog gratuitement sur WordPress.com.

Retour en haut ↑

%d blogueurs aiment cette page :