LES ENTREES / ENREGISTREMENTS DNS NE SE METTENT PAS A JOUR !

Bonjour

J’ai récemment travaillé sur des problèmes DNS (entrées DNS à jour).

DESCRIPTION DU PROBLEME :
Les entrées DNS de type A (Hôte) des stations de travail (en DHCP) et des imprimantes (en DHCP) ne se mettent pas à jour.
A T=0, la station de travail A.MSREPORT.LOCAL a l’IP 192.168.0.100. L’entrée DNS A est créé dans la zone MSREPORT.LOCAL avec comme IP : 192.168.0.100.
A T=1, la station de travail A.MSREPORT.LOCAL a l’IP 192.168.0.101. L’entrée DNS A dans la zone MSREPORT.LOCAL reste sur 192.168.0.100. On a le problème !
Ce problème se pose :
- Cas 1 : si le compte ordinateur Active Directory d’une station de travail Windows est supprimée puis recréée.
- Cas 2 : si on déplace une imprimante / machine non Windows entre VLANS (même serveur DHCP).
- Cas 3 : si on déplace une imprimante / machine non Windows entre deux sites géographiques (changement de serveurs DHCP).
- Cas 4 : si une personne de l’informatique a créé manuellement l’entrée DNS d’une station de travail / imprimante.
- Cas 5 : si on a récemment changé de serveur DHCP (Windows Server).

La configuration est la suivante :
- Annuaire Active Directory (on a le problème avec toutes les versions des contrôleurs de domaine Windows).
- Zones DNS intégrées à l’annuaire. Les mises à jour dynamiques DNS sont activées sur les zones DNS et sont configurées sur « Sécurisées uniquement ».

D’OU VIENT LE PROBLEME ?
Il s’agit tout simplement d’un problème de permissions au niveau de l’entrée DNS !

EXPLICATIONS :
Quand on intègre une zone DNS dans l’annuaire Active Directory, les entrées DNS deviennent des objets (comme les comptes utilisateurs) de type DNSNODE.
Ces objets ont des permissions. Hors pour pouvoir mettre à jour l’adresse IP d’une entrée DNS de type A (type Hôte, nom résolu en IP), il faut avoir le droit « Ecrire » sur l’entrée DNS (l’objet de type DNSNODE).

QUI A LE DROIT DE METTRE A JOUR UNE ENTREE DNS ?
- Quand on crée manuellement une entrée DNS, c’est le compte utilisateur qui a créé l’entrée qui a le droit d’écrire. Il existe une option qui permet d’autoriser tous les utilisateurs authentifiées à mettre à jour l’entrée DNS.
- Pour les machines en DHCP, cela dépend de la configuration du serveur DHCP. Selon le cas, c’est le compte ordinateur du serveur DHCP, le compte ordinateur de la station de travail ou un compte de service qui a le droit de modifier l’entrée DNS.

COMMENT DETERMINER QUI A LE DROIT DE MODIFIER UNE ENTREE DNS ?
Ouvrir la console DNS. Cliquer dans le menu « Affichage » puis sélectionner « Affichage détaillée« .
Quand on double clic sur une entrée DNS, on voit maintenant la date de création de l’enregistrement (si c’est une entrée DNS créée dynamiquement) et l’onglet « Sécurité » (permission sur l’objet).

COMMENT CONFIGURER QUI A LE DROIT DE MODIFIER UNE ENTREE DNS CREES MANUELLEMENT (ENTREE DNS STATIQUE) ?
On a la case « Autoriser tout utilisateur identifié à mettre à jour les enregistrements DNS… » dans la fenêtre de création de l’entrée DNS A. Tous les utilisateurs authentifiées (machines et utilisateurs du domaine peuvent modifier l’entrée DNS).

COMMENT CONFIGURER QUI A LE DROIT DE MODIFIER UNE ENTREE DNS CREE DYNAMIQUEMENT ?
Ouvrir la console DHCP et aller dans les propriétés du serveur DHCP.
Aller dans l’onglet « DNS« .
Si vous sélectionnez, « Mettre à jour les enregistrements PTR et A DNS uniquement si des clients DHCP le demandent » :
- Pour les machines Windows en DHCP : elles créent elles-même l’entrée DNS. C’est donc le compte ordinateur de la machine Windows qui a le droit de modifier l’entrée DNS.
- Pour les autres machines (qui ne savent pas faire des mises à jour dynamiques DNS sécurisées), c’est le compte ordinateur du serveur DHCP.
Si vous sélectionner « Toujours mettre à jour dynamiquement les enregistrements PTR et A DNS« , c’est le compte ordinateur du serveur DHCP qui a le droit de modifier les entrées DNS (pour les stations Windows ou autres).

Attention, cela n’est vrai que si vous n’avez pas configuré un compte de service pour effectuer les mises à jour dynamiques DNS au niveau du service DHCP.
Cela se configure dans l’onglet « Avancé » dans les propriétés du serveur DHCP. Cliquer sur « Informations d’identification ». Voir article Microsoft :
http://support.microsoft.com/kb/282001/en-us
Si cette option est activée ce n’est plus le compte ordinateur du serveur DHCP qui a les droits mais ce compte de service.
Si vous sélectionnez, « Mettre à jour les enregistrements PTR et A DNS uniquement si des clients DHCP le demandent » :
- Pour les machines Windows en DHCP : elles créent elles-même l’entrée DNS. C’est donc le compte ordinateur de la machine Windows qui a le droit de modifier l’entrée DNS.
- Pour les autres machines (qui ne savent pas faire des mises à jour dynamiques DNS sécurisées), c’est le compte de service DNS configuré dans l’onglet « Avancé » du serveur DHCP qui a le droit de modifier l’entrée.

PRECONISATIONS :
Mettre en place la configuration suivante :
- Tous les serveurs DHCP doivent avoir la même configuration (DHCP Microsoft).
- Configurer le serveur DHCP pour « Mettre à jour les enregistrements PTR et A DNS uniquement si des clients DHCP le demandent« .
- Ne jamais supprimé les comptes ordinateurs des stations de travail. On peut les réinitialiser. Au pire supprimer les ServicePrincipalname intule avec la commande SETSPN.
- Configurer le serveur DHCP pour effectuer les mises à jour dynamiques DNS à l’aide d’un compte de service. Voir article Microsoft : http://support.microsoft.com/kb/282001/en-us
- Mettre en place le SCAVENGING. Cela purge les entrée dynamiques qui n’ont pas été mise à jour depuis plus de 14 jours par défaut (les entrées statiques ne sont pas purgées).
Cette configuration nous permet de gérer les cas 2 et 3 car c’est plus le compte ordinateur du serveur DHCP qui a les droits mais un compte de service identique sur tous les serveurs DHCP.
Je préfère laisser « Mettre à jour les enregistrements PTR et A DNS uniquement si des clients DHCP le demandent » car il n’est pas rare qu’une station de travail Windows repasse en IP fixe puis de nouveau en DHCP selon la configuration de vos sites. Dans ce cas c’est le compte ordinateur de la station de travail qui a les droits donc pas de problème.

Il sera nécessaire de modifier les permissions des entrées DNS si :
- Vous changez de serveur DHCP (changement du compte ordinateur du serveur DHCP) sans avoir activé le compte de service pour les mises à jour dynamique DNS au niveau de tous les serveurs DHCP.
- Si vous changez les paramètres de la mise à jour dynamique DNS au niveau de vos serveurs DHCP (danger).

CODE SOURCE DU SCRIPT POWERSHELL POUR METTRE A JOUR LES ENTREES DNS :
Le script ci-dessous nécessite PowerShell V1 / V2 et l’installation du module Quest Active management Shell for Active Directory
Dans l’exemple ci-dessous, la zone réplique au niveau de la partition de domaine.
Il faudra valider où se trouve la zone et se connecter sur cette zone avec ADSIEDIT.MSC (installer les support tools présents sur le CD d’installation de Windows 2003 Server).

Dans le conteneur système de la partition de domaine msreport.local :
DC=msreport.local,CN=MicrosoftDNS,CN=System,DC=MSREPORT,DC=LOCAL
Dans la ForestDnsZones :
DC=msreport.local,CN=MicrosoftDNS,DC=ForestDnsZones,DC=archidfs,DC=local
Dans la DomainDnsZones :
DC=msreport.local,CN=MicrosoftDNS,DC=DomainDnsZones,DC=archidfs,DC=local

Set-QADPSSnapinSettings -DefaultSizeLimit 0
Connect-Qadservice nom_du_contrôleur_domaine
Get-QADObject -UseGlobalCatalog -Identity m –SearchRoot « DC=msreport.local,CN=MicrosoftDNS, CN=System,DC=MSREPORT,DC=LOCAL » -Type Dnsnode | Add-QADPermission -Account « compte_groupe_pour_permissions_modifier_entrees » –Rights ‘GenericWrite,ReadControl,WriteProperty’ -ApplyTo ‘ThisObjectOnly’ 

POUR ALLER PLUS LOIN :
On peut voir les accès refusés au niveau des mises à jour des entrées DNS en activant l’audit (réussite et échec) pour « l’accès aux objets » au niveau de la stratégie « Default Domain Controller Policy ».
Faire un gpupdate /force sur chaque contrôleur de domaine ou attendre 5 minutes.
Par défaut, l’audit est configuré que pour les réussites au niveau d’une zone DNS. Il faut aussi ajouter les SACL pour les échecs.
Aller dans les propriétés de la zone DNS, dans « Sécurité », cliquez sur « Permissions avancées » au niveau de la zone DNS « MSREPORT.LOCAL ». Ajouter une entrée en « réussite / échec » pour tout le monde et pour les actions d’écriture.
Ouvrir le journal sécurité du contrôleur de domaine utilisé par le client DHCP / station de travail (voir LOGONSERNAME de la commande SET pour obtenir cette information).
On obtient ces messages :
Type de l’événement : Audit des échecs
Source de l’événement : Security
Catégorie de l’événement : Accès Active Directory
ID de l’événement : 566
Date : 6/20/2011
Heure : 6:07:40 PM
Utilisateur : MSREPORT\XPGMATHI-6DB635$
Ordinateur : SRVDFSR1
Description :
Opération d’objet :
   Serveur d’objet : DS
   Type d’opération : Object Access
   Type d’objet : dnsNode
   Nom d’objet : DC=xpgmathi-6db635,DC=msreport.local, CN=MicrosoftDNS,DC=DomainDnsZones,DC=archidfs,DC=local
   ID de handle : -
   Nom d’utilisateur principal : SRVDFSR1$
   Domaine principal : ARCHIDFS
   ID d’ouv de session principale : (0×0,0x3E7)
   Nom d’utilisateur client : XPGMATHI-6DB635$
   Domaine client : ARCHIDFS
   ID d’ouv de session client : (0×0,0×390006)
   Accès : Écriture personnelle  
   Propriétés :
   Default property set
   dnsRecord
   dNSTombstoned
   dnsNode
   Informations additionnelles :
   Informations additionnelles 2 :
   Masque d’accès : 0×8

Type de l’événement : Audit des échecs
Source de l’événement : Security
Catégorie de l’événement : Accès Active Directory
ID de l’événement : 566
Date : 6/20/2011
Heure : 6:11:11 PM
Utilisateur : MSREPORT\XPGMATHI-6DB635$
Ordinateur : SRVDFSR1
Description :
Opération d’objet :
   Serveur d’objet : DS
   Type d’opération : Object Access
   Type d’objet : dnsNode
   Nom d’objet : DC=xpgmathi-6db635,DC=msreport.local,CN=MicrosoftDNS,DC=DomainDnsZones,DC=archidfs,DC=local
   ID de handle : -
   Nom d’utilisateur principal : SRVDFSR1$
   Domaine principal : ARCHIDFS
   ID d’ouv de session principale : (0×0,0x3E7)
   Nom d’utilisateur client : XPGMATHI-6DB635$
   Domaine client : ARCHIDFS
   ID d’ouv de session client : (0×0,0x39DB62)
   Accès : Propriété d’écriture    
   Propriétés :
   Default property set
   dnsRecord
   dNSTombstoned
   dnsNode
   Informations additionnelles :
   Informations additionnelles 2 :
   Masque d’accès : 0×20

A+
Guillaume MATHIEU
PROSERVIA
La connaissance s’accroît quand on la partage
http://msreport.free.fr

Publié dans Active Directory, ActiveRoles for Server, Dns, Imprimantes, Outils, PowerShell, Scripts, Troubleshouting, Windows 2000 Pro, Windows 2000 Server, Windows 2003 Server, Windows Server 2008, Windows Server 2008 R2, Windows Seven, Windows Vista, Windows XP | Un commentaire

PowerShell -> Script to add users accounts / script pour ajouter des comptes utilisateurs

Bonjour

Microsoft fournit avec Windows 2008 R2 son propre module PowerShell pour Active Directory.
Pour ceux qui ne dispose pas de contrôleurs de domaine Windows 2008 R2, vous pouvez utiliser le module PowerShell Quest pour Active Directory (ActiveRoles Management Shell for Active Directory).
Il est gratuit et téléchargeable à cette adresse :
http://www.quest.com/powershell/activeroles-server.aspx
Ce dernier fonctionne très bien (testé de très nombreuses fois).
Pour les amateurs de scripts, ci dessous un exemple de code pour créer des comptes utilisateurs avec la commande PowerShell Quest New-QADUser et SET-QADuser.
Pour plus d’informations sur la commande New-SQADuser : Get-Help New-QADUser -examples
Comme on n’a pas toutes les options avec la commande New-QADuser je fais un pipe avec la commande Set-QADuser.

# Create 100 accounts with this caracteristics :
# Expiration date : 1er aout 2011.
# Password never expire and no change of password at first logon.
# Differents passwords for each account.
# Connexion to DC
Connect-QADService nom_contrôleur_domaine
# Variable
$boucle = 1;
$nbaccounttocreate = 101;
$ParentContainer = « OU=Users,OU=FR,DC=MSREPORT,DC=LOCAL »;
$description = « Test Account »;
$EmployeeType = « System »;
$StreetAddress = « route des Gardes »;
$PostalCode = « 92000″;
$City = « Meudon »;
$Company = « Msreport France »;
do
{
        $DisplayName = « it_msreport » + $boucle;
        $SamAccountname = « it_msreport » + $boucle;
        $UserPrincipalName = « $SamAccountname » + « @msreport.local »;
        $Password = « GeihposM » + $boucle;
        $email = $SamAccountname + « @msreport.free.fr »; 
        # Command to create user
        new-QADUser -ParentContainer $ParentContainer -DisplayName $DisplayName -description $description -StreetAddress $StreetAddress -PostalCode $PostalCode -City $City -Company $Company -name $SamAccountname -sAMAccountName $SamAccountname -UserprincipalName $UserPrincipalName -UserPassword $Password -Email $email -ObjectAttributes @{EmployeeType = « Test »;C= »FR »} | Set-QADuser -PasswordNeverExpires $true -AccountExpires 01/08/2011 -Manager « gmmathieu »;
        $boucle = $boucle + 1;
}
# Manage the number of loop.
while ($boucle -lt 101)

A+

Guillaume MATHIEU
PROSERVIA
La connaissance s’accroît quand on la partage.
http://msreport.free.fr

Publié dans Windows Server 2008 | Laisser un commentaire

CHANGER PERIODIQUEMENT LE MOT DE PASSE DU COMPTE ADMINISTRATEUR PRE-INTEGRE (BUILTIN) DE LA BASE SAM :

salut à tous

J’ai récemment travaillé sur une solution pour changer périodiquement le compte administrateur pré-défini sur des stations de travail Windows XP Pro / Windows Seven.
Le cachier des charges précisait :
- Que le mot de passe du compte administrateur pré-défini devait changer tous les 90 jours.
- Que le mot de passe devait être stocké sur un partage non accessible en lecture aux utilisateurs.
- Que le mot de passe devait respecter certaines contraintes en terme de tailles, nombre de familles de caractères (majuscules, minuscules, chiffres, caractères spéciaux).
- Prendre en charge le fait que le compte administrateur intégré changerait de nom selon la langue de l’OS ou pouvait avoir été renommé (« administrator » pour une version Windows anglaise, « administrateur » pour une version française).
La solution proposée ci dessous est basée sur deux scripts.
- ADMINISTRATORPASSWORD.CSV
- GENERATECSV.VBS

1 LE SCRIPT ADMINISTRATORPASSWORD.vbs :
1.1 PRESENTATION GENERALE :

Ce script permet de
- Générer le mot de passe selon les contraintes (nombre de majuscules, minuscules, caractères spéciaux…)
- Déterminer si cela fait plus de 90 jours que le mot de passe a été changé.
- Modifier le mot de passe sur la station de travail.
- Ecrire un fichier texte contenant le nom de la machine, le nom du compte administrateur pré-intégré et le mot de passe.

1.2 CONTRAINTES ET PROBLEMATIQUES DE LA SOLUTION :
- Tous les stations de travail doivent pouvoir accéder aux partages de fichiers de ces deux serveurs.
- Toutes les stations de travail doivent être membres d’un domaine Active Directory.
- Chaque station de travail doit pouvoir écrire le fichier texte contenant le mot de passe sans permettre aux utilisateurs d’accéder à tous les fichiers texte stockés sur le partage.
-La solution exige deux serveurs : un serveur hébergeant le partage où sont stockés les fichiers texte contenant le mot de passe et un serveur hébergeant les fichiers de logs d’erreurs en cas de problème lors de l’exécution du script.

1.3 SECURISATION DU REPERTOIRE CONTENANT LES FICHIERS AVEC MOTS DE PASSE :
Le script ADMINISTRATORPASSWORD.CSV s’exécute via un script de démarrage (GPO de type « Configuration Ordinateur »). Il s’exécute donc dans le contexte du compte SYSTEM (droit administrateur sur la station de travail).
La première étape consiste à créer le répertoire E:\logs et le partager en tant que logs$. Définir « Control Total » pour « Tout le monde » au niveau des permissions de partage.
Au niveau des permissions NTFS, supprimer l’héritage des permissions (dans les permissions NTFS avancées). Donner les droits « Contrôl Tôtal » à Administrators, SYSTEM, GRP_PASSWORD Viewer (groupe contenant les utilisateurs qui peuvent voir les fichiers avec les mots de passe).
Il faut ensuite ajouter des permissions spéciales pour le groupe « Authenticated users »
Créer une permissions NTFS personnalisée pour le groupe « Authenticated users ». Aller dans les permissions NTFS avancées. Sélectionner « Apply to this folder and subfolders ». Sélectionner le permissions suivantes :
- Traverse folder / execute file
- List folder / Read data
- Read attributes
- Read extended attributes
- Create files / write data
- Read permissions
Créer une seconde entrée au niveau des permissions NTFS avancées. Sélectionner « Apply to Files only« . Sélectionner le permissions suivantes :
- Read attributes
- Read extented attributes
- Create files / write data
- Create folders / append data
- Write attributes
- write extended attributes
- Delete
- Read permissions

Ne surtout pas cocher la case « List Folder / read data« .
Tester l’accès avec un compte utilisateur.
Ce dernier peut copier un fichier existant, le renommer, le supprimer mais ne peut pas le lire ou le copier depuis le serveur vers sa station de travail.
On est obligé de donner le droit de supprimer dans le cas où le compte ordinateur est supprimé. C’est en effet le compte ordinateur qui est propriétaire du fichier.

1.4 CODE  DU SCRIPT ADMINISTRATORPASSWORD.CSV :
‘ More informations about RND function : http://www.w3schools.com/vbscript/func_rnd.asp
‘ More informations about ACSII code : http://www.commentcamarche.net/contents/base/ascii.php3
‘ More informations about error management : http://technet.microsoft.com/en-us/library/ee176982.aspx and http://technet.microsoft.com/en-us/library/ee692852.aspx
‘ More informations about the date : http://www.commentcamarche.net/contents/vbscript/vbs-fonctions-date.php3
‘ More information about permission NTFS : http://support.microsoft.com/kb/308419/en-us

On error resume next
strComputer = « . »
Dim text,action,digits
text = «  »

‘VARIABLES TO DEFINE

serverpasswordname = « nom_serveur.domaine.dns »  ’ Server which store password files. Exemple : srv1.msreport.free.fr
serverlogname = « nom_serveur.domaine.dns »  ’ Server whuch store errors log files. Exemple : srv1.msreport.free.fr
periodTime = « 7776000″     ’ Time before password expiration in seconds (7776000 = 90 days)
digits = 9      ’ Lengh of the password

‘ MAIN

‘ Verify if the password must change on the computer
action = NeedChange()
if action = 1 then
 ’ Determin the name of the administrator account (administrateur in french).
 accounttomodify = AdministratorName()
 ’ Generate the password
 password = GeneratePassword(digits)
 ’ Define the new password on the computer.
 Set objUser = getobject(« WinNT:// » & strComputer & « / » & accounttomodify & « ,User »)
 If Err <> 0 Then
  WriteError(« N.A.;N.A.;No administrator account. »)
  Err.Clear
 else
  objUser.SetPassword password
  objUser.SetInfo
  if Err <> 0 Then
   WriteError(« N.A.;N.A.;Update of administrator fail. »)
   Err.Clear
  else
   ’ Write the password on a file on server and write the witness file on the computer
   text = accounttomodify + « ; » + password
   Writepasswordfile(text)
   if Err = 0 then
    Writewitness(now)
   else
    WriteError(« Unable to connect to the server ! »)
   
   End if
  End if
 End If
else
 ’ if the password has been changed since lower than 30 days, the script takes no actions.
 wscript.quit
End If

Function NeedChange()
On error resume next
‘ Script change password once every periodtime (variable). The script write a log on the computer in C:\Windows\passwordchange.txt that contains the day of the last change of the password

‘ Verify if the file exist on the station
Set objFSO = CreateObject(« Scripting.FileSystemObject »)

‘ if the file exists, we need to read it and verify the date.
If objFSO.FileExists (« C:\Windows\passwordchange.txt ») then
 ’ Read the date on file C:\Windows\passwordchange.txt 
    dim sFileContents
 dim lastchangetime
 Set oTextStream = objFSO.OpenTextFile(« C:\Windows\passwordchange.txt »,1)
 lastchangetime = cdate(oTextStream.ReadAll)
 oTextStream.Close

 ’wscript.echo « PeriodTime :  » & periodtime
 ’wscript.echo  » Date du fichier :  » & lastchangetime
 ’wscript.echo « Date actuelle :  » & now
 ’wscript.echo « Différence de temps :  » & DateDiff(« s »,lastchangetime,now)

 ’ If the file is corrupted, password must be changed.
 if err <> 0 then
  NeedChange = 1
  Err.Clear
       
 ’if the diffrence between the two date is greater than periodTime, we need to change the password.
 elseif  CDbl(DateDiff(« s »,lastchangetime,now)) > CDbl(periodTime) then
  NeedChange = 1
  ’wscript.echo « NeedChange :  » & NeedChange
 ’ Other case, do nothing.
 elseif CDbl(DateDiff(« s »,lastchangetime,now)) < 0 then
  NeedChange = 1
 else
  NeedChange = 0
  ’wscript.echo « NeedChange :  » & NeedChange
 End If
‘ if the file doesn’t exist, change the password
else
 NeedChange = 1
End if

End Function

‘ Function to generate password

Function GeneratePassword(digits)
Dim passwordtemp
passwordtemp = «  »
Dim w
Dim i
Dim digit1, digit2, digit3

‘ Code to generate password with uppercases (A…Z), lowercases (a…z) and numbers (2…9) without 0, O,o I, l

For i = 1 To Digits
 ’ The function randomize permit to change the result of the RND function
 ’ The first caracters is an uppercase
 digit1 = «  »
 digit2 = «  »
 digit3 = «  »
 if i = 1 then
         Randomize
  digit1 = chr(65 + INT(RND * 25))
  ’ The ACSII value 79 is O and the ACSII code 73 is I
  if (digit1 = chr(79)) OR (digit1 = chr(73)) then
   digit1 = chr(80 + INT(RND * 10))
  End if
  passwordtemp = passwordtemp + digit1
 
 elseif i = 2 then
  Randomize
  digit2 = chr(97 + INT(RND * 25))
  ’ The ACSII value 108 is l
  if (digit2 = chr(108)) OR (digit2 = chr(111)) then
   digit2 = chr(112 + INT(RND * 10))
  End if
                passwordtemp = passwordtemp + digit2
 
 elseif i = digits then
  Randomize
  ’ The ACSII value 48 is 0 and isn’t in the range.
  passwordtemp = passwordtemp + chr(50 + INT(RND * 7))
 
 else
  Randomize
         w = 1 + INT(RND * 4)
  ’wscript.echo « value w :  » & w
         If W = 1 Then
                 Randomize
   digit1 = chr(65 + INT(RND * 25))
   ’ The ACSII value 79 is O and the ACSII code 73 is I
   if (digit1 = chr(79)) OR (digit1 = chr(73)) then
    digit1 = chr(80 + INT(RND * 10))
   End if
   passwordtemp = passwordtemp + digit1 
         ElseIf W = 2 Then
   Randomize
   digit2 = chr(97 + INT(RND * 25))
   ’ The ACSII value 108 is l
   if (digit2 = chr(108)) OR (digit2 = chr(111)) then
    digit2 = chr(112 + INT(RND * 10))
   End if
                 passwordtemp = passwordtemp + digit2
  Elseif w = 3 Then
   Randomize
   choice = INT(RND * 5)
   ’wscript.echo « Choice :  » & choice
   ’ Value ACSII : # = 35  $ = 36 * = 42 + = 43 @ = 64
   if choice = 0 then
    digit3 = chr(35)
   elseif choice = 1 then
    digit3 = chr(36)
   elseif choice = 2 then
    digit3 = chr(42)
   elseif choice = 3 then
    digit3 = chr(43)
   else
    digit3 = chr(64)
   End if
   passwordtemp = passwordtemp + digit3
         Else
                 Randomize
   ’ The ACSII value 48 is 0, 49 is 1 and isn’t in the range.
   passwordtemp = passwordtemp + chr(50 + INT(RND * 7))
         End If
 End if
‘wscript.echo « Valeur de I :  » & i
Next
GeneratePassword = passwordtemp
End Function

‘ Function to create file with password on the share

Function Writepasswordfile(text)
        ‘Find the name of the workstation and create file result on server
        Set WshNetwork = WScript.CreateObject(« WScript.Network »)
        StationName = WshNetwork.ComputerName
 resufile = « \\ » & serverpasswordname & « \logs$\ » & StationName & « .txt »
        ‘wscript.echo « Fichier mot de passe :  » & resufile
 Dim objFSO,objFile
        Set objFSO = CreateObject(« Scripting.FileSystemObject »)
        Set objFile = objFSO.CreateTextFile(resufile)
 ’ Write the date in french format.
        objFile.WriteLine StationName & « ; » & text & « ; » & Day(now) & « / » & Month(now) & « / » & Year(now)
        objFile.Close        
End Function

Function WriteError(text)
        ‘Find the name of the workstation and create file result on server
        Set WshNetwork = WScript.CreateObject(« WScript.Network »)
        StationName = WshNetwork.ComputerName
 resufile = « \\ » & serverlogname & « \logs$\Error- » & StationName & « .txt »
        ‘wscript.echo « Fichier mot de passe :  » & resufile
 Dim objFSO,objFile
        Set objFSO = CreateObject(« Scripting.FileSystemObject »)
        Set objFile = objFSO.CreateTextFile(resufile)
        objFile.WriteLine StationName & « ; » & text
        objFile.Close        
End Function
 

Function Writewitness(dateofchangepassword)
 resufile = « C:\Windows\passwordchange.txt »
        Dim objFSO,objFile
        Set objFSO = CreateObject(« Scripting.FileSystemObject »)
        Set objFile = objFSO.CreateTextFile(resufile)
        objFile.WriteLine dateofchangepassword
        objFile.Close        
End Function

Function AdministratorName()
‘ Permit to find the name of the BUILTIN administrator account on the computer. This account have a sid which begin by the following strings S-1-5- and which finish by the following strings « -500″.
Set objWMIService = GetObject(« winmgmts:\\ » & strComputer & « \root\cimv2″)
Set colAccounts = objWMIService.ExecQuery _
    (« Select * From Win32_UserAccount Where LocalAccount = TRUE »)
For Each objAccount in colAccounts
    If Left (objAccount.SID, 6) = « S-1-5- » and Right(objAccount.SID, 4) = « -500″ Then
        AdministratorName = objAccount.Name
    End If
Next

End Function

2. LE SCRIPT GENERATECSV.VBS :
2.1 PRESENTATION GENERALE :

Ce script permet de générer un fichier CSV à partir de tous les fichiers textes contenant les mots de passe.
On ne peut pas écrire directement dans le fichier CSV depuis les stations de travail du fait du risque de corruption de données si deux machines changent de mots de passe en même temps. Il faudrait une base de données.

2.2 MISE EN OEUVRE :
Configurer une tâche planifiée sur le serveur où sont stockés les fichiers avec les mots de passe pour créer le fichier CSV contenant tous mots de passe toutes les 10 minutes.

2.3 CODE DU SCRIPT GENERATECSV.VBS :
‘ More information at http://www.computerperformance.co.uk/vbscript/vbscript_file_opentextfile.htm
‘ More information at http://www.devguru.com/technologies/vbscript/quickref/textstream_readall.html

on error resume next

‘ VARIABLES TO DEFINE :
Dim passwordfileshare
Dim targetcsvfile
passwordfileshare = « 
\\nom_serveurs_partage_password_files\logs$\ »
targetcsvfile = « 
\\nom_serveurs_partage_password_files\logs$\csv\ »
csvfile = « 
\\nom_serveurs_partage_password_files\logs$\csv\resultats\userspassword.csv »
resultfolder = « 
\\nom_serveurs_partage_password_files\logs$\csv\resultats\« 

‘ MAIN
‘ Copy all file from passwordfileshare to targetcsvfile
copypasswordfiles()

‘ Generate the CSV file
GenerateCSV()

Function copypasswordfiles()
Dim FSO
Dim FileExt
FileExt = « *.txt »
Set FSO = CreateObject(« scripting.filesystemobject »)

‘ ADD « \ » if the folder name doesn’t finish by this caracters.
If Right(passwordfileshare, 1) <> « \ » Then
 passwordfileshare = passwordfileshare & « \ »
End If

‘ Verify if the folder to result exist
If FSO.FolderExists(passwordfileshare) = False Then   
 wscript.quit(1)
End if

if FSO.folderExists(targetcsvfile) = False Then
 FSO.CreateFolder(targetcsvfile)
     FSO.CopyFile passwordfileshare & FileExt, targetcsvfile
else
    FSO.CopyFile passwordfileshare & FileExt, targetcsvfile
End if
End function

Function GenerateCSV()

Dim fso, folder, files, NewsFile
Set fso = CreateObject(« Scripting.FileSystemObject »)

‘ Verify if the result folder exist and create it if not exist.
if FSO.folderExists(resultfolder) = False Then
 FSO.CreateFolder(resultfolder)
End if

‘ List each file in targetcsvfile, copy the content of each file in csvfile
‘ Create the result file
Set NewFile = fso.CreateTextFile(csvfile, True)
‘ List the file
Set folder = fso.GetFolder(targetcsvfile)
Set files = folder.Files
‘ Write the first line of the result CSV file
NewFile.WriteLine (« Computer;Login;Password;TimeLastChange »)

For each folderIdx In files
 ’ Read the fisrt line of each txt file
 Set TextFile = fso.opentextfile(targetcsvfile & folderIdx.Name,1)
 ’ Write a new line in csvfile
 NewFile.WriteLine(TextFile.ReadLine) 
Next
NewFile.Close
End function

a+
Guillaume MATHIEU
http://msreport.free.fr
PROSERVIA
Le bonheur c’est le partage.

 

Publié dans Active Directory, GPO, Outils, Sécurité, Scripts, Système, Windows Seven, Windows Vista, Windows XP | Laisser un commentaire

SECURISATION DES SERVEURS REMOTE DESKTOP SERVERS (WINDOWS 2008 R2) :

Salut à tous
J’ai récemment travaillé sur la sécurisation des serveurs Remote Desktop Service (service Terminal Server sous Windows 2008 R2).
Cet article a pour but de voir comment sécuriser ce type de serveur.
Une version plus complète de cet article avec des captures d’écran est disponible à cette adresse :
http://msreport.free.fr/articles/Securisation_RDS_2008_R2_V.1.0.1.pdf

1 OBJECTIFS :
- Sécuriser les serveurs Remote Desktop Service sous Windows 2008 R2.
- Empêcher les utilisateurs de copier des fichiers, d’éxécuter des commandes systèmes.
- Ne pas perturber le fonctionnement du système.
- Permettre aux administrateurs d’administrer le système sans restrictions.
- Permettre aux utilisateurs d’exécuter les programmes de la suite Office 2007.

2 SECURISATION DU SERVEUR REMOTE DESKTOP SERVICE (WINDOWS 2008 R2) :
Pour cela, on va :
- Désactiver de nombreuses fonctionnalités de l’interface graphique via les stratégies de groupe.
- Bloquer l’exécution de toutes les applications sauf celles qui sont autorisées via Applocker.

2.1 DEPLACER LE SERVEUR REMOTE DESKTOP HOST SERVICE DANS L’OU REMOTEDESKTOPSERVER :
La première étape consiste à créer une unité d’organisation et de déplacer les comptes ordinateurs des serveurs Remote DeskTop Services dans cette unité d’organisation.
Créer et lier un objet de stratégie de groupe au niveau de l’unité d’organisation « RemoteDeskTopServers » appelé « Secure Remote Desktop Servers » :

2.2 CONFIGURATION DES GPO POUR RESTREINDRE LES FONCTIONNALITES DE L’INTERFACE GRAPHIQUE :
Pour sécuriser le serveur Remote DeskTop Service, il faut :
- Désactiver le presse papier et le mappage de lecteur réseau au niveau de la console MMC « Terminal Services Configuration ». 
- Bloquer l’accès à CMD par GPO
- Bloquer l’accès à certains programmes depuis l’aide : « Configuration ordinateur | Modèles d’administration | Systèmes | Restreindre l’exécution de ces programmes depuis l’aide en ligne».
- Bloquer l’accès à l’invite de commande : Configuration Utilisateurs | Modèles d’administration | Système | Désactiver l’accès à l’invite de commande.
- Définir la liste des applications autorisées : Configuration Utilisateurs | Modèles d’administration | Système | Exécuter seulement les applications Windows autorisées.
- Activer l’interface de l’utilisateur personnalisée : Configuration Utilisateurs | Modèles d’administration | Système | Interface Utilisateur personnalisée.
- Empêcher l’accès aux outils de modification du registre : Configuration Utilisateurs | Modèles d’administration | Système | Empêche l’accès aux outils de modification du registre.
- Configurer la GPO pour que les GPO de type « Configuration Utilisateur » s’applique à un compte ordinateur.
- Restreindre l’accès à certaines fonctionnalités / menu dans les programmes Office via GPO (utilisation ADM Office).
- Activer le pare feu de Windows 2008 R2 pour bloquer tous les accès sauf aux contrôleurs de domaine.
- Appliquer les préconisations des articles suivants :
  http://support.microsoft.com/kb/278295/en-us
  http://www.microsoft.com/downloads/en/details.aspx? FamilyID=7f272fff-9a6e-40c7-b64e-7920e6ae6a0d&DisplayLang=en

Remarque :
Il n’y a plus de visionneuse des fichiers d’aide par défaut sous Windows 2008 R2 :
http://support.microsoft.com/kb/917607/en-us

2.3 BLOQUER L’APPLICATION DES GPO AUX ADMINISTRATEURS DU SERVEUR :
Afin que les administrateurs puissent gérer le serveur, interdire l’application de la GPO aux groupes correspondant aux administrateurs du serveur (administrateurs du domaine dans l’exemple ci-dessous).
Pour cela, il faut refuser la permission « Appliquer la stratégie de groupe » au niveau des permissions de l’objet stratégie de groupe.
Voir article Microsoft ci dessous pour plus d’informations :
http://technet.microsoft.com/en-us/library/bb742376.aspx
« Figure 11 belows shows an example of the security settings that allow everyone to be affected by this GPO except the members of the Management group, who were explicitly denied permission to the GPO by setting the Apply Group Policy ACE to Deny. Note that if a member of the Management group were also a member of a group that had an explicit Allow setting for the Apply Group Policy ACE, the Deny would take precedence and the GPO would not affect the user« .

2.4 A SAVOIR SUR APPLOCKER :
- Le mode de fonctionnement d’AppLocker est « Tout interdire sauf ». Lorsque l’on crée la première règle AppLocker, on crée indirectement la règle par défaut (non configurable), tout interdire.
- AppLocker ne gère pas les application posix ou le sous système 16 bits. Il faut donc bloquer ces deux sous systèmes. Voir stratégie Computerconfiguration/Administrative Templates/Windows-Components/Applicationcompatibility et activer le paramètre  « Deny access to 16bit applications ».
- Il y a un journal de sécurité dédié pour Applocker dans Windows 2008 R2.  Cela peut être pratique pour déterminer les exécutables qui sont nécessaires aux bons fonctionnement de vos applications.
- Il est possible de configurer Applocker en mode Audit uniquement. Attention la configuration par défaut est en mode appliqué.
- Surveiller la présence des erreurs Microsoft-Windows-AppLocker 8004. Elles permettent de savoir quels sont les applications qui sont interdites. Il faut ensuite identifier si c’est normal que cette soit interdite ou non.
 Log Name:      Microsoft-Windows-AppLocker/EXE and DLL
 Source:        Microsoft-Windows-AppLocker
 Date:          19/04/2011 19:21:15
 Event ID:      8004
 Task Category: None
 Level:         Error
 Keywords:     
 User:          SYSTEM
 Computer:      fr92sv0004.newlife.lan
 Description:   %SYSTEM32%\TASKHOST.EXE was prevented from running.
- AppLocker gère les formats de fichiers suivants : Les formats pris en charge :
 Exe : via règles « Executables Rules »
 Com : via règles « Executables Rules »
 Msi : via règles « Windows Installer »
 Msp : via règles « Windows Installer »
 ps1 : via règles « Script Rules »
 bat : via règles « Script Rules »
 cmd : via règles « Script Rules »
 vbs : via règles « Script Rules »
 js: via règles « Script Rules »
 dll : si la case « Enable the dll rule collection » est coché. Attention au performance. Il sera aussi nécessaire de savoir quels sont les DLL utilisés par les applications (très dangereux).
- Si un Applocker ne peut pas vérifier le certificat d’une application autorisée à l’aide d’une règle « Publisher », l’application est interdite.
“If the application’s certificate expires while the rule is enforced, the binary file will be blocked from running. A binary file is considered signed as long as the timestamp happened during the validity period of both the signing of the certificate and the time stamping of the certificates in the certificate chain.”

Pour plus d’informations sur Applocker :
- http://windowsteamblog.com/windows/b/springboard/archive/ 2009/08/18/understanding-windows-7-applocker.aspx
- http://technet.microsoft.com/en-us/library/dd723678(WS.10).aspx
- http://technet.microsoft.com/en-us/library/ee844118(WS.10).aspx
- http://technet.microsoft.com/en-us/library/ee619725(WS.10).aspx
- http://technet.microsoft.com/fr-fr/library/dd723686(WS.10).aspx
- http://www.windowsnetworking.com/articles_tutorials/Introduction-AppLocker-Part1.html
- http://www.windowsnetworking.com/articles_tutorials/Introduction-AppLocker-Part2.html
- http://www.windowsnetworking.com/articles_tutorials/Introduction-AppLocker-Part3.html
- http://www.windowsnetworking.com/articles_tutorials/Introduction-AppLocker-Part4.html
- http://technet.microsoft.com/en-us/windows/dd320283.aspx
- http://microsoftplatform.blogspot.com/2011_01_01_archive.html
- http://technet.microsoft.com/en-us/library/ee460956(WS.10).aspx
- http://technet.microsoft.com/en-us/library/ee460957(WS.10).aspx
- http://technet.microsoft.com/en-us/library/dd723678(WS.10).aspx
- http://microsoftplatform.blogspot.com/2011_01_01_archive.html
- http://64.4.11.252/en-us/library/ee619725(WS.10).aspx#BKMK_CertRevocation

2.5 MISE EN ŒUVRE D’APPLOCKER :
2.5.1 Etape 1 : créer et personnaliser les règles par défaut Applocker :
Editer l’objet de stratégie de groupe.
Créer les règles par défaut. Ce sont ces règles qui vont nous permettre aux systèmes de continuer à fonctionner correctement. Pour cela, cliquer sur « Create Default rules » dans les sections « Executables Rules », « Windows Installer » et « Script Rules ». On obtient à chaque fois trois règles autoriser.
Laisser uniquement la règle avec le groupe BUILTIN\Administrateurs (comprendre les comptes membres du groupe Administrators de la base SAM locale). En effet les règles pour les utilisateurs non administrateur sont trop permissives.
Créer une règle Autoriser tous les fichiers pour les comptes suivants (même règle que pour le groupe BUILTIN\Administrateurs) :
- NT AUTHORITY\SYSTEM
- NT AUTHORITY\LOCAL SERVICE
- NT AUTHORITY\NETWORK SERVICE
- NT AUTHORITY\NETWORK SERVICE
- NT AUTHORITY\SERVICE.
Remarque :
- Il peut être nécessaire d’autoriser d’autre entité de sécurité prédéfini comme IUSR
Le log ci-dessous semble indiquer que par défaut le compte SYSTEM n’a plus accès à tout.
 Log Name:      Microsoft-Windows-AppLocker/EXE and DLL
 Source:        Microsoft-Windows-AppLocker
 Date:          20/04/2011 16:06:47
 Event ID:      8004
 Task Category: None
 Level:         Error
 Keywords:     
 User:          SYSTEM
 Computer:      fr92sv0004.newlife.lan
 Description:   %SYSTEM32%\CONHOST.EXE was prevented from running.

2.5.2 Etape 2 : Les exécutables systèmes à autoriser :
A cette étape, seuls les membres du groupe administrateurs et les comptes SYSTEM peuvent ouvrir une session sur le serveur. Si un utilisateur essaie d’ouvrir une session, cela échoue. La session se ferme car le processus userinit.exe ne peut pas s’exécuter correctement.
Le tableau ci-dessous liste les exécutables à autoriser pour le groupe « Authenticated users » :

Processus à autoriser pour « Authenticated Users » :
- c:\windows\system32\DLLHOST.exe : permet de gérer les librairies virtuelles DLL : http://www.commentcamarche.net/contents/processus/dllhost-exe.php3
- c:\windows\explorer.exe : Explorateur Windows
- c:\windows\system32\Userinit.exe : processus qui initie la session de l’utilisateur. Charge l’explorateur Windows.
- c:\windows\system32\Dwm.exe : Voir http://msdn.microsoft.com/en-us/library/aa969540(v=vs.85).aspx
- c:\windows\system32\gpupdate.exe : permet d’actualiser les stratégies de groupe.
- c:\windows\system32\CONHOST.EXE : ce processus est obligatoire si l’on veut que l’utilisateur puisse exécuter un utilitaire en invite de commande comme GPUPDATE.
- c:\windows\system32\rdpclip.exe : permet copier / coller entre le client RDS et le serveur RDS : http://support.microsoft.com/kb/309825/en-us
- c:\windows\system32\Rdpinit.exe : dans le cadre d’une session RemoteApp, lance le processus RDPSHELL.EXE (une version mineur d’explorer.exe) : http://social.technet.microsoft.com/Forums/en/winserverTS/thread/845ac56d-a8c2-4188-96b2-6ae310b84011
- c:\windows\system32\Rdpshell.exe : s’exécute à la place d’explorer.exe dans le cadre d’une session RemoteApp. http://support.microsoft.com/kb/2384602/en-us et http://blogs.technet.com/b/askperf/archive/2008/02/22/ws2008-terminal-services-remoteapps.aspx
- c:\windows\system32\RUNDLL32.EXE : permet de charger des DLL comme un programme classique WIN32 : http://www.commentcamarche.net/contents/processus/rundll32-exe.php3
- c:\windows\system32\RUNONCE.EXE : permet d’exécuter les programmes au démarrage de la session.
- c:\windows\system32\SETHC.EXE :  permet les fonctionnalités d’accessibilité (touches rémanentes…). http://support.microsoft.com/kb/2516889/en-us
- c:\windows\system32\SLUI.exe :  activation Windows
- c:\windows\SPLWOW64.exe : si Windows 2008 R2 64 bits,  permet l’exécution des programmes 32bit avec la couche driver 64 bit : http://social.technet.microsoft.com/Forums/fr-FR/win7fr/thread/c62fb71c-f588-4ce6-875b-9c2bf452acc2/
- c:\windows\system32\TSTHEME.EXE :
- c:\windows\system32\TASKHOST.EXE: permet de lancer des DLL en tant que processus. http://answers.microsoft.com/en-us/windows/forum/windows_7-performance/taskhostexe/0882ab46-43ee-4d90-8404-6802f8f4f2cf
- c:\windows\system32\WERMGR.EXE : Windows Erreur Manager.
- C:\WINDOWS\system32\ctfmon.exe: ctfmon.exe active le TIP (Text Input Processor) des modes d’entrée complémentaires ainsi que la barre de langue Microsoft Office.  http://support.microsoft.com/kb/282599/fr
- C:\windows\system32\usrlogon.cmd : script de login par défaut.
- C:\WINDOWS\Application Compatibility Scripts : Script de login par défaut.
- C:\WINDOWS\System32\logon.scr : penser à autoriser les écrans de veille.
- \\nom_dns_domaine\netlogon : permet d’exécuter les scripts de login.
- \\nom_dns_domaine\sysvol : permet d’exécuter les scripts de login
- \\nom_netbios_domaine\netlogon : permet d’exécuter les scripts de login
- \\nom_netbios_domaine\sysvol : permet d’exécuter les scripts de login
- %logonserver%\netlogon : permet d’exécuter les scripts de login.
- %logonserver%\sysvol : permet d’exécuter les scripts de login.
- C:\Program Files\Citrix : excétables Citrix XenApp (chemin par défaut).
- C:\Temp\*\getpaths.cmd :

Pour plus d’informations, voir articles Microsoft :
- http://microsoftplatform.blogspot.com/2011/01/remote-control-rds-session-in-mixed_26.html 
- http://blogs.technet.com/b/askperf/archive/2008/02/22/ws2008-terminal-services-remoteapps.aspx
Applocker dispose d’un journal de sécurité qui permet de savoir quels exécutables ont été autorisés ou bloqués. Le plus simple est d’exécuter les applications avec Applocker d’activer pour déterminer les applications à autoriser.

2.5.3 Etape 3 : Création des règles Applocker pour les « Authenticated users » :
Avec AppLocker, on peut maintenant :
- Créer une règle qui s’applique à un utilisateurs ou à un groupe d’utilisateur.
- Créer des règles qui se basent sur les signatures numériques des programmes.  La majorité des programmes sont maintenant signés par les éditeurs (à l’aide de certificat) afin de valider que le programme n’a pas été modifiés par un tiers et prouvé l’identité de l’éditeur (programme provenant d’un éditeur de confiance). Dans l’exemple ci-dessous j’autorise toutes les versions d’Explorer.exe qui sont supérieur à la version 6.0.
- Générer automatiquement des règles à l’aide de la fonctionnalité « Generate Rules » en scannant un répertoire.

On va maintenant créer les règles pour permettre aux utilisateurs non administrateurs d’utiliser les programmes de la suite Office 2007.
Pour cela, on va utiliser la nouvelle fonction de création automatique des règles en cliquant sur « Automatically Generate Rules ».
On va demander à cet assistant de créer automatiquement des règles « Publisher » et de générer des règles de chemin d’accès pour les exécutables non signées.
On va éventuellement supprimer tous les exécutables Office que l’on ne souhaite pas autoriser.

2.5.4 Etape 4 : Configurer le service « Application Identity » :
Il faut maintenant configurer le service « Application Identity » pour démarrer automatiquement.  Sans ce service AppLocker ne fonctionne pas.
On peut faire cela manuellement ou mieux par GPO (interface grisée dans la console services.msc).

A+
Guillaume MATHIEU
PROSERVIA
Le bonheur c’est le partage.
http://msreport.free.fr

Publié dans Sécurité, Système, Terminal Server, Windows Server 2008 R2 | Un commentaire

Comment sécuriser un serveur Terminal Server / Citrix XenApp / Presentation Server ?

Salut à tous

J’ai récemment travaillé sur la sécurisation d’un serveur Terminal Server.

Quelques rappels :
Le service Terminal Server / Remote Desktop Service permet de transformer une machine Windows Server en l’équivalent de plusieurs dizaines / centaines de stations de travail.
Les applications installées sur le serveur sont mises à disposition des utilisateurs.  L’administrateur peut publier le bureau Windows ou juste une application (avec Windows 2008 / 2008 R2 ou Citrix toute version).
Les utilisateurs accèdent à leur bureau / applications via le client Bureau à distance à travers le réseau local ou via Internet (le flux réseau peut être encapsulé dans du trafic HTTP/HTTPS).
Terminal Server / Citrix présente de nombreux avantages :
- Les utilisateurs peuvent travailler de chez eux via leurs stations de travail.
- Les données des utilisateurs restent dans le réseau de l’entreprise. Cela simplifie la sauvegarde et la sécurisation de ces données (risque de vol ordinateur portable…).
- La maintenance d’un ou plusieurs serveurs Terminal Server reste plus simple que la maintenance de centaines de stations de travail (mises à jour des logiciels…).

Cependant, un des gros défis de ce type d’architecture est la sécurité du ou des serveurs Terminal Server / Citrix :
- Les utilisateurs ne doivent pas pouvoir modifier le système et perturber les sessions des autres utilisateurs.
- Les utilisateurs ne doivent pas pouvoir télécharger / exécuter de virus.
- Les utilisateurs doivent uniquement pouvoir exécuter les applications publiées.

Remarque :
Citrix XenApp (anciennement Citrix Presentation Server) est une surcouche fonctionnelle à Terminal Server (ajout de fonctionnalités supplémentaires).

Pour plus d’informations sur le service Terminal Server / Remote Desktop Service, voir :
http://www.microsoft.com/windowsserver2008/en/us/rds-product-home.aspx

Cette article a pour but de montrer comment renforcer la sécurité sur un serveur Terminal Server / Citrix. Pour cela, nous prendrons le cas concret suivant :
J’ai travaillé pour une société qui souhaitait publier Excel 2003 pour ses utilisateurs.
- Les utilisateurs devaient pouvoir ouvrir un fichier Excel et lancer des calcul via une macro Excel.
- Ils devaient pouvoir enregistrer de nouvelles versions du fichier Excel.
- Il ne devait pas pouvoir récupérer le fichier Excel sur leurs stations de travail.
- Le serveur de publication était sous Windows 2003 Server Entreprise R2 SP2 / Office 2003 Entreprise avec une surcouche Citrix Presentation Server 4.5.

1. Comment sécuriser le serveur Terminal Server / Citrix Presentation Server 4.5 :
Je vous invite à lire tout d’abord les articles Microsoft ci dessous :
http://support.microsoft.com/kb/278295/en-us
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7f272fff-9a6e-40c7-b64e-7920e6ae6a0d&DisplayLang=en
http://technet.microsoft.com/en-us/library/bb457006.aspx
http://www.microsoft.com/office/orkarchive/2003ddl.htm

Pour résumé, on va sécuriser le serveur Terminal Server / Citrix :
- En désactivant de nombreuses fonctionnalités de l’interface graphique via les stratégies de groupe.
- En activant les stratégies de restrictions logicielles. Les utilisateurs ne doivent pouvoir ouvrir qu’Excel.
- En personnalisant le profil des utilisateurs (suppression de tous les icônes inutiles). On va personnaliser le profil par défaut.
- En désactivant la redirection des lecteurs locaux, imprimantes, presse papier, port COM à travers le service Terminal Server.
- En désactivant certaines fonctionnalités d’Excel via stratégies de groupes. Pour cela il faut importer l’ADM Office 2003 et Excel 2003 dans notre stratégie de groupe.
- En activant la fonctionnalité LoopBack des stratégies de groupe. Les paramètres de types « Configuration Utilisateurs » s’appliquent à un compte ordinateur. Créer une OU dédiée pour les serveurs Citrix et déplacer les comptes « ordinateur » du ou des serveurs Citrix.

Quelques retours d’expérience sur les stratégies de restrictions logicielles :
Pour les activer :
- Créer une stratégie de restriction logicielle dans « Computer Configuration ». Laisser en mode non restreint et configurer le fait que cela ne s’applique pas aux administrateurs.
- Créer une stratégie de restriction logicielle dans « User Configuration ». Passer en mode restreint et configurer le fait que cela ne s’applique pas aux administrateurs. Configurer une règle de chemin d’accès vers l’exécutable Excel. Attention, les stratégies de restriction logicielle s’appliquent aussi aux raccourcis. Il faut donc exécuter Excel (publication d’application).
Ne jamaius supprimer les règles pré-définies sinon le système ne marche plus.
Les racourcis sont considérés comme des exécutables. Il faut donc les autoriser individuellement. On peut définir les types de fichiers qui sont pris en charge par la stratégie de restrictions logicielles.

2. Pour que les stratégies de s’appliquent pas aux administrateurs :
- Créer un groupe. Au niveau de l’onglet sécurité de la stratégie de groupe, refuser le droit « Appliquer la stratégie de groupe » à ce groupe.

3. Pourquoi est il si difficile de sécuriser un serveur Terminal Server / Citrix Presentation Server ?
Je me place du point de vue du pirate. Mon objectif est de récupérer le fichier Excel publié ou d’attaquer le serveur.
- L’administrateur m’a publié uniquement Excel.
- L’accès à l’invite de commande est verrouillé.
- Je ne peux pas parcourir les lecteurs locaux.
- Je ne suis pas administrateur du serveur.

Comment faire pour ouvrir un invite de commande depuis Excel ?
Dans Excel, cliquer sur « Fichier »  | « Ouvrir ».
Accéder à l’endroit où vous avez un accès en écriture.
Faire un clic droit et créer un fichier appelé test.bat.
Faire un clic droit et cliquer sur « Edit ».
Dans le fichier « test.bat », taper « Cmd ». Sauvegarder.
Faire un clic droit sur le fichier et cliquer sur « Open ». Cela ouvre une fenêtre « Invite de commande ».
On peut maintenant parcourir tous les lecteurs locaux même si l’administrateur a désactivé le fait de pouvoir parcourir les lecteurs locaux via l’Explorateur Windows.

Comment récupérer le contenu d’un fichier :
On appellera station distante, la station de l’utilisateur depuis laquelle la session Terminal Server a été ouverte.
Solution 1 : Installer PDF Writer sur votre station de travail. Ouvrir votre session TSE. Si l’administrateur a autorisé la redirection d’imprimante et que le pilote PDF Writer est installé sur le serveur Terminal Server, vous pouvez imprimer vers l’imprimante PDF Writer de la station distance depuis la session Terminal Server.
Solution 2 : De base, il est possible avec Terminal Server de monter les disques de la station distante sous forme de lecteurs au niveau de la session Terminal Server. Cela peut être désactivé.
Si l’option est activée, il suffit d’arriver à ouvrir une fenêtre « Invite de commande » (pour contourner toutes les GPO) et de faire un « COPY » du fichier à récupérer entre le disque du serveur et le disque de la station distante.
Solution 3 : Si le presse papier est activé entre la station distante et le serveur Terminal Server, vous pouvez aussi récupérer le fichier en ouvrant le fichier avec Notepad et en faisant du copier / coller.

4. Comment s’en sortir ?
Il ne faut surtout pas que les utilisateurs puissent ouvrir une fenêtre « Invite de commande ».
Il est possible de bloquer l’invite de commande. Cependant il faut aussi bloquer l’exécution des scripts en arrière plan sinon l’utilisateur peut créer un fichier BAT pour ouvrir l’invite de commande. Cela va empêcher l’exécution de tous les scripts de login donc attention danger. L’idéal est donc de désactiver tous les racourcis clavier / menu contextuel et donc d’empêcher l’utilisateur de créer un fichier BAT.
Il faut suivre très rigoureusement les articles de la partie 1.
Attention l’aide de Windows dispose de nombreux liens qui permettent d’ouvrir une fenêtre invite de commande. Le plus simple est d’arrêter le service d’aide.

5. La morale de l’histoire :
- La seule solution pour réellement empêcher les utilisateurs de récupérer des données depuis un serveur Terminal Server / Citrix est d’utiliser des technologies comme Active Directory Right Management Services.
- Si vous souhaitez uniquement protéger votre serveur et empêcher les utilisateurs de faire des modifications, l’application des articles de la partie 1 devrait vous apporter satisfaction.

A+
Guillaume MATHIEU
Consultant PROSERVIA
Le bonheur, c’est le partage.
http://msreport.free.fr

Publié dans Active Directory, GPO, Maquette, Outils, Registre, Sécurité, Terminal Server, Windows 2000 Pro, Windows 2000 Server, Windows 2003 Server, Windows Server 2008, Windows Server 2008 R2 | Marqué avec , , , , , , | Un commentaire

Arrêter d’arrêter les services Windows !

Salut à tous

Juste un petit article pour un coup de gueule.
Arrêter de désactiver les services Windows ! Surtout quand on ne sait pas à quoi ils servent réellement.
Un petit tour d’horizon des services à ne surtout pas désactiver ! Je commence par les services les plus critiques.

1. Ne pas arrêter le service « DHCP client »
Même si je suis en IP FIXE, je n’arrête pas le service « DHCP client« .
Certe, le service « DHCP Client » permet de récupérer une adresse IP auprès d’un serveur DHCP mais il permet aussi de faire les mises à jour dynamiques DNS !
Je rappelle que la zone DNS correspondant à un domaine Active Directory contient des enregistrement qui permettent :
- Aux stations de travail de localiser un contrôleur de domaine
- Aux contrôleurs de domaine de répliquer entre eux.
Ces enregistrements sont générés dynamiquement par les contrôleurs de domaine Active Directory.
Si vous désactivez le service « DHCP Client » sur un contrôleur de domaine, vous risquez de gros problèmes (de réplication Active Directory…).
Je vous invite donc à consulter les articles suivants avant de faire ce type de personnalisation :
http://support.microsoft.com/kb/264539/en-us
http://support.microsoft.com/kb/306602/en-us
Remarque :
- Si le « DHCP Client » est arrêté, on a le message « Error: The system cannot find the file specified » quand on fait un ipconfig /registerdns.
- Le service « DNS client » gère en fait la fonctionnalité du cache DNS. Pour plus d’informations, voir :
http://support.microsoft.com/kb/318803/en-us

2. Ne pas arrêter le service « TCP/IP NetBIOS Helper » :
J’ai récemment rencontré ce problème sur une station de travail d’un VIP. Ce dernier était administrateur de sa machine. Il voulait optimiser les performances de son poste et a donc décidé d’arrêter plusieurs services (stupidité rare…).
Je rappelle que le service « TCP/IP NetBIOS Helper » intègre la fonctionnalité de client DFS. Si ce service est arrêté, je ne peux donc plus accèder aux racines DFS.
Les GPO et les script de login ne s’appliquent plus car je ne peux pas non plus me connecter à \\nbomdomainedns.local\netlogon et \\nbomdomainedns.local\sysvol (ce sont des MAP DFS systèmes…).
Je vous invite à lire l’article Microsoft suivant :
http://support.microsoft.com/kb/887303/en-us
Il n’est plus possible non plus de joindre une machine Windows XP au domaine (pas testé encore avec Windows Seven…).

3. Ne pas arrêter le Security Center (wscsvc) :
C’est déjà moins grave que les deux précédents.
Sous Windows Seven, je vous invite à configurer les paramètres de l’Action Center pour que ce dernier ne remonte plus d’infos bulles dans la configuration standard.
Chez un de mes clients, l’Action center ne remonte un warning que lorsque l’antivirus est arrêté sur la station de travail ou que le pare feu est désactivé.

4. Ne pas arrêter le service « Windows Firewall » :
Si vous souhaitez désactiver le pare feu Windows, désactiver le pare feu pour les 3 profils (domaine, public et privé). N’arrêter pas le service « Windows Firewall » car ce dernier intègre des règles internes qui permettent de limiter les accès des comptes de services comme « Local Service ». Pour plus d’informations :
http://technet.microsoft.com/en-us/library/ee126090(WS.10).aspx
http://www.techrepublic.com/article/windows-vistas-service-hardening-adds-a-valuable-layer-of-protection/6143915

Si vous le souhaitez, vous pouvez par contre redémarrer le service « Computer Browser » sur les serveurs Windows 2008 / 20908 R2 voir sur les stations de travail WIndows Vista / Seven.
En effet ce service permet d’accéder et de générer le voisinage réseau.
Si les utilisateurs n’utilisent pas le voisinage réseau, le laisser désactiver sur les stations de travail.
Sur les serveurs, je préconise de le redémarrer ( sur le contrôleur de domaine Emulateur PDC et sur deux autres contrôleur de domaine) si vous avez des stations de travail Windows XP (par défaut) et WIndows Vista / seven avec ce service de démarré.
En effet, je rappelle que le « MASTER Browser » (machine qui génère la liste de machines du voisinage réseau) est élu et que cela génère beaucoup de trafic réseau. Mieux vaut éviter que ce soit un ordinateur portable sous Windows XP Pro qui gagne l’élection. On risque d’avoir plusieurs dizaines d’élections par jour dans ce cas (si la personne se déconnecte du réseau très souvent).

A+
Guillaume MATHIEU
PROSERVIA
Le bonheur c’est le partage.
http://msreport.free.fr

Publié dans Browsing, DHCP, Dns, GPO, Pare feu, Réseau, Sécurité, Système, Troubleshouting, Windows 2000 Pro, Windows 2000 Server, Windows 2003 Server, Windows Server 2008, Windows Server 2008 R2, Windows Seven, Windows Vista, Windows XP | Marqué avec , , , , , , | Un commentaire

Retour d’expérience sysprep -> « A fatal error occurred while trying to sysprep the machine » and how to personnalize the default profile

Bonjour

J’ai récemment travaillé sur la préparation d’un master Windows Seven.
Dans ce cadre, j’ai rencontré deux problèmes :
- Impossible de personnaliser le profil par défaut.
- Quand je lançais l’utilitaire SYSPREP, je rencontrais le message d’erreur suivant : « A fatal error occured while trying to sysprep the machine ».

Pour le problème de personnalisation, j’ai rapidement trouvé l’article Microsoft suivant :
http://support.microsoft.com/kb/973289/en-us
En effet il n’est plus possible de modifier un profil et de le copier dans le profil par défaut. En effet le bouton « Copy to » est grisé dans ce cas.

Pour le message d’erreur, cela a été un peu plus long. J’ai tout d’abord trouvé cet article Microsoft :
http://support.microsoft.com/kb/929828/en-us. Cependant, je n’étais pas dans ce cas.
Il s’agit en fait d’un bug. Pour contourner le problème, il faut arrêter le service « Windows Media Player Network Sharing Service » (wmpnetwk.exe). Pour cela, on peut exécuter la commande suivante :
Net stop WMPNetworkSvc
Merci à l’administrateur de ce site :
http://www.swishertech.com/blog5.php/…/-to-sy-7

A+
Guillaume MATHIEU
PROSERVIA
Le bonheur, c’est le partage.

Publié dans Maquette, Système, Windows Server 2008, Windows Server 2008 R2, Windows Seven, Windows Vista | Marqué avec , , , , | 2 commentaires

Présentation et retour d’expériences ActiveRoles For Server

Salut à tous

J’ai récemment travaillé sur le déploiement de la solution Quest  ActiveRoles for Server.

PRESENTATION DU PRODUIT :
ActiveRoles For Server (ARS pour les intimes) est une solution complète pour gérer une architecture d’annuaire Active Directory Domain Services (Active Directory) et Active Directory Application Services (ADAM).
Très concrètement, l’outil apporte de nombreuses fonctionnalités supplémentaires par rapport aux outils d’administration natifs Microsoft (Utilisateurs et ordinateurs Active Directory et Centre d’administration Active Directory).
Ci-dessous quelques fonctionnalités que j’ai mises en production chez les clients :
- Les groupes dynamiques : ajout d’une ressource à un groupe selon la valeur d’un attribut. Je l’ai mis en production pour donner accès à l’Intranet pour tous les  utilisateurs internes de la société. Les prestataires ne devaient pas accéder à l’Intranet (utilisation de l’attribut EmployeeType).
- Les groupes temporaires : ajout d’un objet à un groupe pour une durée de temps limitée. Je l’ai utilisé pour des utilisateurs qui devaient accéder pendant un  mois à des documents confidentiels.
- Les flux d’approbation (workflows) : une ou plusieurs personnes doivent valider ou non certaines actions effectuées sur l’annuaire par d’autres personnes.  Chez un de mes clients, toutes actions effectuées sur un compte utilisateur déclenchait l’envoie d’un mail à cet utilisateur.
- Une console web personnalisable : l’outil est livré avec une console MMC (très difficilement personnalisable) et avec une console web. Cette dernière peut être totalement personnalisée (modifications des formulaires de gestion des objets, ajouts de commandes…). Prenons le cas d’une entreprise qui utiliserait l’ExtensionAttribute1 pour définir un définir le numéro d’employé de chaque salarié. Cet attribut n’est pas présent pas défaut dans la console Utilisateurs et ordinateurs Active Directory.  De plus le nom du champ (Attribut étendu 1) dans cette console n’est pas des plus parlant. Pas de problème avec l’interface web.
- Historique des actions effectuées sur un objet ou par un compte utilisateur : les responsable seront ravis de pouvoir retrouver la personne qui a effectuée tel s ou tels actions sur l’annuaire. Attention pour cela, il est important de déléguer les droits d’administration de l’annuaire qu’au travers d’ActiveRoles for Server. Les personnes en charge de l’administration de l’annuaire doivent avoir aucun accès via les outils natifs Microsoft (ne pas répliquer les permissions ARS dans l’annuaire Active Directory).
- Les policies (stratégies) : Quel DSI n’a pas rêvé d’avoir un annuaire à jour avec des informations fiables et respectueuses du formalisme validé après de trop nombreuses réunions ? Avec les policies, vous pouvez obliger les équipes en charge de la gestion de l’annuaire à saisir certains champs avec un formalisme particulier (numéro de téléphone au format international, nom de famille en majuscule, champ société et adresse complétés…).
ActiveRoles Server permet via le module « Script Policies » d’exécuter des scripts VBS / PowerShell avant ou après la saisie (entre autres) d’un formulaire. Rien ne vous empêche de configurer automatiquement les accès aux applications lors de la création d’un compte utilisateur (provisionning).
ActiveRoles Server dispose aussi de la fonction de « déprovisionning » qui va nous permettre de définir un certains nombres de tâches à effectuer automatiquement quand on veut supprimer des accès à une personne (le compte peut être désactivé, exécution d’un script qui va supprimer des accès aux niveaux d’une application…).
- La dernière fonctionnalité que j’ai mise en place qui est de loin la plus importante reste la délégation d’administration. ActiveRoles Server permet de déléguer des droits au niveau ActiveRoles Server sans déléguer des droits au niveau l’Active Directory. L’intérêt d’est pouvoir faire déléguer des droits de manière très précise sans impacter les logiciels qui s’appuient sur l’annuaire.
Vous pouvez par exemple empêcher les utilisateurs HELPDESK de voir les unités d’organisation contenant leurs comptes utilisateurs dans ARS sans les empêcher de s’authentifier.

RETOURS D’EXPERIENCES :
Comme nous venons de le voir, le produit semble plutôt sympathique.
Cependant, je l’ai trouvé tout particulièrement difficile à déployer (gare aux bugs ou aux fonctionnalités limitées). Vous trouverez ci-dessous quelques retours d’expérience sur ce produit.

Retour d’expérience 1 : performance de l’outil
Attention, ARS est assez gourmant. Prévoir un serveur puissant au niveau I/O disque surtout si la base de données est installée localement. Je trouve parfois la console web poussive. Je vous invite donc à utiliser à la fois la console web (surtout pour les opérations avec des attributs Active Directory non standards) et la console MMC pour toutes autres opérations.

Retour d’expérience 2 : installation
Penser à séparer la base de données de l’historique, de la base de données de configuration. C’est une case à cocher lors de l’installation.
Le déploiement du serveur de rapport est  complexe (il faut quelques connaissances SQL Server).
Pour le déploiement d’ActiveRoles for Server 6.5, le compte utilisateur pour la liaison ODBC doit être SYSADMIN au niveau du serveur SQL.  Je pense que votre administrateur base de données SQL Server ne va pas être très content.
Je vous préconise aussi le déploiement des patchs suivants pour ActiveRoles For Server 6.5 :
https://support.quest.com/SUPPORT/index?page=solution&id=SOL60633
https://support.quest.com/Search/…Solutions&SKB=1

Retour d’expérience 3 : Intégration avec Exchange
Attention, de base ActiveRoles for Server n’intègre pas les commandes Exchange.
Pour disposer de ces commandes, il faut installer les outils d’administration Exchange sur le serveur ActiveRoles for Server. Il faut que la version de service pack / rollup des outils Exchange soit la même que sur le serveur Exchange, sinon gare aux bugs.
Pour que le MOVE-MAILBOX fonctionne, il faut que le compte de service soit le même que le compte de connexion au domaine (et un compte de service qui tournent avec des droits administrateur du domaine…) .
Plus grave,  les stratégies d’adresse de messagerie ne sont pas réappliquées quand on modifie un champ d’un groupe ou d’un compte utilisateur.  J’ai Paul qui passe d’une entité A à l’entité B de la société. Je change le champ « Département ». Normalement, mon adresse SMTP devrait changer.  Pas avec ActiveRoles for Server !  Et un script de POST EXECUTION à écrire !
http://activeroles.inside.quest.com/thread.jspa?messageID=13632
http://wiki.activeroles.inside.quest.com/…28or_group%29_email_address_in_pure_Exchange_2007_organization

Retour d’expérience 4 : les policies lorsque l’on modifie un objet
Un scandale à mon humble avis ou du gâchis je vous laisse choisir !
Les policies que l’on génère via l’assistant graphique ne fonctionnent que pour la création d’objet, pas pour la modification !
Pour appliquer une policy ActiveRoles for Server sur une action de modification, il faut écrire un script et configurer une policy de type « Script Execution ».
Voilà pourquoi un déploiement ActiveRoles for Server est toujours long !
Il existe heureusement quelques exemples de script sur le Script Center ActiveRoles for Server :
http://wiki.activeroles.inside.quest.com/index.php/Script_Center

Ci-dessous quelques exemples de script qui permettent de compléter les champs adresses d’un compte lors qu’un utilisateur sélectionne une liste déroulante (un attribut virtuel appelé edsva_site) :
La ligne suivante  Comp=Request.Get(« edsva_site ») permet d’obtenir la valeur saisie par l’utilisateur pour le champ edsva_site.
Sub onPostModify(Request)
  If Request.Class <> « user » Then Exit Sub 
  Comp=Request.Get(« edsva_site »)
  If Comp = « MSREPORT France » Then
    DirObj.put « streetAddress », « 8 route des Gardes 92190″
    DirObj.put « l », « Meudon »
    DirObj.put « postalCode », « 92190″
    DirObj.put « c », « FR »
    DirObj.setinfo
  End If
  If Comp = « PROSERVIA France » Then
    DirObj.put « streetAddress », « Bureau des collines » & vbCrLf & « (ancienne adresse) »
    DirObj.put « l », « SAINT CLOUD »
    DirObj.put « postalCode », « 92310″
    DirObj.put « c », « FR »
    DirObj.setinfo
  End If
End Sub

Même principe mais avec le champ “page web” :
Sub onPostModify(Request)
  DirObj.put « wWWHomePage », “msreport.free.fr »
  DirObj.setinfo
End Sub

Retour d’expérience 5 : délégation d’administration :
Attention à ne pas faire de chose trop complexe. Il faut maitriser les notions avancées de la délégation Active Directory pour s’en sortir.
Attention, il n’est pas possible de créer un Managed Unit qui se base sur une autre Managed Unit !

Retour d’expérience 6 : personnalisation de la console web :
On oublie la modification de la console MMC ActiveRoles for Server. Il faut compiler des choses et ça va trop loin pour moi…
La personnalisation de la console web est assez simple. Cependant l’ajout d’attribut en français est impossible (bug !).  Il faut passer en anglais !
Penser à bien recharger le site web après chaque modification sinon gros risque de problème.

Retour d’expérience 7 : problème avec les workflows par défaut :
Désactiver les deux workflows par défaut si vos utilisateurs ont un message d’erreur quand ils essaient d’ajouter des membres à un groupe créé via ARS.
Ce problème est lié à la gestion du propriétaire principal et secondaire !

Retour expérience 8 : erreur « Failed to move the object « Chemin LDAP de l’objet ». Administration Service encountered an error when moving the object « Chemin LDAP ». General access denied error :
Ce bug est lié à la mauvaise gestion de la « protection contre la suppression accidentelle » des objets. Cette option est activée par défaut quand on crée une unité d’organisation avec la console Utilisateurs et Ordinateurs Active Directory de Windows Server 2008 / 2008 R2.

Retour d’expérience 9 : erreur 500 Internal Server error au niveau du site web d’administration ActiveRoles For Server :
Le problème peut être reproduit ainsi :
On essaie d’accéder via les liens dans la console web à un objet auquel on n’a pas accès (une unité d’organisation par exemple). On a le message « erreur 500 Internal Server error. There is a problem with the resource you are looking for, and it cannot be displayed » avec une suite de caractères à faire peur.
Le problème provient du fait que le site web IIS est configuré pour afficher les erreurs réelles.
https://support.quest.com/Search/SolutionDetail.aspx?id=SOL61987&category=Solutions&SKB=1
Il faut le configurer le niveau d’erreur dans IIS et on a alors un message « Accès refusé » qui apparaît à la place.

CONCLUSION :
ActiveRoles for Server est un bon produit.
La non prise en charge des policies en interface graphique lors de la modification d’un objet complexifie le déploiement du produit et nécessite l’écriture de nombreux scripts cependant.
Attention, le mode de licence est par utilisateur.
Il est possible de configurer vos applications / scripts pour s’appuyer sur La base ARS via le provider ADSIEDIT et le produit Quest Management Shell for Active Directory (utiliser la commande Connect-QADService pour se connecter à la base ARS, voir Get-Help Connect-QADService –example).

A+
Guillaume MATHIEU
http://msreport.free.fr
Le bonheur c’est le partage.

Publié dans Active Directory, ActiveRoles for Server, Annuaire, Divers | Un commentaire

Complément d’informations sur les fichiers de modèles d’administration ADMX :

Salut à tous

J’ai travaillé récemment sur la problématique de la taille du répertoire SYSVOL.
Pour rappel le répertoire SYSVOL contient les GPO (sous dossiers Policies) et les scripts (partage NETLOGON). Le répertoire SYSVOL est répliqué sur tous les contrôleurs de domaine (via la réplication FRS ou DFS-R).
Ce problème de taille du SYSVOL se pose surtout pour des annuaires Active Directory de grande taille (des milliers de machines / comptes utilisateurs, plusieurs centaines de contrôleur de domaine / sites géographiques).
En effet dans ce type d’entreprise, on assiste souvent à une véritable prolifération de GPO.
L’administrateur locale de chaque site a en en effet tendance à créer ses propres objets GPO pour personnaliser la configuration de ses machines (serveurs proxy / WSUS spécifiques par exemple).
Il n’est donc pas rare de voir un dossier SYSVOL de 4 Go.
Quand l’on crée un nouveau contrôleur de domaine, on doit donc répliquer 4 Go. Cela peut être problématique si l’on dispose de sites reliés par des liaisons satellites.

Un des coupables : les fichiers modèles d’administration ADM.
Chaque objet de stratégie de groupe dispose de son propre sous dossier ADM. Ce dernier contient tous les modèles d’administration utilisés pour créer et paramétrer la GPO.
De base, un objet GPO a donc une taille de 4 Mo (si l’on a pas ajouté d’autres modèles d’administration).

Depuis Windows Vista / 2008, la console GPMC est capable de se baser sur un nouveau format de fichiers appelés ADMX/ADML (basés sur le XML).
Ces nouveaux modèles d’administration ADMX / ADML peuvent être stockés dans un emplacement centralisé au niveau du répertoire SYSVOL.
Chaque objet GPO pointe vers ce magasin centralisé.
Une GPO créée avec GPMC depuis une station Vista / Seven / 2008 / 2008 R2 se basent sur les fichiers ADMX et fait donc 4 Ko (au lieu de 4 Mo pour une GPO créée via une version de GPMC ne supportant que les fichiers ADM comme GMPC sous Windows XP Pro).

Pour plus d’informations sur les fichiers modèles d’administration ADMX.

http://msdn.microsoft.com/en-us/library/bb530196.aspx

http://www.laboratoire-microsoft.org/articles/les-fichiers-ADMX

Par défaut, il n’y a pas d’emplacement centralisé au niveau SYSVOL pour les fichiers ADMX.
Les contrôleurs de domaine se basent sur les fichiers ADMX présent dans C:\Windows\PolicyDefinitions.
Le document http://msdn.microsoft.com/en-us/library/bb530196.aspx fournit un pas à pas pour créer le dépôt centralisé pour les fichiers ADMX au niveau du répertoire SYSVOL.
La maquette suivante a été mise en place pour valider le bon fonctionnement des GPO basés sur les fichiers ADMX :
- 2 contrôleurs de domaine (DC) Windows 2003 R2
- 1 station de travail Windows XP Pro SP3.
- 1 serveur membre Windows 2008 R2.

Une GPO a été créée depuis le serveur membre 2008 R2 pour bloquer l’affichage du panneau de configuration dans le menu Démarrer.
Suite à la création de cette GPO, le répertoire correspondant au GUID de la GPO a été créé dans SYSVOL. Ce dernier fait 1,28 Ko (et non 4 Mo). Le sous répertoire ADM existait mais était vide.
La GPO s’appliquait correctement sur une station Windows XP Pro SP3 de tests.
Attention, si l’on édite (même sans faire de modifications) la GPO depuis la station XP / 2003 (avec GPMC ou la console Utilisateurs et Ordinateurs Active Directory) :
- Les fichiers modèles d’administration Windows Update / Windows Media Player au format ADM sont alors ajoutés dans le sous dossier ADM de la GPO.
- Seuls les paramètres Windows Update / Windows media sont visibles depuis un GPMC / console Utilisateurs et Ordinateurs Active Directory. Si on ajoute les fichiers ADM manquants, on peut alors visualiser les paramètres de GPO définis et les modifier. Les fichiers modèles ajoutés sont insérés dans le répertoire ADM de la GPO.

A savoir :
- Il existe un outil appelé ADMX Migrator qui permet de convertir les fichiers ADM en fichier ADMX.

http://www.laboratoire-microsoft.org/n/23265/

http://www.laboratoire-microsoft.org/logiciels/23264/

- Depuis Windows 2003, il est possible de faire un DCPROMO depuis un media de sauvegarde.

http://technet.microsoft.com/fr-fr/library/cc816722(WS.10).aspx

Pour pouvoir inclure SYSVOL (pas de réplication via le réseau), il faut que le contrôleur de domaine soit en Windows 2008 R2 et que le domaine soit en mode natif 2008 (réplication DFS-R obligatoire).

a+
Guillaume MATHIEU
Le bonheur c’est le partage.

Publié dans Active Directory, GPMC, GPO, Système, Windows 2003 Server, Windows Server 2008, Windows Server 2008 R2, Windows Vista, Windows XP | Marqué avec , , , , , , , | Laisser un commentaire

Migration des contrôleurs de domaine Active Directory vers Windows 2008 R2 -> 11 retours d’expériences

Salut à tous

J’ai récemment travaillé sur plusieurs projets de migration des contrôleurs de domaine Active Directory Windows 2003 Server vers Windows 2008 R2.
Cet article a pour but de vous présenter 10 retours d’expériences sur cette migration.

PROCÉDURE DE MIGRATION :
Pour rappel, la procédure de migration / remplacement des contrôleurs de domaine Windows Server 2003 par des contrôleurs de domaine Windows Server 2008 R2 est la suivante :
- Préparation du schéma (ajout nouveaux attributs / nouvelles classes…) : ADPREP /FORESTPREP
- Préparation du domaine : ADPREP /DOMAINPREP /GPPREP et ADPREP/RODCPREP
- Installation des nouvelles machines et DCPROMO pour ajouter ces machines en tant que contrôleurs de domaine dans un domaine existant.
- Migration des rôles FSMO / reprise des anciennes IP / migration des services réseaux.
- Suppression des anciens contrôleurs de domaine Windows Server 2003.
Et entre chaque étape / DCPROMO, une bonne sauvegarde de tous les contrôleurs de domaine avec votre outil de sauvegarde et l’outil de sauvegarde natif Microsoft (NTBACKUP / Windows Server Backup selon version). Toujours utiliser deux outils de sauvegarde pour l’annuaire. C’est trop critique !

Microsoft met à disposition sur Internet une procédure complète pour migrer ses contrôleurs de domaine vers Windows 2008 R2. Il y a aussi d’autres retours d’expériences dans ce document:
http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=fa629de2-f4dd-47ac-8d80-3db46b2877a2

Retour d’expérience 1 : Tester sa procédure de migration.
Pour cela, l’idéale est de dupliquer un contrôleur de domaine et de restaurer les services et applications qui s’appuient sur l’annuaire (EXchange / Office Communication Server / applications métiers) le tout dans un environnement de tests totalement isolé au niveau réseau.
Pour rappel avec Exchange, on peut restaurer un serveur en faisant setup /m:recoverser.
J’ai déjà abordé en détail ce point dans l’article suivant :

http://msreport.free.fr/?p=154

Retour d’expérience 2 : Propager les modifications du schéma progressivement.
Les mises à jour du schéma sont presque irréversibles (on peut désactiver les attributs mais bon).
En gros, on a pas trop le droit à l’erreur surtout quand on a 300 contrôleurs de domaine répartis dans le monde. Donc l’idée est de valider et de propager progressivement les modifications de schéma.
Voici la méthodologie que je préconise.
Quelques jours avant la mise à jour du schéma (le temps que tout réplique) :
- Créer un site dédié pour la phase de mise à jour de schéma :
- Déplacer 2 / 3 contrôleurs de domaine dans ce site (des machines virtuelles feront l’affaire).
- Configurer un lien de site pour que la réplication soit désactivée (on interdit la réplication à tout heure)
Avant de lancer la mise à jour du schéma, désactiver la réplication entrante et sortante sur le maître de schéma en tapant les commandes :
repadmin /options +DISABLE_OUTBOUND_REPL
repadmin /options +DISABLE_INBOUND_REPL

Une fois que la mise à jour du schéma est terminée, réactiver la réplication entrante / sortante sur le maître de schéma en tapant les commandes suivantes :
repadmin /options -DISABLE_OUTBOUND_REPL
repadmin /options -DISABLE_INBOUND_REPL

Les modifications sont propagées aux contrôleurs de domaine du site de TEST. Cela permet de valider que la réplication fonctionne toujours bien.
En cas de problème, c’est DCPROMO /FORCEREMOVAL et NTDSUTIL SEIZE ROLES pour transférer le rôle FSMO Maître de schéma et NTDSUTIL METADATA CLEANUP pour supprimer complètements les enregistrements du ou des contrôleurs de domaine de l’annuaire.

Retour d’expérience 3 : Incompatibilité entre le schéma Office Communication Server (OCS) et ADPREP /FORESTPREP :
Il y a un conflit entre le schéma Office Communication Server (OCS) et l’ADPREP WINDOWS 2008 R2.
Suite à l’ADPREP /FORESPREP, les services OCS ne redémarrent plus ! Rien que ça.
Pour plus d’informations : http://support.microsoft.com/kb/982020

Retour d’expérience 4 : ADPREP /FORESTPREP depuis le maître de schéma et antivirus désactivé.
On fait l’ADPREP /FORESTPREP sur le contrôleur de domaine qui joue le rôle de maître de schéma.
Penser à couper votre antivirus temps réel / détection de comportement. Cela évitera que l’injection LDIF soit considérée comme une attaque. J’ai déjà eu cette erreur lors d’un ADPREP /FORESTPREP chez un client (heureusement que c’était sur la maquette).

Retour d’expérience 5 : Échec ADPREP /RODCPREP :
ADPREP /RODCPREP peut échouer si vous avez forcer le transfert du rôle « Maître d’infrastructure » suite à la perte du contrôleur de domaine hébergeant ce rôle même si vous avez fait un NTDSUTIL METADATA CLEANUP.
Pour plus d’informations, voir http://support.microsoft.com/kb/949257/en-us
Le script ne marche pas forcément. Donc souvent je fais la modification directement avec ADSIEDIT. Il faut savoir saisir un schéma LDAP.

Retour d’expérience 6 : Problème avec les outils de migration ADMT / Quest Migration Manager suite à un ADPREP /RODCPREP :
Suite au passage de la commande adprep /rodcprep, il n’est plus possible de migrer une station de travail d’un domaine d’une autre forêt vers la forêt Windows 2008 R2.
Le message suivant apparaît :
ERR3:7075 Failed to change domain affiliation, hr=800704f1
The system detected a possible attempt to compromise security. Please ensure that you can contact the server that authenticated you.

Deux solutions :
- Déployer le patch sur toutes les stations de travail à migrer pour la prise en charge des RODC : http://support.microsoft.com/kb/944043/en-us
- Abaisser le niveau de sécurité du domaine : http://support.microsoft.com/kb/942564
Pour plus d’informations :

http://jaxtech.blogspot.com/2010/05/admt-failed-to-change-domain.html

http://blogs.technet.com/askds/archive/2009/10/19/admt-rodc-s-and-error-800704f1.aspx

Remarque :
Le patch http://support.microsoft.com/kb/944043/en-us doit être déployé sur tous les Windows antérieurs à 2008 / Vista pour une prise en charge correcte des RODC.

Retour d’expérience 7 : plus de déploiement des logiciels via NETLOGON / SYSVOL :
Lorsque que l’on essaie d’installer un logiciel via le partage NETLOGON, on a l’erreur suivante (même si on est logué avec un compte administrateur du domaine) :
« The installation package could not be opened »
Si on copie l’exécutable en local sur c:\ par exemple, cela fonctionne.
Ce problème ne se pose pas si on essaie d’installer le logiciel depuis un contrôleur de domaine antérieur à Windows Server 2008 R2.
Si on active les logs de Windows Installer (http://support.microsoft.com/kb/314852), on voit l’erreur 1619.
=== Verbose logging started: 04/10/2010  19:08:26  Build type: SHIP UNICODE 3.01.4001.5512  Calling process: C:\WINDOWS\System32\msiexec.exe ===
MSI (c) (40:E4) [19:08:26:269]: Resetting cached policy values
MSI (c) (40:E4) [19:08:26:269]: Machine policy value ‘Debug’ is 0
MSI (c) (40:E4) [19:08:26:269]: ******* RunEngine:
******* Product: \\formation10.lan\NETLOGON\install_flash_player_10.1.53.64_plugin.msi
******* Action:
******* CommandLine: **********
MSI (c) (40:E4) [19:08:26:269]: Note: 1: 2203 2: \\formation10.lan\NETLOGON\install_flash_player_10.1.53.64_plugin.msi 3: -2147287035
MSI (c) (40:E4) [19:08:26:269]: MainEngineThread is returning 1619
=== Verbose logging stopped: 04/10/2010  19:08:26 ===

Le problème provient du fait qu’on ne peut plus faire un accès exclusif sur le partage NETLOGON avec Windows 2008 R2. On ne peut donc plus utiliser NETLOGON comme emplacement pour déployer des logiciels. Il faut utiliser un partage réseau classique ou une cible DFS.
Ce problème se posait déjà avec SYSVOL et les contrôleurs de domaine Windows 2003.

http://support.microsoft.com/kb/889710

Pour plus d’informations sur le déploiement des applications via GPO\Configuration Ordinateur :

http://forums.techarena.in/active-directory/914815.htm

Retour d’expérience 8 : Plus possible de se loguer en Citrix suite à la mise à jour des contrôleurs de domaine vers Windows Server 2008 R2 :
Suite à la migration des contrôleurs de domaine vers Windows 2008 R2, les utilisateurs ne peuvent plus se connecter à Citrix. Le serveur Terminal Server n’arrive plus à émettre de licences Terminal Server par utilisateur.
Avec des contrôleurs de domaine Windows 2008 R2, il y a de nouveaux attributs au niveau du compte utilisateur qui sont utilisés par le groupe « Serveur de licence terminal Server ». Hors ce dernier n’a pas le droit d’écrire dans ces attributs pour des comptes créés avant la migration. Pas de problème avec les comptes créés après la migration. Pour plus d’informations, se référer à l’article suivant :
http://msreport.free.fr/?p=190
http://support.microsoft.com/kb/2030310

Retour d’expérience 9 : Rappelez vous que Windows Server 2008 R2 n’existe qu’en version 64 bits.

Si vous avez des machines virtuelles Vmware ESX, rappelez vous que vous avez besoin d’IntelVT pour activer la possibilité de créer des machines virtuelles 64 bits avec des processeurs Intel.

Retour d’expérience 10 : Quelques changements dans les outils de sauvegarde :
Attention, la taille d’une sauvegarde du système State avec Windows 2008 R2 est de 7 Go.
En effet le SYSTEMSTATE sous Windows 2008 / Windows 2008 R2 intègre un élément qui s’appelle le SYSTEMFILE qui recopie la majorité des fichiers de c:\windows\system32.
Pour rappel, Windows Server backup ne sait pas faire de sauvegarde sur lecteur LTO4. Par contre il sait faire de la déduplication.

Retour d’expérience 11 : Les quelques réglages à faire sur Windows Server 2008 R2 :
Les stations de travail Windows Vista / Seven / 2008 / 2008 R2 ne permettent plus le déploiement d’un logiciel via un partage accessible par les utilisateurs anonymes. Pour plus d’informations :

http://support.microsoft.com/kb/2022222

http://www.petri.co.il/how-to-disable-smb-2-on-windows-vista-or-server-2008.htm

Attention si les DC sont aussi serveurs d’impression, on a des problèmes pour mapper les imprimantes quand on utilise un alias DNS pour se connecter au serveur d’impression. Pour plus d’informations :

http://msreport.free.fr/?p=191

Attention l’UAC peut bloquer l’exécution de certains scripts.
Le pare feu peut générer des problèmes avec les profils itinérants (la désactivation du pare feu sur un contrôleur de domaine Windows 2008 Server avait corrigé le problème de chargement d’un profil itinérant.
Pour utiliser les GPO de préférence, il faut déployer le patch KB 943729 sur les stations Windows XP / 2003 / Vista. Pour plus d’informations :

http://msreport.free.fr/?p=82

A+
Guillaume MATHIEU
Le bonheur, c’est le partage.

Publié dans Active Directory, ADMT, Annuaire, Bug, Migration, Scripts, Troubleshouting, Windows Server 2008 R2 | Marqué avec , , , , , , , | 3 commentaires

Problèmes alias DNS et imprimantes sous Windows 2008 R2 -> Operation could not be completed (error 0×00000709)

Salut à tous

Juste un petit article pour vous parler d’un bug rencontré avec les alias DNS sous Windows 2008 R2 et les imprimantes.
 
DESCRIPTION DU PROBLEME :
Mon client souhaitait utiliser des noms génériques pour le mappage de ses imprimantes sur les serveurs et les stations de travail.
Je rappelle à tous que l’on ne peut pas accéder aux partages de fichiers et d’imprimantes via un alias DNS (message d’erreur « nom réseau en double ») sans ajouter la valeur de registre DisableStrictNameChecking sur le serveur de partage de fichiers / imprimantes. Pour plus d’informations, voir :
http://msreport.free.fr/?p=87
http://support.microsoft.com/kb/281308

Avec Windows 2008 R2 (une fois la clé DisableStrictNameChecking définie), l’accès aux partages de fichiers / imprimantes est fonctionnel mais il n’est plus possible d’ajouter des nouvelles imprimantes avec un alias DNS. On obtient le message d’erreur suivant :
« Operation could not be completed (error 0×00000709). Double check the printer name and make sure that the printer is connected to the network« . Au niveau des observateurs d’événements sur le serveur d’impression, le message d’erreur apparaît à chaque tentative d’ajout d’une imprimante via un alias DNS depuis une station de travail :
Nom du journal :System
Source :       LsaSrv
Date :         19/07/2010 11:57:53
ID de l’événement :6037
Catégorie de la tâche :Aucun
Niveau :       Avertissement
Mots clés :    Classique
Utilisateur :  N/A
Ordinateur :   print.msreport.local
Description :
Le programme spoolsv.exe, avec l’ID de processus 1152, n’a pas pu s’authentifier localement à l’aide du nom de cible host/print.msreport.local. Le nom de cible utilisé n’est pas valide. Un nom de cible doit faire référence à l’un des noms d’ordinateurs locaux, par exemple, le nom d’hôte DNS.
Essayez un autre nom de cible.

SOLUTION :
Il faut en fait ajouter la clé DnsOnWire sur un serveur Windows 2008 R2 pour pouvoir se connecter à une imprimante avec un alias DNS. Pour cela, taper la commande suivante :
reg add HKLM\SYSTEM\CurrentControlSet\Control\Print /v DnsOnWire /t REG_DWORD /d 1

Pour plus d’informations :
http://support.microsoft.com/kb/979602
http://social.technet.microsoft.com/Forums/en-US/winserverprint/thread/00eeb192-d03a-4d1b-9066-427fc678ae97

a+
Guillaume MATHIEU
Le bonheur, c’est le partage.

Publié dans Bug, Imprimantes, Troubleshouting, Windows Server 2008 R2 | Un commentaire

Migration AD2003 vers AD2008 R2 -> problème licences TSE, Source Microsoft-Windows-TerminalServices-Licensing EventID 4105

Salut à tous
J’ai rencontré un bel incident suite au remplacement de contrôleurs de domaine Windows 2003 par des contrôleurs de domaine Windows 21008 R2 (via update de schéma + DCPROMO + DCPROMO INVERSE).

DESCRIPTION DU PROBLEME :
Suite à la migration des contrôleurs de domaine Windows 2003 R2 vers Windows 2008 R2, certains utilisateurs n’arrivaient plus à se connecter sur les serveurs Terminal Server. Les messages d’erreurs suivants remontaient au niveau du serveur de licences TSE.
Log Name:      System
Source:        Microsoft-Windows-TerminalServices-Licensing
Date:          23/07/2010 11:51:30
Event ID:      4105
Task Category: None
Level:         Warning
Keywords:      Classic
User:          N/A
Computer:      lic.msreport.local
Description:
The Remote Desktop license server cannot update the license attributes for user « guillaume mathieu » in the Active Directory Domain « msreport.local ». Ensure that the computer account for the license server is a member of Terminal Server License Servers group in Active Directory domain « msreport.local ».
If the license server is installed on a domain controller, the Network Service account also needs to be a member of the Terminal Server License Servers group.
If the license server is installed on a domain controller, after you have added the appropriate accounts to the Terminal Server License Servers group, you must restart the Remote Desktop Licensing service to track or report the usage of RDS Per User CALs. Win32 error code: 0×80070005

Sur le serveur TSE, l’erreur suivante était présente :
Nom du journal :System
Source :       Microsoft-Windows-TerminalServices-RemoteConnectionManager
Date :         23/07/2010 12:10:04
ID de l’événement :1004
Catégorie de la tâche :Aucun
Niveau :       Information
Mots clés :    Classique
Utilisateur :  N/A
Ordinateur :   tse.msreport.local
Description :
Le service Terminal Server ne peut émettre une licence client.  Cela peut être dû à une modification de licence de client ne correspondant plus, à un manque de mémoire ou à une erreur interne. Il se peut que d’autres informations à ce sujet aient été affichées sur l’ordinateur du client.

SOLUTION :
Le problème provenait du fait qu’en schéma Windows 2008 R2, 3 nouveaux attributs gèrent les licences CALL TSE par utilisateur.
Hors par défaut pour les utilisateurs créés avec une MMC 2003, le groupe « Serveurs de licences TSE » n’a pas les droits pour écrire au niveau de ces attributs.
La solution consiste à utiliser l’assistant délégation d’administration pour déléguer aux groupes « Serveurs de licences TSE » les droits :
- Read Terminal Server license server
- Write Terminal Server license server

Merci à Microsoft de corriger ce bug car cela devrait être géré par la commande ADPREP /DOMAINPREP.

Pour plus d’informations
http://social.technet.microsoft.com/Forums/en-US/winserverTS/thread/1dc6a51e-c204-4323-95f9-e77abe3bad85
http://support.microsoft.com/kb/2030310

A+
Guillaume MATHIEU
Le bonheur, c’est le partage.

Publié dans Active Directory, Bug, Migration, Terminal Server, Troubleshouting, Windows 2003 Server, Windows Server 2008, Windows Server 2008 R2 | Un commentaire

Complément d’informations sur « Error while importing option « 15″.This option conflicts with the existing option «  » An internal error occured ».

Salut à tous

Juste un petit article pour vous donner une solution de contournement à un problème que j’ai rencontré suite à la migration d’un serveur DHCP Windows 2003 FR vers Windows 2008 R2 US.
Mon client disposait d’une dizaine de plages DHCP. Afin d’économiser du temps, je pensais utiliser la commande NETSH pour exporter puis réimporter la configuration.
Pour plus d’informations sur cette procédure, voir l’article Microsoft suivant :
http://support.microsoft.com/kb/281626

DESCRIPTION DU PROBLEME :
Lorsque que j’ai essayé d’importer la configuration de mon serveur DHCP, le message d’erreur suivant est apparu :
« Error while importing option « 15″.
This option conflicts with the existing option «  » An internal error occured
« .

SOLUTION DE CONTOURNEMENT :
Le problème se pose quand on essaie de migrer d’un serveur DHCP FR vers un serveur DHCP US.
Pour contourner le problème, il suffit en fait d’exporter/importer une à une des plages DHCP.
Pour cela, il faut taper la commande suivant (pour exporter/importer la plage 10.0.0.0) :
netsh dhcp server export c:\dhcpd 10.0.0.0
netsh dhcp server import c:\dhcpd 10.0.0.0

Remarque :
Penser à autoriser le nouveau serveur DHCP si ce dernier est membre du domaine ou contrôleur de domaine.

a+
Guillaume MATHIEU
Le bonheur, c’est le partage.

Publié dans Bug, DHCP, Système, Troubleshouting, Windows 2003 Server, Windows Server 2008, Windows Server 2008 R2 | 4 commentaires

Déploiement d’un cluster HYPER-V -> retour d’expériences et problèmes rencontrés

Salut à tous. j’ai récemment travaillé sur le déploiement d’un cluster HYPER-V.
Cet article présente les retours d’expérience et problèmes rencontrées lors du déploiement. Bonne lecture.

Retour d’expérience 1 : architecture logicielle :
La première étape avant même de commencer est de déterminer quels sont les logiciels / serveurs physiques que l’on va pouvoir virtualiser. Certains éditeurs / solutions ne supportent pas la virtualisation ou que partiellement. Oracle par exemple ne supporte pas que l’on virtualise ses serveurs de bases de données avec Vmware ESX ou Hyper-V (seule la solution maison Oracle VM est supportée).
L’article ci dessous liste les applications Microsoft qui peuvent être hébergée sur des serveurs virtualisés :
http://support.microsoft.com/kb/957006/en-us
Attention, si vos logiciels s’appuient sur les fonctions des cartes 3D, passer votre chemin ou attendre le SP1 de Windows 2008 R2 (fin d’année 2010) qui apportera le support de l’accélération 3D.
Pour rappel, la virtualisation des contrôleurs de domaine est supportée. Cependant je vous préconise de conserver un contrôleur de domaine (jouant le rôle d’Emulateur PDC, de serveur de catalogue et de serveur DNS) en tant que serveur physique. HYPER-V a besoin du DNS pour fonctionner correctement. Comme les cluster HYPER-V sont membres du domaine, il faut qu’au moins un DC soit acessible si le cluster redémarre (arrêt électrique).

Retour d’expérience 2 : architecture matérielle
Il faut ensuite définir et valider son architecture matérielle.
Pour bénéficier des fonctions avancées d’Hyper-V, Live Migration (équivalent de VMOTION), haute disponibilité (équivalent de Vmware HA), il faut installer HYPER-V en cluster. HYPER-V se positionne alors en concurrent de Vmware vSphere Advanced.
Cette configuration suppose donc que les machines virtuelles soient hébergées sur un SAN.
Il sera donc nécessaire de valider la compatibilité de votre SAN et de vos serveurs. Pour cela, consuler le Windows Server Catalogue :
http://www.windowsservercatalog.com/svvp.aspx
http://www.windowsservercatalog.com/item.aspx?idItem=fcdc0b4f-2c69-d320-d71b-8d137daea084&bCatID=1282
Lors de la mise en place du cluster, l’assistant de validation se lance.
Pour que le cluster soit supporté et fonctionnel, il faut que cet asssistant n’affiche aucun avertissement ou erreur.
Remarque :
- Pour valider la configuration du cluster, mettre tous les disques (LUN de la baie) OFFLINE. Cela permettra à l’assistant de faire les tests de validation de bascule des disques.

Au niveau de la configuration matérielle, je vous préconise de :
- D’équiper les serveurs Hyper-V avec le maximum de mémoire : Hyper-V ne gère pas les mécanimes de déduplication mémoire (contrairement à Vmware ESX). Si l’on dispose de 16 Go de mémoire, on pourra au mieux lancer 14 VM de 1 Go (en laissant 2 Go pour le système). La fontionnalité de déduplication mémoire sera incluse dans le SP1 de Windows Server 2008 R2.
- D’équiper vos serveurs avec au moins 8 cartes réseaux si vous faites de l’ISCSI.
   2 cartes réseaux pour le stockage (MPIO).
   2 cartes réseaux pour le Lan (en Teaming).
   1 carte réseau pour le HeartBeat.
   2 carte réseau pour le CSV (Team).
   1 carte réseau pour Live Migration.
- Mettre à jour les BIOS / Firmware de vos serveurs : Windows 2008 R2 est un produit récent. Les serveurs achetés avant la sortie de l’OS ne sont donc pas forcément compatibles. J’ai eu des problèmes de production du fait de serveurs dont la version du BIOS ne supportait pas Windows Server 2008 R2 (carte réseau très longue pour se connecter, erreur avec le Teaming…).

Pour rappel, Microsoft ne supporte pas officiellement le Teaming. J’ai rencontré de nombreux problèmes avec les cartes BROADCOM (même avec le BASP en version 3.0). Avec les cartes Intel, pas de soucis par contre. Pour plus d’informations, voir :
- http://support.microsoft.com/kb/968703/en-us
- http://www.mvug.co.uk/blogs/mvugblog/archive/2009/01/25/ broadcom-nic-teaming-and-hyper-v.aspx
- http://h20000.www2.hp.com/bc/docs/support/ SupportManual/c01663264/c01663264.pdf
- http://poleexpertise.canalblog.com/archives/2009/ 03/11/12927930.html
- http://www.slideshare.net/baudras/techdays-hyper-v-in-depth-v2
- http://www.canalblog.com/tag/posts/Hyper-V/page/8/
- http://www.slideshare.net/baudras/techdays-hyper-v-in-depth-v2
- http://www.microsoft.com/windowsserver2008/en/us/hyperv-faq.aspx
- http://www.mvug.co.uk/blogs/mvugblog/archive/2009/01/25/ broadcom-nic-teaming-and-hyper-v.aspx
- http://www.broadcom.com/support/ethernet_nic/netxtremeii.php

Retour d’expérience 3 : Préparer les noeuds :
Contrairement à Vmware ESX, Microsoft n’intègre pas de pilotes certifiés et spécifiques à Hyper-V.
Si le pilote est certifié Windows Server 2008, ce dernier est supporté par Hyper-V.
Hors pour configurer un noeud, il faut :
- Installer tous les pilotes constructeurs
- Installer tous les logiciels pour gérer le stockage.
- Installer l’antivirus
- Installer solution de sauvegarde.
- …
En production, j’ai rencontré des problèmes avec les outils de stockage NETAPP (Windows Host Update Utility, DSM NETAPP et SNAP DRIVE). Lorsque j’installais tous les composants NETAPP et que j’installais ensuite le rôle Hyper-V, l’installation du rôle Hyper-V échouait. L’installation se relançait trois fois puis un message comme quoi l’installation du rôle HYPER-V avait échoué s’affichait. J’ai finalement utilisé les pilotes de stockage / MPIO natif Microsoft et le problème a disparu. Pour plus d’informations, voir :
http://technet.microsoft.com/fr-fr/library/ee619752(WS.10).aspx
Je préconise donc d’installer en dernier le rôle d’HYPER-V. Cela permet de valider que tout fonctionne bien. Ce qui est étrange, c’est que j’ai appliqué à la lettre les BEST PRACTICE d’installation NETAPP.

Pour la configuration des noeuds, je préconise aussi la lecture des documents suivants :
- http://media.netapp.com/documents/tr-3733.pdf
- http://blogs.netapp.com/msenviro/2010/01/hyper-v-cluster- networking-best-practices-part-two.html
- http://technet.microsoft.com/en-us/library/cc725775.aspx
- http://blogs.netapp.com/msenviro/hyper-v/
- https://support.dell.com/support/edocs/software/ HyperV/en/sov/sova00.pdf
- https://support.dell.com/support/edocs/software/ HyperV/en/ssg/ssga00.pdf
- http://poleexpertise.canalblog.com/archives/2009/ 03/11/12927930.html
- http://h20000.www2.hp.com/bc/docs/support/ SupportManual/c01663264/c01663264.pdf
- http://www.aidanfinn.com/?p=10612

Au niveau de la configuration Windows Server 2008 R2, je préconise de :
- Désactiver UAC, pare feu, IPV6. Cela diminue le niveau de sécurité. Pour les plus expérimentées, dans le cas contraire, il faudra valider que toutes les exceptions nécessaires ont été configurés dans le pare feu.
- Désactiver le RSS et TCP CHIMMNEY en cas de problème réseau. Normalement cela n’est plus nécessaire avec Windows Server 2008 R2. Pour plus d’informations, http://support.microsoft.com/kb/951037/en-us

Retour d’expérience 4 : déploiement du cluster :
Pour déployer le cluster HYPER-V, j’ai appliqué les articles Microsoft suivants :
- http://support.microsoft.com/kb/943984
- http://technet.microsoft.com/fr-fr/library/ee619752(WS.10).aspx
- http://www.microsoft.com/downloads/details.aspx? FamilyId=CD828712-8D1E-45D1-A290-7EDADF1E4E9C&displaylang=en
- http://www.microsoft.com/downloads/details.aspx? FamilyId=89d80c15-0082-4fef-a4fc-fefa463bed08&displaylang=en
- http://social.technet.microsoft.com/wiki/contents/articles/ hyper-v-survival-guide.aspx (pleins de retours d’expérience).

Au niveau du nombre de cluster, éviter les nombres impairs. En effet pour que le cluster reste en ligne, il faut la majorité +1.
Hors avec un cluster trois noeuds la majorité est à 2.  Si l’on ajoute un partage témoin ou un disque témoin, la majorité passe à trois. On ne supporte alors que la défaillance d’un noeud ou du disque / partage témoin. C’est donc pire comme configuration. La console cluster affiche justement une alerte comme quoi le mode conseillée pour le quorum est Node majority avec 3 noeuds.
Pour un cluster avec un nombre pair de noeud, le mode conseillée est disque and node majority. Le disque doit faire ua minimum 512 Mo (1 Go conseillé).

Retour d’expérience 5 : Déplacement des machines virtuelles d’un serveur HYPER-V autonome vers un cluster.
Le moins que l’on puisse dire c’est que c’est pas simple. Il faut passer par la fonction d’exportation et d’importation. Vivement un équivalent du « Fichier » | Ouvrir (fichier VMX) de Vmware.
Pire l’exportation vers un emplacement réseau échoue si la machine est en groupe de travail.
Si la machine cible est dans un domaine, il faut appliquer les préconisations de l’article suivant :
- http://support.microsoft.com/kb/2008849
Le plus simple, installer SYSTEM CENTER VIRTUAL MACHINE MANAGER (en version d’évalusation si nécessaire).

Pour plus d’informations :
- http://blogs.technet.com/virtualization/archive/2009/05/29/hyper-v-r2 -import-export-part-6-so-what-happened-to-configuration-only-export.aspx
- http://blogs.msdn.com/virtual_pc_guy/archive/2008/08/26/hyper-v-export- import-part-1.aspx
- http://msmvps.com/blogs/bradley/archive/2008/11/20/hyper-v-tips-and-tricks.aspx
- http://netapptips.com/2010/03/10/microsoft-cluster- failover-validation-network-configuration-troubleshooting/

Retour d’expérience 6 : configuration réseau pour l’ISCSI :
HYPER-V et l’ISCSI c’est pas simple. Le teaming n’est pas supporté. Il faut donc passer par le MPIO pour la tolérance de panne.
De plus le cluster Failover Service ne supporte pas que deux cartes réseaux soient dans le même sous réseau. On a un avertissement dans le cas contraire. Il faut donc configurer deux sous réseaux IP pour le réseau de stockage.

Retour d’expérience 7 : créer au moins deux LUN :
Avec les volumes CSV, on peut héberger les VM de différents serveurs Hyper-V sur le même LUN.
Auparavant on devait créer un LUN par VM (sinon en cas de bascule toutes les VM du LUN devaient basculer…).
Il ne faut pas cependant tomber dans le piège du LUN unique et créer un point unique de défaillance.
Une suppression de LUN accidentelle est si vite arrivée (j’ai eu le cas chez plusieurs de mes clients).
Faire au moins deux LUN dans deux volumes / raid group différents (si possible) voir sur deux LUN sur deux baies et répartissaient vos VM sur les 2 LUN (on répartit les rôles, on met pas tous ses DC sur le même LUN par exemple…).

Retour d’expérience 8 : exclusions antivirus :
Penser à configurer des exclusions au niveau de votre antivirus si vous ne voulez pas tout crasher et/ou avoir des mauvaises performances.
Penser à exclure les répertoires correspondants au volume CSV.
Pour plus d’informations :
- http://support.microsoft.com/kb/961804/en-us
- http://nicolask.wordpress.com/2010/05/21/anti-virus-real-time- scanning-exclusion-for-hyper-v/
- http://www.ditii.com/2010/03/29/improve-hyper-v-performance-with-configuring-antivirus-exclusions/

Retour d’expérience 9 : Patchs à déployer :
Windows Server 2008 vient de sortir. Il y a donc quelques bugs. Voici quelques patchs à déployer :
- http://support.microsoft.com/kb/975354/en-us
- http://support.microsoft.com/kb/975530/en-us
- http://support.microsoft.com/kb/974909/en-us
- http://support.microsoft.com/kb/974598/en-us
Vivement le SP1 pour les corrections de bugs et les nouvelles fonctionnalités (dédpublication mémoire et accélération 3D).

A+
Guillaume MATHIEU
PROSERVIA
La connaissance s’accroît quand on la partage.

Publié dans Hyper-V, Windows Server 2008 R2 | Marqué avec , , | 5 commentaires

Exchange 2007 -> Reconfiguration de l’accès OWA pour utiliser /Exchange

Salut à tous

J’ai récemment travaillé sur un projet de migration vers d’un serveur Exchange 2003 vers un serveur Exchange 2007 (avec les rôles HUB, CAS et MAILBOX).
Mon client accède à OWA depuis Internet en utilisant l’URL suivante https://nompublic.fr/exchange.
Hors une fois la migration terminée, mon client devra utiliser l’URL suivante : https://nompublic.fr/owa.
Pour des nombreuses raisons, cela n’était pas acceptable.

J’ai donc cherché une solution pour rediriger l’accès https://nompublic.fr/exchange vers https://nompublic.fr/owa.
Par défaut il faut savoir que lorsque l’on se connecte sur https://nompublic.fr/exchange avec une boîte aux lettres hébergée sous Exchange 2007, on est redirigé vers l’URL interne définie au niveau de la console Exchange Management Console dans Server Configuration\CAS\Owa.
Par défaut la connexion est donc redirigée vers l’URL interne (généralement non résolvable sur Internet).
La solution de contournement consiste donc à modifier cette URL interne pour la remplacer par une URL que l’on peut résoudre depuis Internet (penser à créer un alias DNS pour la résolution de noms pour l’accès OWA depuis le réseau interne).
Le second problème est que l’on doit s’authentifier deux fois pour que cela marche. Hors ce point semble non contournable.
Pour plus d’informations, voir :
http://msexchangeteam.com/archive/2007/02/07/434523.aspx

Pour contourner le problème, il faut en fait supprimer le répertoire virtuel /Exchange utilisé pour l’accès OWA pour les boîtes aux lettres Exchange 2003. Pour plus d’informations, voir :
http://msexchangeteam.com/archive/2007/02/07/434523.aspx).
Pour supprimer le répertoire virtuelle, il faut taper la commande suivante :
Remove-OwaVirtualDirectory « Exchange (Defaut Web Site) »
On peut alors créer un nouveau répertoire virtuelle /Exchange dans IIS 7 et configurer une redirection vers https://nompublic.fr/owa.

PS : à faire si toutes les boîtes aux lettres sont sous Exchange 2007 (ce qui était mon cas…).
Pour faire un retour arrière, voir :
http://unifiedit.wordpress.com/2010/03/03/recreation-des-repertoires-des-webservices-en-exchange-2007/

A+
Guillaume MATHIEU
PROSERVIA
La connaissance s’accroît quand on la partage.

Publié dans Exchange, Messagerie | Marqué avec , , , , | Laisser un commentaire

Problème de réplication des dossiers publics -> Public Folder store Banque de dossiers publics (EXCH2) on server EXCH2 does not have a mail address

Salut à tous

Je suis récemment intervenu chez un client pour corriger des problèmes de réplication de dossiers publics sous Exchange 2003.
Le client disposait de deux serveurs Exchange 2003.
Lors d’un contrôle de routine, mon client a constaté que les dossiers publics ne répliquait plus entre les deux serveurs Exchange 2003.
Les deux serveurs Exchange 2003 disposaient chacun d’une banque de dossiers publics et cette dernière était en ligne.
Chaque dossiers publics disposait de deux réplicas et utilisait les paramètres de réplication de la banque de dossier public.
Le paramètre de réplication sur les deux banques de dossiers publics étaient configurés pour toujours répliquer toutes les 15 minutes.

Lors de l’analyse du problème, j’ai installé le Best Practice Analyser sur un des deux serveurs Exchange et j’ai lancé un scan. L’erreur suivante est alors remonté :
« Adresse de messagerie manquante sur la base de données.
Public Folder store Banque de dossiers publics (EXCH2) on server EXCH2 does not have a mail address. Hierarchy replication will be broken until this problem is corrected »

Le problème provenait en fait du fait que le client avait désactivé la mise à jour du Recipient Update Service (Entreprise Configuration) en positionnant le paramètre « Intervalle de mise à jour » sur « Ne jamais exécuté ».
Pour plus d’informations, voir l’article Microsoft suivant :
http://technet.microsoft.com/en-us/library/aa997872(EXCHG.80).aspx

a+

Guillaume MATHIEU
PROSERVIA
La connaissance s’accroît quand on la partage.

Publié dans Exchange, Messagerie, Troubleshouting | Marqué avec , | Laisser un commentaire

Exchange -> Le composant « Services de Collaboration et Messagerie Microsoft Exchange » ne peut se voir assigné l’action « Supprimé »

Salut à tous

J’ai récemment travaillé sur un nouveau projet de migration Exchange 2003 vers Exchange 2007/2010.
Tout s’est bien passé jusqu’à la désinstallation de l’ancien serveur Exchange 2003.
Mon client a en effet migré d’un serveur Exchange 2003 vers un serveur Exchange 2007 (avec les rôles HUB / CAS / MAILBOX).
Comme d’habitude, j’ai migré toutes les boîtes aux lettres vers Exchange 2007.
La base de dossiers publics sur Exchange 2003 n’avait plus de réplicas.
Cependant, lorsque que j’essayais de désinstaller le serveur Exchange 2003, j’obtenais l’erreur suivante :

‘Le composant « Services de Collaboration et Messagerie Microsoft Exchange » ne peut se voir assigné l’action « Supprimé » car :
- Un ou plusieurs utilisateurs utilisent actuellement une banque de boîtes aux lettres sur ce serveur. Ces utilisateurs doivent être déplacés vers une banque de boîte aux lettres sur un autre serveur ou leur messagerie doit être désactivée avant de pouvoir désinstaller ce serveur’.

Après quelques recherches GOOGLE, je suis tombé sur l’article Microsoft suivant :
http://support.microsoft.com/kb/924170/en-us
Cependant, il ne m’était toujours pas possible de détecter les fameuses boîtes aux lettres.
Après quelques recherches supplémentaires, je suis tombé sur cette article
http://theether.net/kb/100016?view=print.
Pour visualiser les boîtes aux lettres en défaut :
- Lancer la console Utilisateurs et Ordinateurs Active Directory.
- Faire un clic droit au niveau du domaine et cliquer sur rechercher.
- Aller dans l’onglet avancé et cliquer sur Champ. Sélectionner Utilisateur puis le champ ‘Serveur associé Exchange’.
- Lancer la recherche. Les boîtes aux lettres fautives apparaissent enfin.

Cela mérite quelques explications complémentaires :
Pour rappel Exchange se sert de l’annuaire comme base de compte.
Les mails sont stockés dans des bases de données de messagerie (banques d’informations) qui sont des fichiers EDB
Le mappage AD / EXchange se fait en fait via certains attributs qui sont renseignés au niveau du compte utilisateur.
http://www.selfadsi.org/attributes-e2k7.htm
Quand on crée la boîte aux lettres, ces attributs sont renseignés mais la boîte aux lettres n’est créée au niveau de la base de données Exchange (fichier EDB) que lorsque la boîte aux lettrres reçoit un mail ou quand un utilisateur se connecte à cette boîte aux lettres (via OWA, Outlook…). Hors chez ce client, de nombreuses boîtes aux lettres avait été créées mais jamais utilisées / connectées. Ces dernières n’apparaissaient pas dans la liste des boîtes aux lettres à migrer au niveau du Gestionnaire Système Exchange.

A+

Guillaume MATHIEU
PROSERVIA
La connaissance s’accroît quand on la partage. 

Publié dans Active Directory, Exchange, Messagerie, Troubleshouting | Marqué avec , | Laisser un commentaire

Exchange 2007 -> erreur à l’installation dans un domaine Windows 2008 R2

Salut à tous

Juste un petit article pour apporter un complément d’informations sur une erreur que j’ai rencontré à l’installation d’Exchange 2007 dans un domaine Windows 2008 R2.
L’installation s’arrête en effet au niveau de la phase de vérification de la configuration avec le message d’erreur suivant :
Cannot find at least one domain controller running Windows Server 2003 Service Pack 1 or later in domain ‘DC=orga2,DC=lan’. This could be the result of moving domain controller objects in Active Directory. Check that at least one domain controller running Windows Server 2003 Service Pack 1 or later is located in the ‘Domain.
Curieux tout de même, mon unique contrôleur de domaine est sous Windows 2008 R2.
Le problème se produit en fait parce que j’installe mon serveur Exchange 2007 avec un CD Exchange 2007 SP1 Rollup0. Hors Exchange 2007 SP1 est supporté dans des domaines Windows 2008 R2 que depuis le rollup 9.
Pour plus d’informations, voir la matrice de compatibilité d’Exchange :
http://technet.microsoft.com/en-us/library/ee338574(EXCHG.80).aspx

Pour corriger le problème, j’ai  téléchargé l’installation d’Exchange 2007 pré SP2 à cette adresse :
http://www.microsoft.com/downloads/details.aspx? FamilyID=4c4bd2a3-5e50-42b0-8bbb-2cc9afe3216a&displaylang=en

a+
Guillaume MATHIEU
PROSERVIA
La connaissance s’accroît quand on la partage.

Publié dans Active Directory, Bug, Exchange, Messagerie | Marqué avec , , | Laisser un commentaire

Exchange 2007 -> bug étrange avec le service POP3 et les accents

Salut à tous

J’ai récemment activé le service POP3 sur un serveur Exchange 2007.
La première étape consiste à démarrer le service POP3 sur le serveur Exchange 2007.
Il faut ensuite configurer les paramètres d’authentification du serveur POP3. Cela peut se faire depuis la console l’Exchange Management Console ou l’Exchange Management Shell.µ
Vous trouverez à cette adresse un pas à pas complet sur la configuration du service POP3 sur un serveur Exchange 2007 :
http://www.msexchange.org/articles_tutorials/exchange-server-2007/ mobility-client-access/using-pop3-imap4-access-exchange-2007-part1.html

Là où c’est très fort, c’est que je n’arrivais toujours pas à me connecter avec mon client Outlook configuré en mode POP3. Au démarrage du client Outlook, j’obtenais systématiquement une fenêtre de demande d’authentification.
Après analyse, il s’avère que le problème provenait du fait que le mot de passe de mon compte utilisateur contenait un accent aigu !
Ce qui est étrange, c’est que je n’ai pas trouvé de correctifs associés à ce bug qui se produit en Exchange 2007 SP1 Rollup 9 US et en Exchange 2007 SP2 US (maquette différente) aussi.

Je précise que je dispose selon les cas d’un annuaire Active Directory Windows 2008 US ou Windows 2008 R2 US !

A+
Guillaume MATHIEU
PROSERVIA
La connaissance s’accroît quand on la partage.

Publié dans Bug, Exchange, Messagerie, Windows Server 2008 | Marqué avec , , , | Laisser un commentaire

Installer Exchange 2003 dans un annuaire Windows 2008 R2

Salut à tous

Je travaille actuellement sur un projet de migration inter-organisation Exchange 2003 vers Exchange 2007.
Pour cela, j’applique la procédure suivante :
http://unifiedit.wordpress.com/2009/02/05/migration-inter-org- exchange-200x-vers-2007/

Le gros problème de cette procédure est qu’elle oblige à avoir un serveur Exchange 2003 dans le domaine cible. Hors dans mon cas, le client dispose déjà d’un annuaire Windows 2008 R2.
La question : Exchange 2003 SP2 est il supporté dans un annuaire Windows 2008 R2 ? 
Cela n’a pas été toujours le cas à en croire les forum. Pour plus d’informations, voir :
http://technet.microsoft.com/en-us/library/ee338574(EXCHG.80).aspx
Je viens de tester et cela marche. Pas de message d’erreur quand on installe Exchange 2003 (nouvelle installation) dans un annuaire avec que des contrôleurs de domaine Windows 2008 R2 en mode natif 2008 R2.

PS : si vous avez un peu de budget, mieux vaut clairement partir sur la solution Quest Migration Manager for Exchange. D’après ce que je sais la version compatible avec Exchange 2010 sort en mai 2010. Voir http://www.quest.com/Quest_Site_Assets/PDF/ Migration_Manager_for_Exchange_-_FR_1.pdf

a+

Guillaume MATHIEU
PROSERVIA
La connaissance s’accroît quand on la partage.

Publié dans Exchange, Messagerie, Outils | Marqué avec , | Laisser un commentaire