Comment simplifier et automatiser la migration d’un serveur de fichiers SAMBA vers Windows 2012

1. OBJECTIFS DE CET ARTICLE :
- Présenter le fonctionnement d’un serveur de fichiers SAMBA.
- Présenter une procédure de migration d’un serveur de fichiers SAMBA vers un serveur de fichiers Windows 2012 membre d’un domaine Active Directory.

2. INSTALLATION ET TEST D’UN SERVEUR DE FICHIERS SAMBA :
2.1 Installation d’un serveur de fichiers SAMBA 3.X :

L’article ci-dessous présente la procédure d’installation d’un serveur de fichiers SAMBA sous CENTOS 6 membre d’un domaine Active Directory.
http://phreek.org/guides/centos-6-samba-ad-member-server
Il faut configurer / désactiver SE LINUX pour que ce serveur fonctionne correctement.
https://www.centos.org/docs/5/html/5.1/Deployment_Guide/sec-sel-enable-disable.html

2.2 Test d’un serveur de fichiers SAMBA 3.X :
Pour accéder aux données partagées, un utilisateur doit disposer de permissions au niveau de SAMBA (smb.conf) et de permissions sur le système de fichiers (EXT3 / EXT4 généralement).
C’est le cumul le plus restrictif qui s’applique. Si un utilisateur a le droit Lire et écrire avec les permissions SAMBA et le droit Lire au niveau des permissions EXT3 / EXT4, l’utilisateur aura uniquement le droit de lire le fichier.
Il n’y a pas de notions d’héritage en Linux avec le système de fichiers EXT3 / EXT4.
Les paramètres create mask = 0770 et directory mask = 0770 permettent de définir les droits sur un nouveau fichier / nouveau dossier créé par un utilisateur au niveau des permissions EXT3/EXT4.
Avec un create mask = 0770, lorsque le compte utilisateur guillaume.mathieu accède au partage SAMBA et crée un fichier, seul le compte guillaume.mathieu et son groupe primaire (utilisa du domaine par défaut) ont le droit de lire et écrire sur ce fichiers. Les autres utilisateurs n’ont pas d’accès à ce fichier.
Il est possible de corriger ce comportement en exécutant tous les jours un script qui modifie les permissions pour chaque dossier.
Ce comportement fait que généralement le groupe Utilisa du domaine a trop de permissions sur le système de fichiers Linux. C’est pour cette raison que généralement, je ne migre pas les permissions Linux.

3. INSTALLER LE SERVEUR DE FICHIERS WINDOWS 2012 :
Désactiver l’UAC sur le serveur Windows 2012 (Panneau de configuration | Comptes utilisateurs).
Configurer PowerShell pour autoriser l’exécution de script :
Set-ExecutionPolicy Unrestricted
Installer Quest ActiveRoles Management Shell (permet le fonctionnement de la solution sur des domaines Active Directory géré par des contrôleurs de domaine Windows 2000 et versions ultérieures) :
http://www.quest.com/powershell/activeroles-server.aspx

4. RECREER L’ARBORESCENCE DE FICHIERS VIDE :
La première étape est de recréer l’arborescence de fichiers vide.
Pour cela, partager le ou les dossiers racines sur le serveur de fichiers non Windows (avec SAMBA).
Monter chaque partage sous forme d’un lecteur réseau sur une machine Windows.
Exporter l’arborescence vide  à l’aide de la commande suivante :
Get-ChildItem -Recurse | Where-Object {$_.Attributes -eq « Directory »} | Select-Object FullName | Export-Csv -Path C:\Scripts\Arborescences\arborescences.csv -UseCulture -Encoding UTF8
Remarque :
Pour une arborescence avec 300000 fichiers, on obtient un fichier de 50 Mo.
Ce fichier doit être au format UTF8 pour que la solution fonctionne.

Il faut maintenant importer l’arborescence vide sur le serveur Windows 2012 à l’aide de ce script :
$base = Import-csv -Path C:\Scripts\Arborescences\arborescences.csv -UseCulture -Encoding UTF8
foreach ($line in $base)
{
$line.FullName
New-Item $line.FullName -Type Directory -force
}

5. CREER UN FICHIER EXCEL AVEC LA LISTE DES DOSSIERS AVEC DES PERMISSIONS NTFS SPECIFIQUES ET LA LISTE DES PARTAGES :

5.1 Créer le fichier Excel :
Le fichier doit contenir les colonnes suivantes :
- Name : nom du partage (utilisé si CreateShare égale à Yes).
- Path : cette valeur est utilisée pour créer le partage et définir les permissions NTFS.
- Description : cette valeur est copiée dans le champ Description du partage.
- RO : tous les groupes / comptes utilisateurs qui disposent d’un accès en lecture uniquement. Utiliser une virgule comme séparateur entre les groupes / comptes utilisateurs.
- RW : tous les groupes / comptes utilisateurs qui disposent d’un accès en lecture et écriture. Utiliser une virgule comme séparateur entre les groupes / comptes utilisateurs.
- CreateShare : si contient la valeur Yes, le script créera un partage.

5.2 Analyser le fichier SMB.CONF et les permissions EXT3 / EXT4 :
Analyser le fichier SMB.CONF du serveur de fichiers SAMBA :
- Créer une entrée dans le fichier Excel pour chaque partage.
- Ne pas mettre de guillemets ou de points virgules dans le fichier Excel.
- Compléter les colonnes RO et RW du fichier Excel selon les permissions SAMBA définis dans le fichier SMB.CONF et les permissions EXT3 / EXT4 (analyse avec la commande Linux getfacl).
Pour cela, il faut s’appuyer sur les règles de conversion permissions SAMBA – permissions SMB Windows ci-dessous.
Règle 1 :
- Permissions SAMBA : aucun paramètre.
- Permissions SMB Windows : lecture seule pour tout le monde
Règle 2 :
- Permissions SAMBA : writable = yes
- Permisions SMB Windows : lecture / écriture pour tout le monde
Règle 3 :
- Permissions SAMBA : read only = yes
- Permisions SMB Windows : lecture seule pour tout le monde
Règle 4 :
- Permissions SAMBA : read only = yes
write list = guillaume.mathieu
- Permissions SMB Windows : lecture seule pour tout le monde et lecture / écriture pour guillaume.mathieu
Règle 5 :
- Permissions SAMBA : read only = yes
writable = yes
- Permissions SMB Windows : lecture / écriture pour tout le monde
Règle 6 :
- Permissions SAMBA : valid users = guillaume.mathieu
- Permissions SMB Windows : Accès en lecture seule pour guillaume.mathieu. Pas d’accès pour les autres utilisateurs.
Règle 7 :
- Permissions SAMBA : valid users = guillaume.mathieu
read only = no
- Permissions SMB Windows : Accès en lecture / écriture pour guillaume.mathieu. Pas d’accès pour les autres utilisateurs.
Règle 8 :
- Permissions SAMBA : valid users = guillaume.mathieu, tigrou.mathieu
read only = no
read list = tigrou.mathieu
- Permissions SMB Windows : accès en lecture seule pour tigrou.mathieu, accès en lecture / écriture pour guillaume.mathieu, pas d’accès pour les autres utilisateurs.

5.3 Conversion du fichier Excel au format CSV :
Sélectionner la colonne Path et afficher les lignes par ordre alphabétique.
Copier / coller le résultat dans un nouveau fichier Excel.
Exporter le nouveau fichier au format CSV avec des points virgules comme séparateur.
http://office.microsoft.com/en-us/excel-help/import-or-export-text-txt-or-csv-files-HP010342598.aspx
Ouvrir le fichier obtenu avec NOTEPAD et l’enregistrer au format UTF8.

5.4 Créer les groupes, les partages et les permissions de partage :
Télécharger et exécuter le script suivant : http://msreport.free.fr/articles/Create-Groups-Share.txt
Ce script génère un fichier appelé startCreateGroupsShare.txt
Il faudra ensuite renommer ce fichier avec l’extension .ps1 et l’exécuter. Ce script permet de :
- Créer un groupe NomPartage_L pour les accès en lecture  uniquement.
- Créer un groupe NomPartage_M pour les accès en lecture / écriture.
- Créer un partage si la colonne CreateShare a pour valeur Yes. Donner les permissions de lecture seule sur ce partage au groupe NomPartage_L et lecture / écriture au groupe NomPartage_M.
Astuces :
- Utiliser PowerShell ISE pour vérifier le bon fonctionnement du script StartCreateGroupsShare.ps1.
- Vérifier qu’aucun champ ne contient des guillemets.

6. APPLICATION DES PERMISSIONS NTFS :
6.1 Définir les permissions NTFS sur chaque dossier racine sur le serveur de fichiers Windows :
Au niveau de chaque dossier racine, aller dans l’onglet Sécurité puis cliquer sur le bouton Avancé.
Cliquer sur le bouton Désactivé l’héritage et supprimer les permissions héritées.
Donner le droit contrôle totale aux objets System et administrateurs (le groupe administrateurs du serveur).
Forcer tous les sous dossiers à hériter leur droit de ce dossier.

6.2 Définir les permissions NTFS à partir du fichier Excel :
Télécharger et exécuter le script suivant : http://msreport.free.fr/articles/Define-NTFSPermissions.txt
Ce dernier permet de définir sur chaque dossier du fichier Excel :
- Les permissions NTFS Lecture au groupe NomPartage_L
- Les permissions NTFS Lecture / écriture au groupe NomPartage_M
- Forcer l’application de l’héritage sur tous les fichiers / dossiers enfants.

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

 

Publié dans Active Directory, Annuaire, Outils, SAMBA, Scripts | Laisser un commentaire

Protection contre le vol de jeton d’accès (access token) avec INCOGNITO.EXE

Salut à tous

Cet article a pour but :
- De vous présenter ce qu’est un SID, un service, un processus.
- De vous présenter ce qu’est un jeton d’accès (access token).
- De vous présenter ce qu’est un privilège et l’impersonation.
- Vous expliquez comment voler un jeton d’accès pour récupérer des droits (comme admins du domaine) avec un compte administrateur local uniquement.
- Vous protégrer contre le vol de jeton.

1. QU’EST-CE QU’UN SID, SERVICE, PROCESSUS ?
Un SID est un identifiant unique qui correspond à une ressource : un compte utilisateur, un groupe ou un compte ordinateur. Un SID permet de donner des permissions.
Quand on donne des permissions à l’utilisateur Admin-ldap sur un dossier appelé Divers (dans l’onglet Sécurité), seul le SID de ce compte est stocké au niveau du système de fichiers. Windows résout le SID en nom pour l’afficher dans l’onglet Sécurité pour simplifier la tâche de l’administrateur. Si on supprime le compte utilisateur Admin-ldap et que l’on ferme / ouvre de nouveau la session, l’ancien compte utilisateur apparaît sous forme d’un SID inconnu dans l’onglet Sécurité du dossier appelé Divers.
Le SID est unique par domaine et ne peut pas être affecté à une autre ressource.
Pour afficher le SID d’un utilisateur, utiliser ADSIEDIT ou l’outil PSGETSID :
http://technet.microsoft.com/en-us/sysinternals/bb897417.aspx
Un SID dispose de 3 parties.
Exemple avec S-1-5-21-1712426984-1618080182-1209977580-1109 :
S-1-5- : indique que le SID a été généré par Windows Security_NT_Authority.
21-1712426984-1618080182-1209977580 : représente l’identifiant unique du domaine
1109 : c’est l’identifiant unique de la ressource (un compte utilisateur dans notre cas).
Certains SID s’affichent sous la forme suivante : S-1-5-32-544, S-1-5-32-545. Il s’agit des SID des groupes par défaut comme administrateurs ou utilisateurs authentifiés.

Les services sont des exécutables qui démarrent manuellement ou automatiquement dans le contexte d’un compte utilisateur spécifique (voir console services.msc).
Par exemple, le service NETLOGON s’exécute avec le compte SYSTEM (compte système local) et lance l’exécutable c:\windows\system32\lsass.exe.

Un processus est généré pour chaque exécutable qui démarre sur le système Windows (un service ou une application). On peut voir la liste des processus dans le gestionnaire des tâches (onglet Processus).

2. QU’EST-CE QU’UN JETON D’ACCÈS ?
Un jeton d’accès (ou Token, Access Token, Security Token : ce sont des synonymes / traductions) contient :
- Le SID (et le(s) SID History) du compte utilisateur du domaine.
- Le SID (et le(s) SID History) de chaque groupe du domaine auquel l’utilisateur appartient directement ou indirectement (un groupe membre d’un autre groupe).- Le SID de chaque groupe local (groupe de la base SAM de la machine) auquel l’utilisateur appartient
- La liste des privilèges de l’utilisateur (voir paragraphe ci-dessous pour plus d’informations).
Pour visualiser le contenu d’un jeton d’accès, il est possible d’utiliser l’outil Token SZ téléchargeable à cette adresse :
http://www.microsoft.com/en-us/download/details.aspx?id=1448
Sur une machine Windows 2003, lancer la commande suivante :
tokensz.exe /compute_tokensize /dump_groups
Cette commande liste tous le SID du compte utilisateur et des groupes dont il est membre directement (ou indirectement) ainsi que tous ses privilèges.
Un jeton d’accès est généré quand un processus démarre.
Un jeton d’accès permet d’accéder à une ressource (validation des ACL sur les volumes en NTFS…).
Il existe différents types de jeton d’accès :
- Jeton primaire (Primary Token) : ce type de jeton est généré lors des ouvertures de session interactive (locale) ou Batch et sont dit de type 2 dans les événements du journal de sécurité.
- Impersonation jeton (Impersonation Token) : ce type de jeton est généré lors des ouvertures de session réseau et sont dit de type 3 dans les événements du journal de sécurité.

Dans l’exemple ci-dessous, le processus d’ouverture de session Novell (quand on installe le client Novell) initie une ouverture de session interactive (type = 2) :
Type de l’événement : Audit des succès
Source de l’événement : Security
Catégorie de l’événement : Ouverture/Fermeture de session
ID de l’événement : 528
Date : 12/5/2013
Heure : 12:24:14 PM
Utilisateur : ARCHIDFS\administrateur
Ordinateur : SRVDFSR1
Description :
Ouverture de session réseau réussie :
Utilisateur : administrateur
Domaine : ARCHIDFS
Id. de la session : (0×0,0x10BB91)
Type de session : 2
Processus de session : NWGINA
Package d’authentification : Negotiate
Station de travail : SRVDFSR1
GUID d’ouv. de session : {c1d9aa40-fb49-ef62-aa1a-c3b1274d8389}
Nom de l’utilisateur appelant : SRVDFSR1$
Domaine appelant : ARCHIDFS
Id. de session de l’appelant : (0×0,0x3E7)
ID de processus appelant : 372
Services en transit : -% Adresse réseau source : -
Port source : -

Pour plus d’informations sur les jetons d’accès :
http://blogs.technet.com/b/askds/archive/2007/11/02/what-s-in-a-token.aspx
http://blogs.technet.com/b/askds/archive/2008/01/11/what-s-in-a-token-part-2-impersonation.aspx

3. QU’EST-CE QU’UN PRIVILÈGE ET L’IMPERSONATION ?
Pour simplifier, les privilèges ce sont des droits donnés à un utilisateur comme le fait de pouvoir contourner les permissions NTFS (Take ownership of files or other objects) ou d’accéder à la mémoire (Debug programs) au niveau de la base de registre.
Les comptes administrateur et SYSTEM dispose de tous les droits sur une machine Windows car ils disposent d’un accès presque complet au système de fichiers (permissions NTFS) et de tous privilèges.

L’article Microsoft http://technet.microsoft.com/en-us/library/bb457125.aspx explique la notion de privilège en détails sur un système Windows. Ci-dessous la liste des privilèges (autres que ceux pour ouvrir une session…) :
- Act as part of the operating system(SeTcbPrivilege) : ce privilège permet d’outrepasser certains contrôles lors de l’ouverture de session. Il est réservé aux processus censés ouvrir les sessions des utilisateurs. Par exemple, winlogon.exe et le service seclogon ont besoin de ce privilège. Il est recommandé de donner ce privilège à personne.
- Add workstations to domain (SeMachineAccountPrivilege) : permet d’ajouter une machine dans le domaine (jusqu’à 10 stations de travail par défaut).
- Adjust memory quotas for a process(SeIncreaseQuotaPrivilege)
- Back up files and directories(SeBackupPrivilege) : permet de sauvegarder les données même sans avoir les permissions.
- Bypass traverse checking (SeChangeNotifyPrivilege)
- Change the system time (SeSystemTimePrivilege) : permet de changer l’heure sur une machine.
- Create a token object (SeCreateTokenPrivilege) : créer un jeton d’accès.
- Create a pagefile (SeCreatePagefilePrivilege) : permet de créer le fichier pagefile.sys.
- Create global objects (SeCreateGlobalPrivilege)
- Debug programs (SeDebugPrivilege) : ce droit permet à un utilisateur d’accéder à l’espace mémoire de n’importe quels processus. C’est sur ce privilège que repose l’outil INCOGNITO.EXE (pour le vol de jeton d’accès). Normalement, aucun service de production ne doit reposer sur ce privilège, il sert en général au développement d’applications et au troubleshooting avancé. Par défaut, les Administrateurs ont ce privilège. Il est recommandé de changer ce paramètre par défaut (définir la GPO avec aucun compte sauf besoin spécifique).
- Enable computer and user accounts to be trusted for delegation (SeEnableDelegationPrivilege) : permet de faire de la délégation (voir paragraphe sur la délégation ci dessous).
- Force shutdown from a remote system (SeRemoteShutdownPrivilege) : permet d’arrêter la machine à distance.
- Generate security audits (SeAuditPrivilege) : détermine le compte qui peut générer des événements dans le journal sécurité.
- Impersonate a client after authentication (SeImpersonatePrivilege) : permet à un processus de prendre l’identité d’un utilisateur qu’il aurait authentifié.  Par défaut, les Administrateurs, SERVICE, LOCAL SERVICE et NETWORK SERVICE ont ce privilège. Seuls des comptes de services (dont ceux built-ins) réalisant de l’impersonation devraient avoir ce privilège.
- Increase scheduling priority (SeIncreaseBasePriorityPrivilege) : permet de déterminer quel compte utilisateur a le droit de changer la priorité d’un processus dans le gestionnaire de tâches.
- Load and unload device drivers (SeLoadDriverPrivilege) : permet de déterminer qui peut charger / décharger un pilote.
- Lock pages in memory (SeLockMemoryPrivilege) : détermine les comptes utilisateurs peuvent utiliser un processus destiné à conserver les données en mémoire physique pour éviter leur pagination en mémoire virtuelle sur le disque.
- Manage auditing and security log (SeSecurityPrivilege) : détermine les comptes utilisateurs qui peuvent définir des entrées d’audit au niveau d’un dossier / registre et qui peuvent accéder / purger au journal Sécurité.
- Modify firmware environment values (SeSystemEnvironmentPrivilege) : Permet de configurer le mode dernière bonne configuration sur un système 32 bits et 64 bits et d’exécuter la commande bootcfg (modification du démarrage) sur OS Windows 64 bits uniquement.
- Perform volume maintenance tasks (SeManageVolumePrivilege) : déterminer les comptes utilisateurs qui peuvent planifier des tâches de maintenance sur un volume disque.
- Profile single process (SeProfileSingleProcessPrivilege) : détermine les comptes utilisateurs qui peuvent des analyses de performance sur des processus non systèmes.
- Profile system performance (SeSystemProfilePrivilege) : détermine les comptes utilisateurs qui peuvent des analyses de performance sur des processus systèmes.
- Remove computer from docking station (SeUndockPrivilege)
- Replace a process-level token (SeAssignPrimaryTokenPrivilege) : permet de changer ou d’assigner le jeton principal d’une application. Permet notamment de lancer un processus en tant qu’un autre utilisateur après s’être authentifié. C’est un usage plutôt orienté service. Par défaut seuls Network Service et Local Service ont ce privilège. Seuls les comptes de services réalisant de l’impersonation devraient avoir ce privilège.
- Restore files and directories (SeRestorePrivilege) : permet de déterminer les comptes utilisateurs qui peuvent passer outre les permissions lors des opération de restauration. L’utilisateur dispose d’un équivalent des permissions NTFS Traverse Folder / Execute file et Write.
- Shut down the system (SeShutdownPrivilege) : détermine quel utilisateur peuvent arrêter un ordinateur.
- Synchronize directory service data (SeSynchAgentPrivilege) : voir article
https://www.ultimatewindowssecurity.com/wiki/WindowsSecuritySettings/Synchronize-directory-service-data
- Take ownership of files or other objects (SeTakeOwnershipPrivilege) : permet de devenir propriétaire d’un fichier / dossier et donc de redéfinit les permissions NTFS. Ce droit permet donc d’outrepasser les permissions NTFS.

Il est possible d’affecter ces privilèges à des comptes utilisateurs en modifiant les paramètres dans Computer Configuration\Security Settings\Local Policies\User Rights Assignment.

Parfois un processus s’exécute dans le contexte d’un compte utilisateur A mais a besoin d’effectuer une autre tâche dans le contexte d’un autre compte utilisateur B.
Exemple d’un serveur de fichiers (applicable aussi à un serveur web) :
Le service « Serveur » s’exécute dans le contexte du compte SYSTEM et gère l’accès aux partages de fichiers. Quand un utilisateur se connecte à un serveur de fichiers, le service «Server » va générer un jeton d’accès dans le contexte du compte de l’utilisateur pour contrôler les accès aux ressources par cet utilisateur.
Pour pouvoir effectuer cette impersonnalisation, le processus du service de partages de fichiers doit avoir le privilège Impersonate a client after authentication(SeImpersonatePrivilege.).
Il existe 4 types d’impersonation :
- Anonymous : un processus peut générer un jeton d’accès avec les privilèges d’un utilisateur anonyme.
- Identification : un processus peut prendre votre jeton pour valider votre identité mais ne peut rien faire d’autres avec (pas de contrôle d’accès).
– Impersonation : un processus peut faire une tâche différente en tant qu’un autre utilisateur. L’impersonation est limité à l’ordinateur local et ne peut être utilisé pour effectuer des actions sur d’autres machines (autres machines membres du domaine par exemple).
- Delegation : même principe que l’impersonation mais il est possible d’effectuer des tâches sur l’ordinateur local et d’autres ordinateurs (autres machines du domaine par exemple). Cette fonctionnalité s’appuie sur le protocole Kerberos (on parle de “Double Hop Authentication).

4. UTILISATION DE L’OUTIL INCOGNITO POUR VOLER UN JETON D’ACCES
L’outil INCOGNITO ne s’appuie pas sur la fonctionnalité d’impersonation.
Il vole les jetons d’accès en s’appuyant sur le privilège Debug programs (SeDebugPrivilege). Pour rappel ce droit permet à un utilisateur « d’ouvrir » n’importe quel processus, d’accéder à son espace mémoire et de copier ses ressources.
L’outil INCOGNITO est disponible à l’adresse suivante :
http://sourceforge.net/projects/incognito/
De nombreux antivirus le détectent comme un virus. Il sera donc nécessaire de l’installer sur une machine avec un antivirus dont le scan temps réel est désactivé.
Incognito est maintenant intégré dans l’outil METASPLOIT (détecté aussi comme un virus parfois). Voir :
http://www.offensive-security.com/metasploit-unleashed/Fun_With_Incognito
http://blogs.technet.com/b/askds/archive/2008/01/11/what-s-in-a-token-part-2-impersonation.aspx

Pour lister tous les jetons disponibles :
Ouvrir une invite de commande en system sous Windows XP.
Lancer la commande suivante pour effectuer cela :
at 01:23 /interactive cmd.exe
http://verbalprocessor.com/2007/12/05/running-a-cmd-prompt-as-local-system/
http://technet.microsoft.com/en-us/library/cc771525.aspx

Une fois l’invite de commande exécuté en tant qu’utilisateur SYSTEM, taper la commande suivante :
incognito.exe -h localhost -u administrateur -p P@ssword list_tokens -u
Une fois que l’on voit les jetons d’accès. Ceux qui sont marqués « Delegation » peuvent être volés et utiliser pour lancer une invite de commande avec la commande suivante (on vole le jeton de archidfs\administrator dans cet exemple qui est Domain Admins sur ma plateforme de tests):
incognito.exe -h localhost -u administrateur -p P@ssword execute -c archidfs\administrator cmd
Entrer la commande whoami pour valider l’utilisateur en cours dans l’invite de commande.

Pour supprimer le processus lancés par INCOGNITO :
incognito.exe -h localhost cleanup

5. COMMENT SE PROTEGER DE L’OUTIL INCOGNITO ?
Si on supprime le privilège « Deboguer ces paramètres de stratégie » (Debug programs – SeDebugPrivilege) l’outil ne fonctionne plus.

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

http://msreport.free.fr

Publié dans Active Directory, Annuaire, Outils, Sécurité, Scripts, Système, Troubleshouting, Windows 2000 Pro, Windows 2000 Server, Windows 2003 Server, Windows 2012, Windows NT4, Windows Server 2008, Windows Server 2008 R2, Windows Seven, Windows Vista, Windows XP | Un commentaire

Désactiver les comptes utilisateurs qui ne se sont pas connectés depuis plus de X jours -> merci PowerShell

Salut

Objectifs
- Désactiver les comptes utilisateurs qui ne se sont pas connectés depuis plus de X jours (67 dans l’exemple).
- Générer un rapport.

Architecture :
- 1 domaine Active Directory appelé MSREPORT.INTRA géré par deux contrôleurs de domaine Windows 2003 R2, MSREPORTDC1 et MSREPORTDC2.
- Un serveur de gestion sous Windows 2008 R2 avec le plugin Quest ActiveRoles Management Shell.
- Les comptes utilisateurs se trouvent dans une OU appelée Utilisateurs à la racine du domaine.

Solutions :
Installer sur une machine membre du domaine (ou contrôleur de domaine) PowerShell V2 et le module Quest ActiveRoles Management Shell.
Créer le fichier C:\_adm\Disable-accounts\Disable-UnsuedAccounts.ps1 et copier le code disponible à cette emplacement http://msreport.free.fr/articles/Disable-UnsuedAccounts.txt
Créer le fichier C:\_adm\Disable-UnsuedAccounts\Disable-UnsuedAccounts.bat. Copier le contenu ci-dessous dans ce fichier :
C:\Windows\System32\WindowsPowerShell\v1.0\Powershell.exe -file C:\_adm\Disable-accounts\Disable-UnsuedAccounts.ps1
Configurer une tâche planifiée pour exécuter ce fichier au moins une fois par mois. Vous devez exécuter cette tâche avec un compte utilisateur qui a le droit de désactiver les comptes utilisateurs au niveau de l’OU Utilisateurs.
Cette solution fonctionne avec des annuaires gérés par des contrôleurs de domaine Windows 2003 et versions ultérieures.

A+

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

http://msreport.free.fr

Publié dans Active Directory, ActiveRoles for Server, Annuaire, Outils, PowerShell, Scripts, Système, Windows 2003 Server, Windows Server 2008, Windows Server 2008 R2 | Marqué avec , , | Laisser un commentaire

Superviser un annuaire Active Directory avec un logiciel comme Nagios -> merci PowerShell

Salut à tous

Objectif
Superviser un annuaire Active Directory avec un logiciel comme Nagios.

1. La méthode
Ecrire un script PowerShell qui analyse le résultat de la commande DCDIAG /V /E.
Le script doit être installé sur un serveur Windows 2008 R2 / Windows 2012 anglais.

2. Présentation de l’outil DCDIAG
Il s’agit d’un outil de diagnostic Active Directory très complet qui permet de vérifier la disponibilité des contrôleurs de domaine, le bon fonctionnement de la réplication, la disponibilité des rôles FSMO, que les services sont démarrés…
L’option /V permet de travailler en mode verbeux.
L’option /E permet d’interroger tous les contrôleurs de domaine de la forêt.
Il existe d’autres options pour effectuer des tests DNS. Pour plus d’informations, taper la commande DCDIAG.EXE /?

3. Déploiement de la solution
Etape 1 : préparation du serveur

Installer un serveur membre Windows 2008 R2 / Windows 2012 anglais. Le script ne fonctionne que pour un DCDIAG US.
Lancer Server Manager et cliquer sur Add Features.
Ajouter la fonctionnalité AD DS Snap-Ins and Command-Line Tools dans Remote Server Administration Tools | AD DS and AD LDS Tools | AD DS Tools.

Etape 2 : autoriser l’exécution des scripts PowerShell non signés
Entrer la commande suivante pour autoriser l’exécution des scripts non signés :
Set-ExecutionPolicy Unrestricted

Etape 3 : créer le script c:\_adm\supervision\supervision.ps1
Copier le code disponible à cette adresse http://msreport.free.fr/articles/supervision.txt

Etape 4 : configuration Nagios
Configurer Nagios pour lire les 4 fichiers résultats et afficher une alerte selon le résultat de chaque fichier OK ou KO.

Variante du script
Vous pouvez aussi configurer un monitoring par serveur en supprimant l’option /V du DCDIAG. Il faut alors configurer sur chaque contrôleur de domaine à analyser le script. Cela permet d’utiliser les tests DNS de l’outil DCDIAG.

Remarque :
Pour les petits malins, la version téléchargeable du DCDIAG en anglais est que pour Windows 2003. Elle ne prend pas en charge pas exemple la réplication du dossier SYSVOL avec le moteur DFS-R. Installer un serveur en anglais membre du domaine pour superviser votre annuaire en français. N’utiliser pas ce lien :
http://www.microsoft.com/en-us/download/details.aspx?id=31063

A+

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

Publié dans Active Directory, Annuaire, Outils, PowerShell, Scripts, Windows 2012, Windows Server 2008 R2 | Laisser un commentaire

Procédure de PRA Active Directory -> scénario Forest Recovery

Bonjour

Objectif de cet article :
Présenter la procédure de restauration d’un annuaire Active Directory en cas de corruption du schéma ou d’un changement non souhaitable au niveau de la partition de configuration Active Directory (exemple : suppression d’un domaine de la forêt).

A savoir :
- La réplication Active Directory se base sur un système de numéros de séquence. En simplifiant (c’est beaucoup plus compliqué), le principe est qu’un contrôleur de domaine A (DCA) réplique un objet depuis le contrôleur de domaine B (DCB) si le numéro de séquence de l’objet sur DCA est inférieur au numéro de séquence de l’objet sur DCB. Voir article Microsoft :
http://technet.microsoft.com/en-us/library/cc772726(v=ws.10).aspx
- Active Directory permet d’effectuer une restauration autoritaire de la partition de domaine. Cette procédure permet par exemple de restaurer une OU supprimée accidentellement en restaurant l’état du système et en utilisant l’outil NTDSUTIL pour incrémenter le numéro de séquence (USN) de chaque objet à restaurer. Pour plus d’informations, voir :
http://technet.microsoft.com/fr-fr/library/cc816878(v=ws.10).aspx
- Microsoft ne supporte pas d’effectuer une restauration autoritaire de la partition de configuration ou de la partition de schéma Active Directory. En cas de corruption du schéma Active Directory (échec mise à jour du schéma, attribut ajouté manuellement en conflit…) ou de changement dans la configuration de l’annuaire (comme la suppression d’un domaine), la seule solution est d’appliquer la procédure Forest Recovery Active Directory. Pour plus d’informations, voir :
http://technet.microsoft.com/fr-fr/library/cc757662(v=ws.10).aspx

Présentation de l’annuaire (ce n’est pas des prérequis juste ma configuration) :
- 1 domaine Active Directory appelé msreport.intra avec 20 contrôleurs de domaine Windows 2008 R2 appelés DCA, DCB, DCC…
- DCA héberge les 5 rôles FSMO.
- Tous les contrôleurs de domaine sont Catalogue Global et serveur DNS.
- Tous les contrôleurs de domaine sont des machines virtuelles VMware ESX 5.1.
- Le contrôleur de domaine DCB est sauvegardée avec Windows Server Backup sur un disque dédié une fois par jour (disque de 80 Go).
- NTFRS est le moteur de réplication pour le répertoire SYSVOL (on a pas encore basculé en DFS-R).
- Le domaine est en mode natif 2008 R2
- DCB se trouve dans le site avec ID 0 (résultat commande NTDSUTIL List sites).

La procédure ci-dessous présente comment effectuer la procédure Forest Recovery dans un environnement de qualification (cohabitation avec l’environnement de production).
Seul le contrôleur de domaine DCB est restauré dans ce scénario. Les autres contrôleurs de domaine sont réinstallés via l’assistant DCPROMO (ajout d’un contrôleur de domaine supplémentaire).

Etape 1 : préparation de l’environnement :

Cas 1 : test d’un PRA :
Si vous testez la procédure de PRA sur un environnement de qualification, la première étape est de créer un vSwitch PRA-ISOLE (VM port group).
Ce vSwitch ne doit pas être lié à une carte réseau physique (pas d’adaptateur).
Créer une machine virtuelle appelée DCB-PRA avec la même configuration matérielle que DCB :
- Taille de disque : 40 Go
- Contrôleur SAS : LSI Logic SAS
- 1 carte réseau : E1000
- Version de machine virtuelle : 8
- Configurer la carte réseau sur le VM Port group (vswitch) PRA-ISOLE

Cas 2 : application réelle d’un PRA Active Directory
Si vous souhaitez réellement effectuer une restauration dans le scénario Forest Recovery :
- Arrêter tous les contrôleurs de domaine ou au pire empêcher ces serveurs de communiquer sur le réseau définitivement (bloquer les ports réseaux sur le switch le temps de pouvoir les arrêter définitivement).
Si vous devez conserver les serveurs, faire un DCPROMO /forceremoval sur tous les contrôleurs de domaine sauf celui que vous restaurez (DCB).

Etape 2 : préparation de la restauration :
Déconnecter le disque de sauvegarde Windows Server Backup sur DCB.
Le connecter sur la machine DCB-PRA.
Sélectionner le choix Supprimer de la machine virtuelle sans supprimer le disque dur virtuelle (fichier VMDK).
Noter l’emplacement (datastore VMFS) du fichier VMDK.
Avec Windows 2008 R2 il est possible d’ajouter / supprimer à chaud des disques.

Etape 3 : restaurer la VM à l’aide de Windows Server Backup :
Démarrer sur le DVD d’installation de Windows 2008 R2 et choisir Repair your computer.
Sélectionner ensuite Restore your computer using a system image that you created earlier.
Sélectionner ensuite Select a system image.
Sélectionner ensuite le disque de sauvegarde Windows Server Backup.
Sélectionner la sauvegarde que vous souhaiterez restaurer.
Configurer la sauvegarde pour ne pas redémarrer le serveur automatiquement.
Cliquer sur Next plusieurs fois. Tout le contenu du disque de DCB-PRA est supprimée.
Une fois la restauration terminée, débrancher la carte réseau et redémarrer.

Remarque très importante :
Il est très fortement déconseiller de restaurer un contrôleur de domaine sur une période de temps supérieure à la TombstoneLifeTime (60 ou 180 jours par défaut selon le cas). Voir :
http://www.petri.co.il/changing_the_tombstone_lifetime_windows_ad.htm

Etape 4 : reconfiguration réseau :
Reconnecter la carte réseau et lui affecter une adresse IP dans une plage non routée du réseau de production. Cette action ne doit être effectuée que dans le cadre de la simulation du PRA.
En situation réelle, vérifier que la carte réseau a conservée l’adresse IP d’origine. La redéfinir si besoin.
Redémarrer le serveur.
A cette étape, si on essaie de lancer la console Utilisateurs et Ordinateurs Active Directory après redémarrage, on a ce message d’erreur.
Les informations de noms sont introuvables pour la raison suivante : le serveur n’est pas opérationnel….
Cela est dû au fait que le service DNS n’arrive pas à charger les zones DNS du domaine car l’annuaire Active Directory n’arrive pas à effectuer la synchronisation initiale avec les autres contrôleurs de domaine (procédure standard après une restauration).

Etape 5 : faire une restauration autoritaire de NTFRS :
Il faut obligatoirement faire une restauration autoritaire de NTFRS.
Arrêter le service NTFRS en entrant la commande suivante :
Net stop ntfrs
Modifier l’entrée de registre BurFlags (REG_DWORD) existante à D4 (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ NtFrs\Parameters\Backup/Restore\Process at Startup).
Si le dossier c:\windows\sysvol\sysvol\nomdnsdomaine est vide, déplacer le contenu du dossier c:\windows\sysvol\sysvol\nomdomainedns\NTFRS_PreExistingXXX dans c:\windows\sysvol\sysvol\nomdomainedns.
Dans notre cas nomdomainedns est msreport.intra.
Taper la commande net start ntfrs.
Taper la commande net share et vérifier que les partages Netlogon et Sysvol existent.

Etape 6 : configurer l’entrée de registre Repl Perform Initial Synchronisations :
Créer l’entrée de registre Repl Perform Initial Synchronizations (REG_DWORD) à la valeur 0 dans HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters
Redémarrer ensuite le serveur.
Pour plus d’informations :
http://support.microsoft.com/kb/2001093/en-us

Etape 7 : supprimer les références de tous les contrôleurs de domaine sauf DCB dans l’annuaire :
Comme on fait une restauration de la partition de configuration ou du schéma, on ne peut pas restaurer les 19 autres contrôleurs de domaine. On est obligé de les supprimer manuellement.
L’exemple ci-dessous montre la procédure à appliquer pour les 19 contrôleurs de domaine qui ne sont pas restaurés.
Pour rappel ces 19 contrôleurs de domaine doivent avoir été arrêtés à l’étape 1. Si un seul contrôleur de domaine reste en ligne, les actions néfastes seront répliquées sur le DC restauré (DCB) et tout sera à refaire !
Pour supprimer DCA, entrer les commandes suivantes :
ntdsutil
metadata cleanup
connections
connect to server DCB
quit
Select operation target
List domains
select domain 0
List sites
Sélectionner le site où se trouve chaque contrôleur de domaine DCA (ID 0 dans notre cas)
select site 0
List servers in site
Sélectionner le contrôleur de domaine DCA. Dans notre cas celui avec l’ID 0.
Select server 0
quit
Remove selected server.
Confirmer la suppression de DCA.
Comme DCA avait les 5 rôles FSMO, ces derniers sont transférés sur DCB. Accepter le transfert des rôles.
Faire cette procédure pour tous les autres contrôleurs de domaine sauf DCB.

Etape 8 : finalisation de la restauration :
Lancer la console Active Directory Sites et Services et supprimer les objets correspondants aux anciens contrôleurs de domaine.
Lancer la console DNS et supprimer les entrée NS correspondant aux anciens contrôleurs de domaine non restaurés dans les zones DNS.

En cas de compromission de la sécurité :
Les actions suivantes doivent être effectuées en cas de compromission de la sécurité de l’annuaire par un tiers. La simple restauration à l’état initial permet un retour au bon fonctionnement de l’annuaire mais ne protègera pas contre une nouvelle attaque. Pour se protéger il faut effectuer les actions suivantes :
- Réinitialiser le mot de passe de compte de chaque contrôleur de domaine 2 fois.
- Réinitialiser tous les mots des comptes membres des groupes Admins du domaine, Administrateurs, Opérateurs de sauvegarde, Opérateurs d’impression.
- Réinitialiser le mot de passe du compte KRBTG deux fois.
- Réinitialiser deux fois les mots de passe des relations d’approbation.
Pour plus d’informations :
http://technet.microsoft.com/fr-fr/library/cc757662(v=ws.10).aspx

La procédure indique aussi de régénérer le catalogue globale. Si vous effectuez cette procédure pour un domaine unique dans une forêt, cela ne me semble pas nécessaire.

Etape 9 : retour à un fonctionnement standard :
Réinstaller tous vos contrôleurs de domaine et les ajouter en tant que contrôleurs de domaine supplémentaires via l’assistant DCPROMO pour le domaine msreport.intra.
Transférer les rôles FSMO sur DCA et configurer ce serveur pour se synchroniser avec une source de temps externe.

Conclusion:
Cette procédure de PRA devrait être testée tous les 6 mois !
Eviter de restaurer trop loin dans le passé (idéalement quelques jours au plus). Vous pouvez avoir des problèmes avec les mots de passe de compte ordinateur sur les machines membres dans le cas contraire.

MAJ 29/12/2014 :
Le scénario Forest Recovery présenté dans cet article s’applique plus au scénario « Corruption du schéma / partition de configuration ».
Si votre annuaire a été compromis au niveau de sa sécurité, vous devez aussi exécuter un Forest Recovery et appliquer cette fois ci toutes les recommandations de Microsoft de sécurité comme :
- La réinitialisation des mots de passe des comptes ordinateurs (un nombre de fois = historique des mots de passe + 1)
- La réinitialisation du mot de passe du compte krbtgt (un nombre de fois = historique des mots de passe + 1). Si ce compte est compromis, tout le protocole d’authentification Kerberos est compromis.
- La réinitialisation des mots de passe  des comptes d’administration.
- La réinitialisation des mots de passe des Relation d’approbation.

A+

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

Publié dans Active Directory, Annuaire, Système, Troubleshouting, Windows Server 2008 R2 | Marqué avec , , , | Un commentaire

Complément d’informations sur les stratégies de groupe –> le cache des stratégies de groupe sur les machines Windows XP et Windows 7

Bonjour

Objectif :
Déterminer comment s’applique les stratégies de groupe sur une machine Windows XP / Windows 7.

Scénario 1 :
Se connecter sur un contrôleur de domaine (Windows 2008 R2 dans l’exemple).
Créer une OU appelée Msreport-Computers. Joindre une machine Windows 7 appelée Melanie-computers dans le domaine et déplacer le compte ordinateur de cette machine dans cette OU.
Créer la GPO Msreport-Computers. Aller dans Computer configuration | Policies | Windows Settings | Security Settings | Windows Firewall with advanced Security. Configurer la GPO pour activer le pare feu sur les 3 profils. Bloquer les connexions entrantes et autoriser les connexions sortantes (paramètres par défaut).
Sur la machine Melanie-Computers, lancer cmd.exe puis entrer la commande gpupdate /force.
Aller dans le Control Pannel | cliquer sur View by Small icons. Cliquer sur Administrative Tools | Windows firewall with advanced settings. La console se lance et affiche que le pare feu est configuré à l’aide des stratégies de groupe.
Maintenant qu’on a reproduit l’environnement, on va essayer de supprimer cette GPO depuis la base de registre de la machine Melanie-Computers
Editer l’entrée de registre EnableFirewall (REG_DWORD) et lui définir comme valeur 0 (au lieu de la valeur 1) au niveau de la clé  HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\Domain Profile.
Le pare feu est maintenant désactivé.
Redémarrer ensuite la machine ou relancer le service Windows Firewall.
Aller dans le Control Pannel | cliquer sur View by Small icons. Cliquer sur Administrative Tools | Windows firewall with advanced settings. La console se lance et affiche que le pare feu est configuré à l’aide des stratégies de groupe.
Si on entre la commande gpupdate /force de nouveau, les anciens paramètres de la GPO s’appliquent de nouveau. Le pare feu sera actif de nouveau.
Editer de nouveau l’entrée de registre EnableFirewall (REG_DWORD) et lui définir comme valeur 0 au niveau de la clé HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\Domain Profile. Le pare feu est maintenant désactivé.
Aller dans les propriétés (onglet Sécurité) de la clé HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall.
Cliquer sur Advanced . Sélectionner le compte System et cliquer sur Edit.
Interdire les droits suivants pour ce compte:
- Set Value
- Create subkeys
- Delete
- Write owner
- Read control.
Lorsque l’on fait un gpupdate /force on a maintenant un message d’erreur qui indique que l’application des stratégies de groupe a échoué : The processing of Group Policy failed because of an internal system error
Tous les paramètres du pare feu dans HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall sont supprimés. C’est en effet le compte SYSTEM qui applique les GPO de type Configuration Ordinateur.
Le service Windows Firewall n’est pas impacté car il s’exécute avec le compte Local service et non le compte SYSTEM.
Il ne faut pas interdire contrôle totale (inclue lecture) au compte SYSTEM sur les clés de registre. Cela pourrait bloquer le démarrage de certains services qui utilise le compte SYSTEM pour exécuter le service !
On constate que le pare feu continue à fonctionner et que l’on peut le configurer manuellement via la console Windows Firewall with Advanced Features. Cela est du au fait que le pare feu dispose de ses propres fichiers / entrées de registre de configuration.
Les valeurs de registre dans HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall sont la manière de configurer le pare feu via les GPO. Cette configuration est prioritaire sur la configuration standard du pare feu (via la console).

Explication :

En fait les GPO modifie pas en règle générale directement la configuration des applications.
Elles utilisent toujours un second emplacement de configuration prioritaire par rapport à la configuration standard (manuelle) de l’application. Les principaux emplacements de configuration via les stratégies de groupes se trouvent dans :
HKEY_LOCAL_MACHINE\SOFTWARE\Policies
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Policies
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\ CurrentVersion\Policies
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Policies
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Group Policy
HKEY_CURRENT_USER\SOFTWARE\Policies

On notera aussi que pour faire ce changement je dois être administrateur local de la machine. La morale est donc que lorsqu’on est administrateur local, on peut toujours arriver à outrepasser les GPO.

Pour plus d’informations :
http://support.microsoft.com/kb/201453/en-us
http://technet.microsoft.com/en-us/library/cc786941(v=ws.10).aspx

Scénario 2 :
Créer une OU appelée Msreport-Users. Créer un compte utilisateur appelé melanie.mathieu.
Créer un objet de GPO appelé Msreport-Users et le lier à l’OU Msreport-users.
Editer la GPO et définir le paramètre Prohibit access to the Control Pannel dans User Configuration | Administrative Tools | Control Panel. Mettre cette GPO à la valeur Enabled.
Cela crée l’entrée de registre NoControlPanel (REG_DWORD) à la valeur 1 dans HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer.
Au niveau des droits d’accès sur cette clé Explorer, on remarquera que le compte melanie.mathieu ne dispose que du droit de lire (le compte system et le groupe administrateurs disposent du contrôle totale) et que le compte SYSTEM est propriétaire de l’entrée. Il faut donc être administrateur de la machine pour modifier cette clé et bloquer l’application de cette GPO à l’aide de la solution vue dans le scénario 1.

Problème d’application des GPO :
Parfois l’erreur suivant apparaît sur des machines Windows (exemple avec Windows XP) :
Type de l’événement :    Erreur
Source de l’événement : Userenv
Catégorie de l’événement :         Aucun
ID de l’événement :        1047
Date :               11/09/2013
Heure :             11:38:40
Utilisateur :       AUTORITE NT\SYSTEM
Ordinateur :       MSREPORTO05
Description :
Windows ne peut pas lire l’historique des objets de paramètre de groupe à partir du Registre. Le traitement de la stratégie de groupe continue.
Pour plus d’informations, consultez le centre Aide et support à l’adresse http://go.microsoft.com/fwlink/events.asp.

Ces justement lié au cache des GPO qui s’applique mal.
Il faut alors supprimer ce cache comme vu précédemment.
Ce problème se produit si on a déployé des stations de travail à partir d’un modèle qui n’était pas en groupe de travail ou qui avait encore des restes du cache des stratégies de groupe (machine intégrée dans le domaine puis repassée en groupe de travail pour la capture de l’image).

A+

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

Publié dans Active Directory, Annuaire, GPO, Registre, Sécurité, Système, Troubleshouting, Windows 2000 Pro, Windows 2000 Server, Windows 2003 Server, Windows 2012, Windows Server 2008, Windows Server 2008 R2, Windows Seven, Windows Vista, Windows XP | Marqué avec , , | Laisser un commentaire

Configurer Internet Explorer 10 via les stratégies de groupe -> pas simple !

Bonjour

Objectif :
- Configurer Internet Explorer 10 via les stratégies de groupe.

Description du problème :
Si on essaie de configurer Internet Explorer via la console GPMC depuis une machine Windows 2008 R2 :
- On a la possibilité de configurer Internet Explorer via User Configuration | Windows Settings | Internet Explorer maintenance mode. Cependant cela ne fonctionne plus à partir d’Internet Explorer 10.
- On a aussi la possibilité d’utiliser le module des GPO de préférences dans User Configuration | Preferences | Control Panel Settings | Internet Settings. Cependant quand on ne peut créer un profil que pour Internet Explorer 5, 6, 7, 8. Il y a une astuce pour prendre en charge Internet Explorer 9 en modifiant manuellement les fichiers de la GPO dans SYSVOL mais je la déconseille.

Solution :
Pour configurer Internet Explorer 10 via la stratégies de groupe, la solution la plus solution simple est de déployer un serveur Windows 2012.
- On constate alors que le module Internet Explorer Maintenance Mode n’existe plus. En effet ce dernier est déprécié.
- On peut maintenant utiliser le module GPO de préférence dans User Configuration | Preferences | Control Panel Settings | Internet Settings. En effet on peut avec Windows 2012 configurer Internet Explorer 9 et 10 aussi.
Attention comme expliqué dans l’article ci dessous, les paramètres Internet Explorer doivent être configurées pour s’appliquer en appuyant sur F5 ou F6. Par défaut cela ne s’applique pas ! Le module Paramètres Internet peut en effet être configuré pour toujours écrasés la configuration du navigateur ou seulement l’écraser la première fois.
http://blogs.technet.com/b/grouppolicy/archive/2008/10/13/red-green-gp-preferences-doesn-t-work-even-though-the-policy-applied-and-after-gpupdate-force.aspx,

Pour rappel, le client GPO de préférences est inclus de base sur les machines Windows Seven. Ce n’est pas le cas pour les machines Windows XP. Pour télécharger ce client, voir :
http://www.microsoft.com/fr-fr/download/details.aspx?id=3628

Si vous utilisez Internet Explorer 8 ou 9 (Windows XP) et Internet Explorer 10 (Windows 7), je vous invite à cérer deux GPO et à faire un filtre WMI sur la version de l’OS.
- Utiliser alors le module des GPO de préférences pour configurer Internet Explorer 10 sur les machines Windows 7.
- Utiliser Internet Explorer Maintenance Mode pour les machines Windows XP si ces dernières n’ont pas le module client pour les GPO de préférences.

Pour plus d’informations :
http://blogs.technet.com/b/grouppolicy/archive/2008/10/13/red-green-gp-preferences-doesn-t-work-even-though-the-policy-applied-and-after-gpupdate-force.aspx
http://technet.microsoft.com/en-us/library/jj890998.aspx
http://technet.microsoft.com/en-us/library/jj890998.aspx
http://www.grouppolicy.biz/2011/03/how-to-enable-group-policy-preferences-support-for-ie9/
http://4sysops.com/archives/internet-explorer-10-administration-part-3-group-policy-preferences/
http://4sysops.com/archives/internet-explorer-10-administration-part-3-group-policy-preferences/
http://4sysops.com/archives/internet-explorer-10-administration-part-3-group-policy-preferences/
http://support.microsoft.com/kb/2530309

A+
Guillaume MATHIEU
Proservia
06.37.20.23.20

Publié dans Active Directory, Annuaire, Internet Explorer, Système, Windows 2012, Windows Server 2008 R2 | Marqué avec , | Laisser un commentaire

Nouveau support de cours Windows 2012 disponible gratuitement!

Salut à tous

Je viens de terminer mon support de cours Windows 2012.
C’est une première version qui va s’enrichir progressivement.

1. Présentation de Windows 2012 :
- Vue d’ensemble des nouveautés.
- La nouvelle politique de licences.
2. Installation de Windows 2012:
- Prérequis, mode d’installation
3. Les outils d’administration :
- Le Server Manager
- PowerShell V3
4. Le rôle Active Directory Domain Services :
- Les nouveautés du service d’annuaire
5. Les services réseaux DNS, WINS et DHCP :
- Le nouveau système de réplication du service DHCP
6. La sauvegarde / restauration sous Windows 2012 :
- Vue d’ensemble de Windows Server Backup

Pour télécharger le support de cours, cliquer sur le lien ci dessous :
http://msreport.free.fr/articles/Windows-2012-v1.pdf

A+

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

Publié dans Active Directory, Annuaire, Hyper-V, PowerShell, Scripts, Système, Virtualisation, Windows 2012 | 2 commentaires

Comment gérer Active Directory Certificates Services avec PowerShell ?

Salut à tous

Synthèse du besoin
Gérer une autorité de certification Microsoft hébergé sur un serveur Windows 2008 R2 Enterprise SP1 avec PowerShell. Le but est de :
1. Exporter automatiquement tout nouveau certificat émis au format PFX via la fonctionnalité d’agent de récupération / archivage de clés privées.
2. Générer un rapport avec la liste des certificats révoqués.
3. Générer un rapport avec la liste des certificats qui vont expirés.

A savoir
Il n’existe pas de module PowerShell fournis par Microsoft pour gérer Active Directory Certificates Services avec Windows 2008 R2 (contrairement à Windows 2012).
En faisant quelques recherches sur Internet, j’ai découvert le module PowerShell PSPKI. Ce dernier est vraiment très bien fait.

Solution
Nous allons nous appuyer sur les fonctionnalités de l’audit et le module PowerShell PSPKI pour répondre aux besoins.

Etape 1 : activation de l’audit au niveau de la PKI et des GPO
Il faut activer l’audit comme expliqué dans l’article Microsoft ci-dessous :
http://technet.microsoft.com/fr-fr/library/cc772451.aspx

Etape 2 : installation du module PSPKI
Installer le module PSPKI disponible sur le serveur Active Directory Certificates Services ou sur votre serveur d’administration.
http://poweradmin.se/blog/2011/08/09/adcs-certificate-expiration-report-tool/
http://pspki.codeplex.com/

Etape 3 : autoriser l’exécution des scripts PowerShell non signés
Entrer la commande PowerShell ci dessous :
Set-ExecutionPolicy Unrestricted
Une solution alternative est de signer vos scripts (plus sécurisés).

Etape 4 : activer l’archivage des clés privées au niveau de l’autorité de certification
L’autorité de certification doit être configurée pour déployer le modèle de certificat Agent de récupération des clés privées. Le modèle par défaut a été modifiée afin de ne pas demander d’approbation à la génération du certificat. Seuls les membres du groupe Admins du domaine peuvent effectuer une demande pour ce modèle de certificats.
Un compte utilisateur AdminPKI a été créé. Ce compte a été défini en tant que membre du groupe Admins du domaine. Le mot de passe de ce compte a été défini pour ne jamais expirer. Un certificat basé sur le modèle Key Recovery Agent a été généré pour ce compte.
L’autorité de certification a ensuite été configurée pour archiver les clés privées avec ce certificat (au niveau des propriétés de l’autorité de certification). Une procédure pas à pas est fournis par Microsoft à ces emplacements :
http://technet.microsoft.com/en-us/library/cc753011.aspx
http://technet.microsoft.com/en-us/library/cc730721.aspx
http://technet.microsoft.com/en-us/library/cc770588.aspx

Etape 5 : Associer un script à l’événement d’audit correspondant à la génération d’un certificat
Le script ci dessous permet de générer un fichier PFX du dernier certificat émis par l’autorité de certification via la fonctionnalité d’archivage des clés privées.
Copier pour cela le script ci-dessous dans le fichier c:\script.ps1.
# Importation du module PSPKI
Import-Module PSPKI
# Liste tous les certificats émis
$base = Get-CertificationAuthority -Name TPNAT | Get-IssuedRequest | Select-Object SerialNumber
# Retrouve le numéro de séries du derniers certificats émis
$SerialNumber = $($base[$($base.count)-1]).SerialNumber
$tmpfile = « c:\$SerialNumber.tmp »
# Exportation du certificat au format PFX vers c:\valeur-numero-serie.pfx.
Certutil -getkey $SerialNumber $tmpfile
$pfx = « c:\$SerialNumber.pfx »
Certutil -p P@ssword -recoverkey $tmpfile $pfx

Quand un nouveau certificat est généré, l’événement suivant est généré (car on a activé l’audit).
Log Name:      Security
Source:        Microsoft-Windows-Security-Auditing
Date:          02/09/2013 16:49:03
Event ID:      4887
Task Category: Certification Services
Level:         Information
Keywords:      Audit Success
User:          N/A
Computer:      WIN-M4TUIL6MDL0.tpnat.intra
Description:
Certificate Services approved a certificate request and issued a certificate. 
Request ID: 50
Requester: TPNAT\Administrator
Attributes: 
cdc:WIN-M4TUIL6MDL0.tpnat.intra
rmd:WIN-M4TUIL6MDL0.tpnat.intra
ccm:WIN-M4TUIL6MDL0.tpnat.intra
Disposition: 3
SKI:  da 47 3a c8 b9 73 f4 86 83 03 34 9a 15 1a a8 cc 8c 10 be f1
Subject: E=Administrator@tpnat.intra, CN=Administrator, CN=Users, DC=tpnat, DC=intra

On va donc associer le script ci-dessous à cet événement. Sélectionner l’événement dans le journal et cliquer dans le menu action sur associer une tâche.
Entrer c:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -file c:\script.ps1.
A cette étape, on vient de remplir le premier objectif.

Etape 6 : générer un rapport avec la liste des certificats révoqués
La solution ci-dessous s’appuie sur le module PowerShell PSPKI.
Créer le fichier c:\certificats-revoques.ps1 et copier le contenu suivant dans ce fichier.
Import-Module PSPKI
Get-CertificationAuthority -Name TPNAT | Get-RevokedRequest | Select-Object Request.RequestID,CommonName, SerialNumber, Request.RevokedReason | Export-Csv –Path c:\revoque.csv -Encoding UTF8 –UseCulture
On obtient un fichier CSV c:\revoque.csv en résultat. il faut supprimer la première ligne (en tête PowerShell).
A cette étape, on vient  de remplir le second objectif.
 
Etape 7 : générer un rapport avec la liste des certificats qui vont expirés
On s’appuie toujours sur le module PowerShell PSPKI.
Créer le fichier c:\rapport.ps1 et copier le contenu du script ci-dessous :
param(
  [string] $computername = “$ENV:COMPUTERNAME”,
  [string] $reportfile = “$ENV:USERPROFILE\Desktop\PKIRAPPORT.html”
   )
# Variables
$caname = $computername.ToLower()
$domaindns = $ENV:USERDNSDOMAIN.ToLower()
$todaysdate = Get-Date
$findaldate = $todaysdate.AddMonths(36)

# Vérifie que PSPKI est installé.
if(Get-Module -ListAvailable -Name PSPKI | Where-Object { $_.name -eq “PSPKI” })

  # Vérifie que PSPKI est chargé
  if (!(Get-Module -Name PSPKI | Where-Object { $_.name -eq “PSPKI” })) 
  {
    Write-Host “Importation du module PSPKI” -ForegroundColor “Yellow”
    Import-Module -Name PSPKI
  }
  # Génère le rapport
  $htmlpre = “<P>Generated by user: $ENV:USERNAME</P><P>Les certificats vont suivant expirés avant $findaldate</P>”
  $htmlpost = “<P>Certificate expiration information retrived from $caname.$domaindns</P>”
  $htmltitle = “Autorité de certification : $caname.$domaindns”
  $htmlinput = Get-CertificationAuthority “$caname.$domaindns” | Get-IssuedRequest -Filter “NotAfter -ge $(Get-Date)”, “NotAfter -le $findaldate”
  $htmlinput | ConvertTo-Html -Body (Get-Date) “Report date:” -Property RequestID,RequesterName,CommonName,NotBefore,NotAfter,SerialNumber -Pre $htmlpre -Post $htmlpost -Title $htmltitle | Out-File -FilePath $reportfile
  # Chargement du rapport
  Invoke-Item $reportfile
  }
else
{
  Write-Host “PSPKI is not installed. Please install it from http://pspki.codeplex.com/ ” -ForegroundColor “Yellow” 
}
On vient de remplir le troisième objectifs.
Merci PowerShell / PSPKI.

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

Publié dans Annuaire, Certificats, PowerShell, Sécurité, Scripts, Windows Server 2008 R2 | Laisser un commentaire

Comment est chiffré / retrouver le mot de passe d’un compte utilisateur -> désactiver le chiffrement LMHASH !

Salut à tous

Cet article a pour but de vous présenter :
- Comment est chiffré le mot de passe dans un domaine Active Directory et quels sont les risques en terme de sécurité du chiffrement LMHASH ?
- La procédure pour récupérer le mot de passe d’un compte utilisateur en déchiffrant le mot de passe au format LMHASH.
- La procédure pour supprimer le chiffrement LMHASH.

1. Comment est chiffré le mot de passe dans un domaine Active Directory et quels sont les risques en terme de sécurité du chiffrement LMHASH ?
Les mots de passe d’un annuaire Active Directory sont chiffrés via deux méthodes :
- Le LMHASH (si mot de passe de moins de 15 caractères). Cette algorithme de chiffrement n’est plus fiable. En copiant le HASH sur un site web spécialisé comme http://www.objectif-securite.ch/, il est possible de retrouver la valeur du mot de passe.
- Le NTHASH : cette méthode est sécurisée.
Le mot de passe au format LMHASH est converti en majuscule et découpé en deux blocs de 7 octets (1 octet = 1 caractère). Les caractères non renseignés sont remplacés par des bits à 0.
Les attributs qui gèrent les mots de passe dans Active Directory sont protégés en lecture d’où le fait que l’attribut dBCSPwd (mot de passe au format LMHASH) et lmPwdHistory (historique des mots de passe au format LMHASH) apparaissent en non défini avec ADSIEDIT.
Nous allons voir dans la partie suivant comment créer une copie de l’annuaire et de la monter comme une simple base LDAP. L’outil NTDSXtract permettra d’extraire  la valeur des attributs dBCSPwd et lmPwdHistory.

2. La procédure pour récupérer le mot de passe d’un compte utilisateur en déchiffrant le mot de passe au format LMHASH :

2.1 Créer un média (IFM) de l’annuaire Active Directory :
La première étape est de créer un snapshot de l’annuaire Active Directory (il faut un contrôleur de domaine Windows 2008 R2). Pour ceux, sous Windows 2003, partir d’une sauvegarde de votre contrôleur de domaine (restaurer vers un emplacement différent).
Pour cela, ouvrir une session avec un compte utilisateur membre du groupe Admins du domaine et taper les commandes suivants :
Ntdsutil
Activate instance ntds
Ifm
Create full c:\ifm

2.2 Installer une machine sous Linux (RedHat Enterprise) :
Pour cette article, j’ai installé une machine virtuelle sous Debian 6 connectée au réseau d’entreprise.
Installer ensuite les VMware Tools. Pour cela :
apt-get install autoconf
apt-get install gcc-4.3*
apt-get install linux-headers-$(uname -r)
Dans le menu VM | Install VMware Tools.
Copier le fichier VMTools dans un répertoire de travail cp /media/cdrom/VMwareTools-8.4.2-261058.tar.gz /usr/local/src
Se positionner dans le répertoire cd /usr/local/src
Décompresser le fichier VMTools tar xzf /usr/local/src/VMwareTools-8.4.2-261058.tar.gz
Se positionner dans le répertoire cd /usr/local/src/vmware-tools-distrib/
Lancer le script ./vmware-install.pl
Répondre par défaut aux questions (touche entrée)
Les VMTools doivent s’installer et le cdrom virtuel se démonte automatiquement.
Redémarrer.
Pour plus d’informations sur l’installation des VMware Tools, voir l’article suivant :
http://eric.coquard.free.fr/Blog/files/86b7d124a6befcd0f4f1c2470c8dc04a-35.html
Installer GCC pour pouvoir compiler des sources en tapant la commande :
apt-get install gcc
apt-get install make

2.3 Télécharger et installer LIBESEDB :
LIBESEDB permet de monter une base de données ESE (Extensible Storage Engine). Pour rappel, Active Directory est une base ESE.
Télécharger LIBESEDB à cette adresse :
http://code.google.com/p/libesedb/
Dans le cadre de cet article, nous téléchargeons le fichier libesedb-alpha-20120102.tar.
Ouvrir une session sur le serveur Debian 6.
Aller dans Applications | Accessoires puis Terminal Administrateur.
S’authentifier en tant que root.
Aller dans le répertoire avec le fichier TAR et l’extraire.
tar -xvf libesedb-alpha-20120102.tar
Aller dans le répertoire LIBESEDB. Dans notre cas /home/gmathieu/Téléchargements/libesedb20120102.
Lancer la configuration des sources.
./configure
Compiler ensuite le programme en tapant la commande suivante :
make
Une fois la compilation terminée, taper la commande suivante pour installer l’application :
Make install

2.4 Télécharger et installer NTDSXtract :
Télécharger NTDSXtract à l’adresse suivante :
http://www.ntdsxtract.com/downloads/ntdsxtract/ntdsxtract_v1_0.zip

2.5 Récupération du LMHASH :
Copier le dossier c:\ifm dans /home/gmathieu/Téléchargement
cd /home/gmathieu/Téléchargements/libesedb-20120102/esedbtools
./esedbexport /home/gmathieu/Téléchargements/ifm/Active\ Directory/ntds.dit
La commande doit renvoyer ce résultat :
esedbexport 20120102
Opening file.
Exporting table 1 (MSysObjects) out of 11.
Exporting table 2 (MSysObjectsShadow) out of 11.
Exporting table 3 (MSysUnicodeFixupVer2) out of 11.
Exporting table 4 (datatable) out of 11.
Exporting table 5 (hiddentable) out of 11.
Exporting table 6 (link_table) out of 11.
Exporting table 7 (quota_rebuild_progress_table) out of 11.
Exporting table 8 (quota_table) out of 11.
Exporting table 9 (sdpropcounttable) out of 11.
Exporting table 10 (sdproptable) out of 11.
Exporting table 11 (sd_table) out of 11.
Export completed.
Elle génère un répertoire /ntds.dit.export dans le dossier esedbtools avec les fichiers suivants :
2745173 -rw-r–r– 1 root root 10400205 17 août  20:38 datatable.3
2745174 -rw-r–r– 1 root root      693 17 août  20:38 hiddentable.4
2745175 -rw-r–r– 1 root root    14680 17 août  20:38 link_table.5
2745170 -rw-r–r– 1 root root    75538 17 août  20:38 MSysObjects.0
2745171 -rw-r–r– 1 root root    75538 17 août  20:38 MSysObjectsShadow.1
2745172 -rw-r–r– 1 root root      103 17 août  20:38 MSysUnicodeFixupVer2.2
2745176 -rw-r–r– 1 root root       80 17 août  20:38 quota_rebuild_progress_table.6
2745177 -rw-r–r– 1 root root     1301 17 août  20:38 quota_table.7
2745178 -rw-r–r– 1 root root       14 17 août  20:38 sdpropcounttable.8
2745179 -rw-r–r– 1 root root       96 17 août  20:38 sdproptable.9
2745180 -rw-r–r– 1 root root    54996 17 août  20:38 sd_table.10
On va maintenant utiliser l’outil NTDSXtract pour récupérer le LMHASH.
Taper la commande suivante :
cp datatable.* « /home/gmathieu/Téléchargements/NTDSXtract 1.0″
cp link_table.* « /home/gmathieu/Téléchargements/NTDSXtract 1.0″
cp /home/gmathieu/Téléchargements/ifm/registry/*
« /home/gmathieu/Téléchargements/NTDSXtract 1.0″
cd “/home/gmathieu/Téléchargements/NTDSXtract 1.0”
python ./dsusers.py datatable.3 link_table.5 –passwordhashes SYSTEM 
La commande renvoie ce résultat :
Running with options:
Extracting password hashes
Initialising engine…
Scanning database – 100% -> 3717 records processed
Searching for Schema object – 100% -> 12 records processed
Extracting schema information – 100% -> 1549 records processed
Extracting object links… 
List of users:
==============
Record ID:           5768
User name:           Guillaume Mathieu
User principal name: guillaume.mathieu@tphat.intra
SAM Account name:    guillaume.mathieu
SAM Account type:    SAM_NORMAL_USER_ACCOUNT
GUID: 1eaee5d6-5f8f-4e8c-a840-31caddad6755
SID:  S-1-5-21-2163606747-459301225-4249714960-1121
When created:         2013-08-05 08:12:08
When changed:         2013-08-17 18:20:58
Account expires:      Never
Password last set:    2013-08-17 18:20:58.095203
Last logon:           2013-08-15 12:30:01.708144
Last logon timestamp: 2013-08-12 18:41:32.890748
Bad password time     2013-08-15 12:29:32.988494
Logon count:          18
Bad password count:   0
User Account Control:
NORMAL_ACCOUNT
PWD Never Expires
Ancestors:
$ROOT_OBJECT$ intra tphat Utilisateurs Guillaume Mathieu
Password hashes:
Guillaume Mathieu:$NT$13b29964cc2480b4ef454c59562e675c:::
Guillaume Mathieu:11cb3f697332ae4c4a3b108f3fa6cb6d:::
Avec la commande suivante on a même l’historique des mots de passe au format LMHASH :
python ./dsusers.py datatable.3 link_table.5 –passwordhashes SYSTEM –passwordhistory SYSTEM

MAJ 16/01/2015 : attention c’est 2 caractères « - » dans la commande avant  passwordhashes

Le résultat ci-dessous :
Record ID:           5768
User name:           Guillaume Mathieu
User principal name: guillaume.mathieu@tphat.intra
SAM Account name:    guillaume.mathieu
SAM Account type:    SAM_NORMAL_USER_ACCOUNT
GUID: 1eaee5d6-5f8f-4e8c-a840-31caddad6755
SID:  S-1-5-21-2163606747-459301225-4249714960-1121
When created:         2013-08-05 08:12:08
When changed:         2013-08-17 18:20:58
Account expires:      Never
Password last set:    2013-08-17 18:20:58.095203
Last logon:           2013-08-15 12:30:01.708144
Last logon timestamp: 2013-08-12 18:41:32.890748
Bad password time     2013-08-15 12:29:32.988494
Logon count:          18
Bad password count:   0
User Account Control:
            NORMAL_ACCOUNT
            PWD Never Expires
Ancestors:
            $ROOT_OBJECT$ intra tphat Utilisateurs Guillaume Mathieu
Password hashes:
            Guillaume Mathieu:$NT$13b29964cc2480b4ef454c59562e675c:::
            Guillaume Mathieu:11cb3f697332ae4c4a3b108f3fa6cb6d:::
Password history:
            Guillaume Mathieu_nthistory0:$NT$13b29964cc2480b4ef454c59562e675c:::
            Guillaume Mathieu_nthistory1:$NT$13b29964cc2480b4ef454c59562e675c:::
            Guillaume Mathieu_nthistory2:$NT$13b29964cc2480b4ef454c59562e675c:::
            Guillaume Mathieu_nthistory3:$NT$13b29964cc2480b4ef454c59562e675c:::
            Guillaume Mathieu_lmhistory0:11cb3f697332ae4c4a3b108f3fa6cb6d:::
            Guillaume Mathieu_lmhistory1:11cb3f697332ae4c4a3b108f3fa6cb6d:::
            Guillaume Mathieu_lmhistory2:99d1842dae7bad31a5615a0b1741a415:::
            Guillaume Mathieu_lmhistory3:ce2f42bb6280ebf4b01331c7e77ec962:::
Dans l’exemple ci-dessous, on a plusieurs fois le même mot de passe car l’administrateur a réinitialisé le mot de passe depuis la console Utilisateurs et Ordinateurs Active Directory.

2.6 Convertir le LMHASH en mot de passe :
Se connecter sur le site objectif sécurité et entrer le LMHASH :
http://www.objectif-securite.ch/ophcrack.php
Dans le cas du compte guillaume.mathieu, on a deux lignes Password Hashes :
Password hashes:
Guillaume Mathieu:$NT$13b29964cc2480b4ef454c59562e675c:::
Guillaume Mathieu:11cb3f697332ae4c4a3b108f3fa6cb6d:::
La ligne avec $NT$1 correspond au NTPASSORD.
La second ligne correspond au LMHASH.
Copier le LMHASH sous cette forme (11cb3f697332ae4c4a3b108f3fa6cb6d) à cette adresse :
http://www.objectif-securite.ch/ophcrack.php
On retrouve le mot de passe en majuscule.
L’application du site web se sert du NTHASH pour déterminer les caractères en majuscule.

3. La procédure pour supprimer le chiffrement LMHASH :
Maintenant que l’on a compris les danger du LMHASH, on va voir :
- Les prérequis pour désactiver le LMHASH
- Comment désactiver le LMHASH ?

3.1 Les prérequis pour désactiver le LMHASH :
Avant de désactiver le LMHASH, vérifier les points suivants :
- Vous ne disposez pas de machine sous Windows 95 / 98 ou Windows NT4 antérieur au SP3.
- Vous ne disposez pas de serveur SAMBA antérieur à la version 3.
- Vous ne disposez pas de cluster sous Windows 2000 ou Windows 2003.
- Pas de machine Apple sous Outlook 2001 en mode Exchange.
Pour les cluster Windows 2003 (MSCS) : il existe un correctif (KB 890761).
Pour les cluster Windows 2000 : vous devez être en SP3 minimum (KB 272129). La KB 828861 semble aussi indiquer qu’il faut obligatoirement sous Windows 2000 Server configurer le mot de passe du service cluster avec au moins 15 caractères si le LMHASH est désactivé. Le correctif ne semble en effet n’exister que pour Windows 2003.
Je vous invite à lire ces articles :
http://support.microsoft.com/kb/272129/en-us
http://support.microsoft.com/kb/299656/en-us
http://support.microsoft.com/kb/828861/en-us
http://support.microsoft.com/kb/890761/en-us
http://support.microsoft.com/kb/895092/en-us
http://www.markwilson.co.uk/blog/2004/06/problems-with-microsoft-clusters.htm
http://blogs.technet.com/b/askcore/archive/2011/08/11/windows-2003-server-cluster-and-access-denied-errors.aspx

3.2 Comment désactiver le LMHASH ?
Pour désactiver le LMHASH, vous pouvez appliquer une de ces deux méthodes :
- Activer la GPO « Network security: Do not store LAN Manager hash value on next password change ». Lancer la console GPMC.MSC. Editer la Default Domain Controller Policy. Aller dans Computer Configuration | Policies | Windows Settings | Security Settings. Configurer le paramètre « Do not store LAN Manager hash value on next password change » à Enabled.
- Définir un mot de passe supérieur à 15 caractères.
Attention, cela désactive le chiffrement LMHASH au prochain changement de mot de passe !
Il faut donc changer le mot de passe de tous les comptes utilisateurs et de tous les comptes ordinateurs au moins une fois.
Pour supprimer l’historique des mots de passe, il faut changer le mot de passe un nombre de fois correspondant à l’historique des mots de passe !
Remarque :
Le paramètre « No LMHASH » est activé par défaut sur les contrôleurs de domaine Windows 2008 R2. Donc attention quand vous migrez vos contrôleurs de domaine vers Windows 2008 R2.
Pour plus d’informations :
http://support.microsoft.com/kb/299656/en-us
http://support.microsoft.com/kb/946405/en-us

MAJ 21/08/2013 : l’outil Lm2ntcrack.exe permet de récupérer le mot de passe avec les majuscules et minuscules. Pour cela taper la commande suivante :
Lm2ntcrack.exe –l=”UPPERCASE_PASSWORD” –n=”NTHASH”

PS : merci à Mathieu W. et Damien W. pour la découverte du LMHASH.
http://www.xmco.fr/lm2ntcrack/lm2ntcrack-current_win32.zip

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

Publié dans Active Directory, Annuaire, Linux, Outils, Sécurité, Système, Windows 2000 Pro, Windows 2000 Server, Windows 2003 Server, Windows NT4, Windows Server 2008, Windows Server 2008 R2, Windows Seven, Windows Vista | Marqué avec , , , , , , , , , | Laisser un commentaire

Problème de plantage / fige sous Windows 7 -> désactiver le LPM (Link Power Management) !

Salut à tous

Je souhaite partager avec vous un retour d’expérience avec les disques SSD.
Suite à la mise à jour des drivers de mon contrôleur SATA Intel (le fameux Intel RST : Rapid Storage Technology), mon ordinateur portable Dell E6500 plantait de manière aléatoire, le plantage se présentant sous forme d’un fige progressif de ma machine, plus d’explorateur, plus de Gestionnaire de tâches et puis fige complet de la souris / clavier après une ou deux minutes de galère.
Après investigation, il s’avère que le problème provient de la fonctionnalité Link Power Management. Cette dernière désactive automatiquement mes disques durs quand ces derniers ne sont pas utilisés ! Sauf que mon contrôleur SATA semble très mal gérer cette fonctionnalité avec un SSD.

Pour désactiver LPM (Link Power Management) :
- Lancer Intel Rapid Storage Technology.
- Cliquer sur l’onglet performance.
- Configurer Link Power Management sur Disable en cliquant sur le lien Disabled.

Il est aussi possible de désactiver le LPM via l’ajout de cette entrée de registre.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\iaStor\Parameters\Port0]
« LPM »=dword:00000000
« LPMDSTATE »=dword:00000000
« DIPM »=dword:00000000

Cette entrée de registre désactive LPM pour le contrôleur SATA 0.
Pour déterminer le contrôleur SATA utilisé par votre disque SSD :
- Lancer Intel Rapid Storage Technology.
- Cliquer sur l’onglet Manage.
- Cliquer sur votre disque .
- Lire la valeur du Port : 0 dans mon cas.

Merci au rédacteur de cette article !
https://guizmo.biz/2011/12/31/intel-rapid-blow-up-technology

A+

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

Publié dans Bug, Freeze, Performance, Système, Troubleshouting, Windows Seven, Windows Vista | Marqué avec , , , | Laisser un commentaire

Lister toutes les authentifications réussies sur un contrôleur de domaine avec un script PowerShell

Salut à tous

Objectifs du script :
Lister toutes les authentifications réussies sur un contrôleur de domaine.
Déterminer l’IP de la machine depuis laquelle la demande d’authentification est effectuée, le nom de l’utilisateur et le protocole d’authentification (Kerberos, NTLM, LM).

Comment fonctionne le script :
Le script s’appuie sur la fonctionnalité d’audit des connexions Active Directory d’un contrôleur de domaine. Un prérequis à la bonne exécution du script est de valider que l’audit des ouvertures de session est activé. Je vous invite donc à lire cet article :
http://technet.microsoft.com/fr-FR/library/dd772712(WS.10).aspx
Quand un utilisateur / machine s’authentifie sur un contrôleur de domaine Windows 2008 R2, un événement ID 4624 est généré dans le journal Sécurité.
Le script récupère tous les événements avec l’ID 4624 et génère un fichier CSV en sortie.
Log Name: Security
Source: Microsoft-Windows-Security-Auditing
Date: 15/08/2013 14:25:00
Event ID: 4624
Task Category: Logon
Level: Information
Keywords: Audit Success
User: N/A
Computer: FR77VM0002.tphat.intra
Description:
An account was successfully logged on.
Subject:
Security ID: NULL SID
Account Name: -
Account Domain: -
Logon ID: 0×0
Logon Type: 3
New Logon:
Security ID: TPHAT\guillaume.mathieu
Account Name: guillaume.mathieu
Account Domain: TPHAT
Logon ID: 0x214a99
Logon GUID: {f1fa32df-0809-7c7b-2f69-7c3b3003e0a1}
Process Information:
Process ID: 0×0
Process Name: -
Network Information:
Workstation Name:
Source Network Address: 192.168.93.5
Source Port: 49411
Detailed Authentication Information:
Logon Process: Kerberos
Authentication Package: Kerberos
Transited Services: -
Package Name (NTLM only): -
Key Length: 0
This event is generated when a logon session is created. It is generated on the computer that was accessed.
The subject fields indicate the account on the local system which requested the logon. This is most commonly a service such as the Server service, or a local process such as Winlogon.exe or Services.exe.
The logon type field indicates the kind of logon that occurred. The most common types are 2 (interactive) and 3 (network).
The New Logon fields indicate the account for whom the new logon was created, i.e. the account that was logged on.
The network fields indicate where a remote logon request originated. Workstation name is not always available and may be left blank in some cases.
The authentication information fields provide detailed information about this specific logon request.
- Logon GUID is a unique identifier that can be used to correlate this event with a KDC event.
- Transited services indicate which intermediate services have participated in this logon request.
- Package name indicates which sub-protocol was used among the NTLM protocols.
- Key length indicates the length of the generated session key. This will be 0 if no session key was requested.

Code du script :
Créer le fichier C:\_adm\listconnexion.ps1 et copier le code disponible à cette adresse :
http://msreport.free.fr/articles/List-AD-Connections.txt
Le script génère un fichier c:\resultat.txt en sortie (exemple ci-dessous).

Heure;Utilisateur;IP;Protocole;Type authentification
08/15/2013 15:01:55;ANONYMOUS LOGON;192.168.93.5;NTLM;3
08/15/2013 15:01:55;ANONYMOUS LOGON;192.168.93.5;NTLM;3
08/15/2013 14:59:04;ANONYMOUS LOGON;192.168.94.1;NTLM;3
08/15/2013 14:59:04;ANONYMOUS LOGON;192.168.94.1;NTLM;3
08/15/2013 14:49:55;ANONYMOUS LOGON;192.168.93.5;NTLM;3
08/15/2013 14:49:55;ANONYMOUS LOGON;192.168.93.5;NTLM;3
08/15/2013 14:47:00;ANONYMOUS LOGON;192.168.94.1;NTLM;3
08/15/2013 14:47:00;ANONYMOUS LOGON;192.168.94.1;NTLM;3
08/15/2013 14:37:55;ANONYMOUS LOGON;192.168.93.5;NTLM;3
08/15/2013 14:37:55;ANONYMOUS LOGON;192.168.93.5;NTLM;3
08/15/2013 14:34:55;ANONYMOUS LOGON;192.168.94.1;NTLM;3
08/15/2013 14:34:55;ANONYMOUS LOGON;192.168.94.1;NTLM;3
08/15/2013 14:30:14;guillaume.mathieu;192.168.93.5;Kerberos;3
08/15/2013 14:30:02;guillaume.mathieu;192.168.93.5;Kerberos;3
08/15/2013 14:30:02;guillaume.mathieu;192.168.93.5;Kerberos;3
08/15/2013 14:30:02;guillaume.mathieu;192.168.93.5;Kerberos;3
08/15/2013 14:30:02;guillaume.mathieu;192.168.93.5;Kerberos;3

La ligne de code If (!($user.Contains(« $ »))) permet de supprimer du fichier résultat toutes authentifications des comptes ordinateur (machines membres ou contrôleurs de domaine).

Axes d’amélioration :
Centraliser tous les journaux “Sécurité” des contrôleurs de domaine. Exécuter le script à 23h59 tous les jours et purger le contenu de la souscription à la fin du script.
Pour configurer une souscription, je vous invite à lire cet article :
http://msreport.free.fr/?p=222

A+

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

Publié dans Active Directory, Annuaire, Audit, PowerShell, Sécurité, Scripts, Système, Windows Server 2008, Windows Server 2008 R2 | 4 commentaires

Alerter les utilisateurs dont le mot de passe va expirer avec PowerShell

Salut à tous

Objectifs du script :
Alerter les utilisateurs dont le mot de passe va expirer dans moins de 3 jours.

Comment fonctionne le script :
Ce script est basé sur le module PowerShell Quest ActiveRoles Management Shell.
Il compare la date d’aujourd’hui avec la date d’expiration du mot de passe (attribut passwordexpires).
Si le mot de passe expire dans 1, 2 ou 3 jours il envoie un mail.
Il est à noter que l’attribut Passwordexpires n’existe pas dans l’annuaire Active Directory. C’est le plugin Quest qui le calcule cette valeur à partir de l’attribut pwdLastSet.

Code du script :
Créer le fichier C:\_adm\expiration-compteV2.ps1 et copier le contenu ci dessous dans ce fichier.
# Variables
# Changer l’adresse email de l’expéditeur
$MSender = expediteur@votredomainedemessagerie.fr
# Changer l’adresse IP du serveur de messagerie
$MServer = « 192.168.0.1″
# Indiquer le chemin LDAP de votre annuaire
$Ldappath = « OU=Utilisateurs,DC=msreport,DC=intra »

# Fonction pour générer le mail
function Send-SMTPmail($to, $from, $subject, $body, $attachment, $cc, $bcc, $port, $timeout, $smtpserver, [switch] $html, [switch] $alert)
{
    if ($smtpserver -eq $null) {$smtpserver = $MServer}
    $mailer = new-object Net.Mail.SMTPclient($smtpserver)
    if ($port -ne $null) {$mailer.port = $port}
    if ($timeout -ne $null) {$mailer.timeout = $timeout}
    $msg = new-object Net.Mail.MailMessage($from,$to,$subject,$body)
    if ($html) {$msg.IsBodyHTML = $true}
    if ($cc -ne $null) {$msg.cc.add($cc)}
    if ($bcc -ne $null) {$msg.bcc.add($bcc)}
    if ($alert) {$msg.Headers.Add(« message-id », « <3bd50098e401463aa228377848493927-1> »)}
    if ($attachment -ne $null)
    {
        $attachment = new-object Net.Mail.Attachment($attachment)
        $msg.attachments.add($attachment)
    }
    $mailer.send($msg)

# Programme principal
# Chargement du module PowerShell Quest
add-PSSnapin -Name Quest.ActiveRoles.ADManagement -ErrorAction SilentlyContinue
$Today = get-date -format d
$users = Get-QADUser -enable -SizeLimit 0 -Searchroot $Ldappath | where-object {$_.PasswordNeverExpires -eq $false} | Select-Object name,mail,passwordexpires,samaccountname
foreach ($user in $users)
{
     if ($user.’passwordexpires’)
     {
        $usrmail = $user.mail
        $usrname = $user.name
        $usrlogin = $User.sAMAccountName
        $ExpiredDate = ($user.’passwordexpires’).adddays(-3)
        $today = (get-date).date
        #$today = (get-date -date 22/08/2012).date.adddays(-3)
        $difference = $ExpiredDate – $today
        if ($difference.Days -eq 3)
        {
               $MSubject = « Votre mot de passe va expirer dans 3 jours. »
               $Mbody = « Bonjour $usrname,<br><br>Votre <b>mot de passe de compte utilisateur ($usrlogin)</b> va expirer dans trois jours.<br><br>Merci de fermer votre session Windows et de vous authentifier de nouveau. »
               Send-SMTPmail -to $($user.mail) -from $MSender -subject $MSubject -cc $MSender -smtpserver $MServer -body $Mbody -html
            }
            elseif ($difference.Days -eq 2)
            {
               $MSubject = « Votre mot de passe va expirer dans 2 jours. »
               $Mbody = « Bonjour $usrname,<br><br>Votre <b>mot de passe de compte utilisateur ($usrlogin)</b> va expirer dans deux jours.<br><br>Merci de fermer votre session Windows et de vous authentifier de nouveau. »
               Send-SMTPmail -to $($user.mail) -from $MSender -subject $MSubject -cc $MSender -smtpserver $MServer -body $Mbody -html
            }
            elseif ($difference.Days -eq 1)
            {
                $MSubject = « Votre mot de passe va expirer dans 1 jour. »
                $Mbody = « Bonjour $usrname,<br><br>Votre <b>mot de passe de compte utilisateur ($usrlogin)</b> va expirer dans un jour.<br><br>Merci de fermer votre session Windows et de vous authentifier de nouveau. »
                Send-SMTPmail -to $($user.mail) -from $MSender -subject $MSubject -cc $MSender -smtpserver $MServer -body $Mbody -html
            }
     }
}

Pour planifier l’exécution du script :
Créer un fichier script.bat et coller le contenu suivant dans ce fichier :
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -psconsolefile « C:\Program Files\Quest Software\Management Shell for AD\ConsoleSettings.psc1″ -command C:\_adm\expiration-compteV2.ps1
Utiliser le planificateur de tâche Windows pour exécuter l’outil une fois par jour à l’heure souhaitée.

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

Publié dans Active Directory, ActiveRoles for Server, Annuaire, Outils, PowerShell, Scripts, Windows 2003 Server, Windows Server 2008, Windows Server 2008 R2 | Un commentaire

Administrer Active Directory avec PowerShell

Salut à tous.

Cet article a pour but de vous expliquer comment gérer un annuaire Active Directory avec PowerShell et plus précisément avec le module Quest ActiveRoles Management Shell.

1. Présentation de PowerShell :
- PowerShell s’appuie sur les classes d’objets du .Net Framework. En fait les commandes PowerShell (CMDLET) sont des classes .Net Framework simplifiées.
- PowerShell est extensible (modules). Tout nouveau logiciel Microsoft est fourni avec un module d’administration PowerShell.
- Les commandes PowerShell sont toujours sous la forme ACTION-OBJET et sont relativement claires.
  Exemples d’actions : Add, Export, Get, New, Out, Remove, Select, Set, Start, Stop, Test, Where…
  Exemples d’objet : ChildItem, content, alias, file, object, QADObject, QADuser, string…
  La commande Get-Content permet par exemple de lire le contenu d’un fichier.
- PowerShell permet de chainer les commandes. La commande ci-dessous permet par exemple de désactiver tous les comptes utilisateurs qui se trouvent dans l’OU Utilisateurs.
Get-QADUser -SearchRoot « OU=Utilisateurs,DC=TPHAT,DC=INTRA » | Disable-QADUser
- PowerShell permet d’utiliser les classes WMI / .Net Framework ceux qui étend encore les possibilités de l’outil.
- PowerShell est un langage de développement / scripting orienté objet. Une commande PowerShell renvoie un objet. Il est possible de filtrer les attributs avec la commande Select-Object. La commande ci-dessous permet par exemple d’afficher les attributs SamAccountName, Description, Company  de tous les comptes utilisateurs de l’OU Utilisateurs du domaine TPHAT.INTRA.
Get-QADUser -SearchRoot « OU=Utilisateurs,DC=TPHAT,DC=INTRA » | Select-Object SamAccountName,Description,Company
PowerShell renvoie le résultat suivant :
SamAccountName                          Description                             Company
————–                          ———–                             ——-
guillaume.mathieu                       Compte utilisateur                      PROSERVIA
tigrou.mathieu                          Compte utilisateur                      PROSERVIA
melanie.mathieu                         Compte utilisateur                      PROSERVIA
- PowerShell prend aussi  en charge les boucles conditionnelles, les variables. Pour plus d’informations, je vous invite à lire les articles suivants :
http://www.computerperformance.co.uk/powershell/powershell_if_statement.htm
http://technet.microsoft.com/en-us/library/ee692804.aspx
http://www.powershellpro.com/powershell-tutorial-introduction/variables-arrays-hashes/
-PowerShell gère l’auto-complexion à l’aide de la touche TAB. Si je tape Get- et que j’appuie sur la touche TAB, toutes les commandes contenant Get- s’affichent comme Get-QADuser.

2. Les commandes indispensables à connaître :
2.1 Pour afficher l’aide d’une commande :
Pour afficher les explications complètes de la commande Get-QADuser :
Get-Help Get-QADuser -full
Pour afficher des exemples d’utilisation de la commande Get-QADuser :
Get-Help Get-QADuser -examples

2.2 Pour filtrer l’affichage du commande :
PowerShell permet d’afficher le résultat d’une commande sous forme :
- D’un tableau avec la commande : Format-Table
- D’une liste avec la commande : Format-List
La commande suivante permet par exemple d’afficher toutes les propriétés du compte utilisateur melanie.mathieu sous forme d’une liste :
Get-QADUser -IncludeAllProperties -Identity melanie.mathieu | Format-List *

2.3 Pour exporter la liste de tous les utilisateurs de l’OU Utilisateurs :
La commande Export-CSV permet d’exporter les résultats d’une commande PowerShell sous forme de fichier CSV. Attention, il faut utiliser PowerShell V2 pour pouvoir spécifier le type de séparateur avec le paramètre -UseCulture. Toujours spécifier le format de fichier UTF8 pour la prise en charge des accents.
Get-QADUser -SearchRoot « OU=Utilisateurs,DC=TPHAT,DC=INTRA » | Select-Object SamAccountName,Description,Company | Export-Csv -Path c:\resultat.csv -UseCulture  -Encoding UTF8

3. Administrer l’annuaire Active Directory avec l’outil Quest ActiveRoles Management Shell :
3.1 Présentation de l’outil Quest ActiveRoles Management Shell :
Il s’agit d’un module PowerShell (gratuit) qui permet de gérer un annuaire Active Directory.
Lancer ActiveRoles Management Shell et taper la commande Get-PSSnapin.
PowerShell renvoie la liste des modules PowerShell :
Name : Microsoft.PowerShell.Diagnostics
PSVersion : 2.0
Description : This Windows PowerShell …
Name : Quest.ActiveRoles.ADManagement
PSVersion : 1.0
Description : This Windows PowerShell snap-in contains cmdlets to manage Active Directory…
La console ActiveRoles Management Shell est en fait une console PowerShell avec le module Quest.ActiveRoles.ADManagement préchargé.
Si vous le souhaitez, vous pouvez aussi lancer une invite PowerShell et charger le module PowerShell Quest manuellement en tapant la commande suivante :
Add-PSSnapin Quest.ActiveRoles.ADManagement

3.2 Pour lister des comptes utilisateurs :
Pour lister tous les comptes utilisateurs d’une OU et afficher uniquement les champs SamAccountName (login) et LastlogonTimeStamp (date de dernier login) et exporter le résultat sous forme d’un fichier CSV :
Get-QADUser -SearchRoot « OU=Utilisateurs,DC=TPHAT,DC=INTRA » | Select-Object SamAccountName, LastLogonTimeStamp | Export-Csv -Path c:\resultat.csv -UseCulture  -Encoding UTF8
Utiliser le paramètre  -IncludeAllProperties pour afficher tous les attributs d’un compte utilisateur avec la commande PowerShell.
Pour trouver le nom de l’attributs, créer un compte utilisateur (guillaume.mathieu) et compléter les champs requis puis taper la commande suivante :
Get-QADUser -IncludeAllProperties -Identity guillaume.mathieu | Format-List -Property *
Pour lister les comptes utilisateurs en fonction d’une valeur :
Afficher que les comptes utilisateurs avec une description avec la valeur PROSERVIA :
Get-QADuser -Description « Compte utilisateur »
Pour certains attributs, il est cependant obligatoire d’utiliser la commande Where-Object qui permet de filtrer les résultats.
$_.EmployeeType signifie la valeur de l’attribut EmployeeType de l’objet Utilisateur que la commande Get-QADuser sort en résultat.
Il est possible de filtrer sur plusieurs conditions. N’oublier pas les parenthèses dans ce cas !
Get-QADuser -IncludeAllProperties | Where-object {($_.EmployeeType -match « Employee ») -AND ($_.Description -match « Compte »)}

3.3 Script pour importer des comptes utilisateurs à partir d’un fichier CSV :
Pour cela, on va utiliser la commande Import-Csv et utiliser la commande foreach .
Il est possible d’exécuter des scripts PowerShell. Par défaut l’exécution de script non signé est interdite. Pour l’autoriser, il faut taper la commande suivante : Set-ExecutionPolicy Unrestricted
Créer un fichier Excel avec la liste des utilisateurs appelé c:\base.csv avec les colonnes suivantes :
Name ;SamAccountName (pour le login),FistName (pour le prénom), LastName (pour le nom de famille), Password (pour le mot de passe).
Créer le fichier avec NOTEPAD et l’enregistrer au format UTF8. Par défaut Notepad enregistre en ANSI. Dans le cas contraire, les accents ne seront pas correctement pris en compte.
Exemple de fichiers CSV :
Name;SamAccountName;FistName;LastName;Password
Guillaume Mathieu Test;gmmathieutest;Guillaume;Mathieu Test;P@ssword
Amélie Mathieu Test;amathieutest;Amélie;Mathieu Test;P@ssword
Créer un fichier texte appelé import.ps1 et copier le contenu du script suivant :
$users = Import-csv -path c:\base.csv -UseCulture
foreach ($user in $users)
{
  New-QADuser -Name $($user.name) -SamAccountName $($user.SamAccountName) -FirstName $($user.FirstName) -LastName $($user.LastName) –UserPassword $($user.Password) –ParentContainer « OU=Utilisateurs,DC=TPHAT,DC=INTRA »
}

3.4 Pour modifier la valeur d’un utilisateur :
Dans l’exemple ci-dessous, on définit la valeur du champ société à Proservia pour le compte guillaume.mathieu
Get-QADUser -Identity guillaume.mathieu | Set-QADUser -Company Proservia
Il est possible de faire cette action sur plusieurs comptes en définissant une OU :
Get-QADUser -SearchRoot « Ou=Utilisateurs,DC=tphat,dc=intra » | Set-QADUser -Company Proservia

3.5 Pour gérer des groupes :
La commande Get-QADGroupMember -Identity AI_Avant-Vente_RO –Indirect permet d’afficher les membres directes et indirectes (groupes dans des groupes) d’un groupe. 
3.6 Pour supprimer un objet (groupe / compte utilisateur) :
Get-QADUser -SearchRoot « Ou=Utilisateurs,DC=tphat,dc=intra » | Remove-QADObject –Force

4. Les exemples de code / pour en savoir plus :
Le script Center de Microsoft dispose de nombreux script PowerShell en libre téléchargement.
Ce dernier est accessible à l’adresse suivante :
http://technet.microsoft.com/en-us/scriptcenter/bb410849.aspx

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

Publié dans Active Directory, ActiveRoles for Server, Annuaire, Outils, PowerShell, Scripts, Windows 2000 Server, Windows 2003 Server, Windows Server 2008, Windows Server 2008 R2 | Marqué avec , | Laisser un commentaire

Gérer l’accès aux données de l’entreprise : organisation des données, réplication et gestion des accès concurrents en écriture

Salut à tous

Architecture actuelle du client :
Le client dispose d’un site principal (200 utilisateurs / stations de travail) et d’une agence (30 utilisateurs / stations de travail).
La bande passante entre les deux sites est faible et doit être économisée au maximum.

Les besoins du client :
Le client souhaite :
1. Organiser les données sous forme d’une arborescence unique.
2. Répliquer les données sur plusieurs sites (PRA).
3. Limiter l’impact sur la liaison WAN entre les deux sites quand les utilisateurs de l’agence ouvre / modifie un fichier sur les serveurs de fichiers.
La problématique des accès concurrents en modification (un utilisateur du siège et un utilisateur de l’agence modifient en même temps le même fichier) doit être prise en compte.

1. Solution préconisée pour la mise en place d’une arborescence unique :La meilleure solution est de mettre en place un espace de noms DFS. Si vous souhaitez en savoir plus, je vous invite à lire cet article : http://msreport.free.fr/?p=281

2. Solutions préconisées pour répliquer les données sur plusieurs sites (PRA) :
Plusieurs solutions sont possibles :

Solution 2A : utilisation du système de réplication DFS-R :
Cette solution nécessite de disposer de serveur de fichiers Windows 2003 R2 au minimum (espace de noms DFS en mode Windows 2000). Le moteur de réplication DFS permet de définir des plages horaires pour la réplication et limiter les débits. Quand deux réplicas existent pour le même partage, les utilisateurs sont redirigés vers un réplica en fonction de leur site Active Directory de rattachement. Si la topologie de site / sous réseaux IP Active Directory est bien configurée, l’utilisateur va se connecter sur un réplica accessible à travers un réseau rapide (le plus rapide possible en tout cas).
La principale contrainte de cette solution est qu’elle ne gère pas la problématique des accès concurrents en modification (un utilisateur du siège et un utilisateur de l’agence modifient en même temps le même fichier). Le Technet Microsoft est très claire sur le sujet :
« Do not use DFS Replication in an environment where multiple users update or modify the same files simultaneously on different servers. Doing so can cause DFS Replication to move conflicting copies of the files to the hidden DfsrPrivate\ConflictandDeleted folder. »
En cas de conflits, un des deux fichiers est déplacé dans le sous dossier DfsrPrivate\ConflictandDeleted folder à la racine de chaque cible DFS. Ce répertoire n’est visible que par les administrateurs et a une taille limite (à modifier !!!). Il y a donc un risque de perte de données.
Si vous souhaitez uniquement répliquer les fichiers dans le cadre d’un PRA, configurer l’espace de noms DFS pour forcer tous les utilisateurs à se connecter sur le même réplica !
Windows 2012 inclue de nombreuses nouveautés au niveau du DFS mais rien par rapport à la problématique des accès concurrents en modification au même fichier depuis 2 réplicas DFS.
Pour plus d’informations :
http://blogs.technet.com/b/filecab/archive/2012/11/12/dfs-replication-improvements-in-windows-server-2012.aspx
http://blogs.technet.com/b/askds/archive/2010/01/05/understanding-dfsr-conflict-algorithms-and-doing-something-about-conflicts.aspx
http://blogs.technet.com/b/askds/archive/2009/02/20/understanding-the-lack-of-distributed-file-locking-in-dfsr.aspx

Solution 2B : utilisation du système de réplication DFS-R et du plugin PeerLock :
Même principe que la solution précédente mais la gestion des conflits en modification est gérée par le module PeerLock (1500 € par serveur de fichiers). Cette solution est fonctionnelle (validation sur maquette) mais présente les problématiques suivantes :
- Quand on ouvre le fichier sur le site A, le fichier n’est accessible qu’en lecture sur le site B. Cependant cela bloque la réplication DFS.  Quand on ferme l’application, le fichier doit encore répliqué. Si un utilisateur ouvre le fichier avant que ce dernier réplique, il peut y avoir un conflit !
- Pour que cela fonctionne, les applications doivent disposer d’un système de lock ce qui n’est pas le cas de toutes les applications. NOTEPAD permet par exemple d’ouvrir un fichier TXT plusieurs fois en modifications.
- Cette solution gère un maximum de 3 serveurs de fichiers en mode réplication multi-maître (faible montée en charge).

Procédure de mise en place de PEARLOCK :
http://www.peersoftware.com/support/knowledgebase/item/what-are-the-recommended-peerlock-options-to-work-with-dfs-replication.html
http://www.peersoftware.com/support/knowledgebase

Solution 2C : Utilisation de la solution PeerLink :
Cette solution est plus complète / fonctionnelle que la solution DFS-R / PeerLock et corrige les principaux défault de la solution DFS-R / PeerLock.
http://www.peersoftware.com/products/file-collaboration/peerlink.html
La principale problématique semble l’absence d’un support en Français.

3. Solutions pour limiter l’impact sur la liaison WAN entre les deux sites quand les utilisateurs de l’agence ouvre / modifie un fichier sur les serveurs de fichiers :
Si votre besoin est d’économiser la bande passante et non pas de répliquer les données, les solutions suivantes sont possible :
- Utilisation de DFS / DFS-R / PeerLock
- Utilisation de PeerLink
- Utilisation de BranchCache.
Je vous préconise clairement la solution BranchCache.

Présentation de la solution BranchCache :
Cette solution nécessite des serveurs Windows 2008 R2 et des stations de travail sous Windows 7 Enterprise / Ultimate (cela ne marche pas avec Windows 7 Professionnel).
Que retenir de cette solution :
Le mécanisme de cache n’est utilisé que pour les accès en lecture aux données. En cas de modification, l’utilisateur se connecte au serveur.
BranchCache supporte le protocole BITS, SMB et HTTP.
Je vous invite à lire les documents suivants pour la mise en place de la solution :
http://technet.microsoft.com/fr-fr/library/dd996641(v=ws.10).aspx
http://technet.microsoft.com/fr-fr/library/dd996634(v=ws.10).aspx
http://www.labo-microsoft.org/articles/SCCM_BranchCache/0/?action=print
http://www.microsoft.com/en-us/download/details.aspx?id=19558
http://windowsitpro.com/windows/q-how-can-i-test-if-branchcache-working
http://social.technet.microsoft.com/Forums/windowsserver/en-US/9f6de382-f317-45fe-8932-dac8ed904872/branchcache-cache-is-not-used-by-clients

Penser à configurer la latence sur 0 si vous êtes en environnement de tests.
Pour voir les paramètres BranchCache sur une machine : netsh branchcache show status all 
Pour purger le cache BranchCache : netsh branchcache flush
Pour vérifier que la solution BranchCache fonctionne (pour les accès SMB) en mode Distribué :
- Il faut au moins 2 machines Windows 7 Enterprise. Une qui accède au fichier la première fois et la seconde qui accède au fichier via le cache.
- Démarrer le Performance Monitor (Control Panel\All Control Panel Items\Administrative Tools) et ajouter les compteurs : BanchCache\SMB : Bytes from cache et BanchCache\SMB : Bytes from server.

Conclusion :
Pour moi, la meilleure solution est :
- De configurer un ou plusieurs espaces de noms DFS.
- Utiliser le moteur DFS-R pour répliquer les données entre le siège et l’agence mais en configurant l’espace de noms pour que tous les clients se connectent au même serveur DFS. Les utilisateurs de l’agence se connecteront donc au serveur sur le site centrale.
- Utiliser BranchCache pour permettre de réduire le besoin en bande passante au niveau de l’agence.

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

Publié dans Active Directory, Annuaire, DFS, Windows 2003 Server, Windows Server 2008, Windows Server 2008 R2 | Un commentaire

Associer le profil d’un utilisateur A à un utilisateur B sous Windows 7 -> Explorer.exe. Windows cannot access to the specied device, path or file. You may not have the appropriate permissions to access the item.

Bonjour à tous

Avez-vous déjà essayé d’associer un profil d’un utilisateur A à un utilisateur B sous Windows 7. Le moins que l’on puisse dire, c’est que c’est pas facile.
Pour ceux qui ne connaissent pas encore, tout repose sur le fait de modifier l’entrée de registre ProfileImagePath et de déléguer les bons droits sur le dossier de l’utilisateur (c:\users\nom_utilisateur)et les entrées de registre (ruche HKEY_CURRENT_USER, c’est-à-dire le fichier NTUSER.DAT du profil de l’utilisateur).
Cette entrée de registre permet d’associer le profil (dossier c:\users\nom_utilisateur) au SID du compte utilisateur.

Problème 1 : message d’erreur quand on change les permissions sur le dossier de l’utilisateur
Quand on définit les permissions sur le répertoire, on a le message d’erreur suivant
« An error occured while applying security information to. Access is denied ».
Ce message peut être ignoré car il se produit uniquement au niveau des points de jonction.
http://support.microsoft.com/kb/975702/en-us
On parle de points de jonction quand deux dossiers pointent vers les mêmes blocs disques. Exemple :
C:\users et C:\Documents and settings sont des points de jonction.
C:\Documents and settings a été conservé pour la compatibilité.
Si on essaie de naviguer dans c:\Documents and settings, on a un message Accès refusé.
Par contre si on spécifie c:\Documents and settings\nom_utilisateur cela fonctionne.

Problème 2 : Explorer.exe. Windows cannot access to the specied device, path or file. You may not have the appropriate permissiosn to access the item 
Si l’utilisateur n’est pas administrateur et/ou si l’UAC est activé, on a le message d’erreur suivant quand on accède à l’explorateur ou à regedt32.
« Explorer.exe. Windows cannot access to the specied device, path or file. You may not have the appropriate permissiosn to access the item ».
Ce problème est décrit sur de nombreux forums (pas de solution).

http://social.technet.microsoft.com/Forums/windows/fr-FR/5a27b553-0c33-4de6-8219-6356645e6b7e/windows-7-change-local-profile-to-domain-profile-instantly

http://social.technet.microsoft.com/Forums/windows/fr-FR/5a27b553-0c33-4de6-8219-6356645e6b7e/windows-7-change-local-profile-to-domain-profile-instantly

http://techthat.net/tag/profileimagepath/

http://blogs.technet.com/b/deployment_field_notes/archive/2011/11/03/a-corrupted-profile-problem.aspx.
La seule solution que j’ai trouvé pour corriger le problème est d’utiliser un outil tiers appelé User Profile Wizard 3.7 de la société ForerensiT.
http://www.forensit.com/
http://www.forensit.com/domain-migration.html
Cet outil peut être utilisé gratuitement pour un usage personnel. Il permet aussi de joindre la machine dans le domaine (interface simple et efficace).

Remarques :
Avec ProcessMonitor je vais finir trouver quelles entrées de registre / fichiers il faut maintenant modifié.
Pas de documentation côté Microsoft.

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

Publié dans Active Directory, Annuaire, Bug, Migration, Système, Troubleshouting, Windows Seven | Marqué avec , | Laisser un commentaire

Les casse tête de la suppression des comptes utilisateurs Active Directory !

Bonjour à tous

Lors de différentes prestations, j’ai été confronté à la problématique de la suppression des objets dans un annuaire Active Directory.
Cette article traite des points suivants :
- Pourquoi supprimer les comptes utilisateurs.
- Pourquoi en cas de suppression accidentelle d’un compte utilisateur, le recréer avec le même login / mots de passe ne sert à rien ?
- Que se passe t’il quand on supprime un compte utilisateur dans l’annuaire Active Directory ?
- Comment restaurer les comptes utilisateurs dans un annuaire Active Directory sans la corbeille Active Directory ?
- Comment restaurer les comptes utilisateurs dans un annaire Active Directory avec la corbeille Active Directory.

1. POURQUOI SUPPRIMER LES COMPTES UTILISATEURS ?
Quand un utilisateur ou un prestataire quitte la société, une bonne pratique est de bloquer les accès de cet utilisateur. Pour cela, il est possible :
- De désactiver le compte de l’utilisateur.
- De supprimer le compte de l’utilisateur.
Ces 2 méthodes permettront d’arriver au même objectif : l’utilisateur ne peut plus se connecter.
La désactivation du compte permet un retour arrière simple. Si l’utilisateur travaille de nouveau pour l’entreprise (cela arrive plus souvent qu’on le pense), on réactive le compte.
La suppression des comptes utilisateurs permet de diminuer la taille du fichier NTDS.DIT (la base de données Active Directory) surtout si on stocke des informations volumineuses dans l’annuaire comme la photo de l’utilisateur. Cependant la procédure de retour arrière est plus complexe.

2. POURQUOI EN CAS DE SUPPRESSION ACCIDENTELLE D’UN COMPTE UTILISATEUR, LE RECREER AVEC LE MEME LOGIN / MOTS DE PASSE NE SERT A RIEN ?
J’ai remarqué que les équipes informatiques recréés souvent le compte utilisateur supprimé en utilisant le même login / mot de passe.
Cette procédure n’est pas adaptée surtout en cas de suppression accidentelle d’un compte utilisateur. En effet, l’utilisateur pourra ouvrir sa session avec son login / mot de passe. Cependant il rencontrera les probèmes suivants :
- Il perdra l’accès à son profil utilisateur. En effet le profil utilisateur (dossier c:\users\nom_utilisateur) est mappé au SID du compte utilisateur (http://support.microsoft.com/kb/324734/fr). Hors le SID de l’ancien et du nouveau compte ne sont pas les mêmes. Le SID est géréné à la création de l’objet et ne pas peut être réutilisé par un autre compte.
- Il perdra l’accès à tous ses fichiers. En effet il sera nécessaire de remettre le compte utilisateur dans les bons groupes. L’utilisateur perdra l’accès à tous les fichiers sécurisés via le SID de son ancien compte utilisateur.
- Il perdra l’accès à sa boîte aux lettres Exchange (associé via le SID).
Pour toutes ces raisons, je déconseille de recréer un compte utilisateur neuf en cas de suppression accidentel d’un compte utilisateur. Les arguements ci-dessus peuvent être nuancé dans le scénario d’un utilisateur qui revient travailler dans la société après une longue absence. En effet tous ces données auront déjà été probablement déjà supprimées / réorganisées.
Nous verrons dans la suite de cet article que la bonne méthode est de restaurer le compte utilisateur en cas de suppression accidentelle.

3. QUE SE PASSE T’IL QUAND ON SUPPRIME UN COMPTE UTILISATEUR DANS L’ANNUAIRE ACTIVE DIRECTORY ?
Le compte utilisateur n’est pas supprimé réellement de la base de données Active Directory ! Ce comportement s’explique par le mécanisme de réplication Active Directory.
Quand on modifie un objet Active Directory, le numéro de séquence (attribut uSNChanged) est incrémenté. Pour déterminer les objets qu’il doit répliquer depuis un autre contrôleur de domaine, un contrôleur de domaine  liste les objets dont le numéro de séquence a été changé. Il réplique tous les objets dont le numéro de séquence sur l’autre contrôleur de domaine est supérieur.
Hors l’opération de suppression est un changement comme les autres. Ce changement doit être répliqué !!! 

Cas 1 : la corbeille Active Directory n’est pas activée.
Active Directory effectue les actions suivantes lors de la suppression d’un compte utilisateur :
- Définit l’attribut Is Deleted à 1.
- Supprime les attributs inutiles de l’objet. Les attributs systèmes comme ObjectSID (le SID du compte utilisateur) sont conservés.
- Renomme ensuite l’objet.
- Le déplace dans le conteneur suivant (exemple avec le domaine tphat.intra) : CN=Deleted Objects, DC=tphat,DC=intra
Ce conteneur n’est pas visible dans ADSIEDIT. Il faut utiliser l’utilitaire LDP.EXE (exemple sur un contrôleur de domaine Windows 2003).
Dans LDP, aller dans Connection | Bind. Entrer le login, mot de passe et le nom du domaine (nom DNS). Cliquer sur OK.
Aller dans le menu Browse | Search.
Taper comme Base DN : DC=tphat,dc=intra
Sélectionner « One Level » pour le scop.
Cliquer sur Options.
Dans la fenêtre Search Option, cocher Extended pour Search Call Type. Mettre *; dans le champ attributes. Cliquer ensuite sur Controls.
Dans la fenêtre Controls, sélectionner au niveau de Load Predefined le choix Return deleted objects. Décocher Critical. Cliquer sur OK puis dans la fenêtre Search, taper sur Run.
Cliquer sur View | Tree puis saisir DC=tphat,dc=com comme Base DN.
Le  conteneur CN=Deleted Objects apparaît maintenant.
Le compte utilisateur est réellement supprimé de l’annuaire Active Directory après un intervalle de temps appelé TombstoneLifeTime. Par défaut cette valeur est de 180 jours pour les domaines créés sous Windows 2003 SP1 et ultérieur, 60 jours pour les domaines créés à l’époque de Windows 2000.
Cette valeur est contrôlée par l’attribut tombstoneLifetime de l’objet suivant (dans mon cas le domaine s’appelle TPHAT.INTRA) :
CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=tphat,DC=intra

Cas 2 : La corbeille Active Directory est activée :
Quand la corbeille Active Directory est activée, un objet ayant été supprimé peut avoir deux états :
- Deleted : dans ce mode, tous les attributs de l’objet sont conservés. Par défaut l’objet reste dans ce mode pendant une période de temps égale à la TombstoneLifeTime
- Recycled : dans ce mode, tous les attributs non systèmes sont supprimés (attributs autres que ObjectSID). En fait ce mode correspond à l’état Tombstone d’un objet quand la corbeille Active Directory n’est pas activée. Au bout de la période de TombstoneLifeTime, l’objet est réellement supprimé de l’annuaire.
Avec la corbeille Active Directory si la TombstoneLifeTime est de 180 jours, un objet est réellement supprimé au bout de 360 jours. Pour plus d’informations :
http://windowsitpro.com/windows-server-2008/revive-deleted-ad-objects-active-directory-recycle-bin

4. COMMENT RESTAURER LES COMPTES UTILISATEURS DANS UN ANNUAIRE ACTIVE DIRECTORY SANS LA CORBEILLE ACTIVE DIRECTORY ?
Il existe deux méthodes pour restaurer un compte utilisateur :
- Méthode 1 : la restauration autoritaire Active Directory avec l’outil NTDSUTIL : cette procédure consiste à restaurer un contrôleur de domaine. Pour cela il faut  redémarrer le contrôleur de domaine en mode Restauration des services d’annuaires. Une fois la restauration terminée, il faut lancer l’outil NTDSUTIL et incrémenter le numéro d’USN du compte utilisateur. Cette seconde action est nécessaire car en cas de restauration non autoritaire, le compte utilisateur serait supprimé dès que le contrôleur de domaine restauré répliquerait avec les autres contrôleurs de domaine. Cette technique fonctionne mais s’avère complexe et entraîne une indisponibilité du contrôleur de domaine. En mode restauration des services d’annuaires (DSRM), ce dernier n’authentifie plus les utilisateurs. De plus, il faut restaurer les appartenances aux groupes via l’importation d’un fichier LDIF.
- Méthode 2 : réanimation du compte utilisateur (tombstone reanimation) : cette action peut être effectué à l’aide de l’outil AdRestore (http://technet.microsoft.com/en-us/sysinternals/bb963906.aspx) ou en applicant le chapitre « How to manually undelete objects in a deleted object’s container » de l’article Microsoft http://support.microsoft.com/kb/840001/en-us.

5. COMMENT RESTAURER LES COMPTES UTILISATEURS DANS UN ANNAIRE ACTIVE DIRECTORY AVEC LA CORBEILLE ACTIVE DIRECTORY :
Pour rappel, la forêt doit être en mode natif et la fonctionnalité de la corbeille Active Directory doit avoir été activée (action irréversible).
Pour cela, taper la commande suivante (exemple avec le domaine tphat.intra) :
Enable-ADOptionalFeature –Identity ‘CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration, DC=tphat,DC=intra -Scope ForestOrConfigurationSet -Target ‘tphat.intra’
Avec Windows 2008 R2, il faut utiliser la commande PowerShell Restore-ADobject pour restaurer un compte utilisateur.  Voir la procédure Microsoft : http://technet.microsoft.com/fr-fr/library/dd379509(v=ws.10).aspx
Il existe aussi des outils gratuits qui permettent d’effectuer cette action comme ADRecycleBin (gratuit). Cet outil est téléchargeable à l’adresse suivante : http://www.overall.ca/index.php?option=com_content&view=article&id=40:adrecyclebin&catid=15:adrecyclebinexe&Itemid=64
Sous Windows 2012, la console Active Directory Administrative Center intègre un assistant pour restaurer les objets avec la corbeille Active Directory.

A+
Guillaume MATHIEU
Consultant PROSERVIA
La connaissance s’accroit quand on la partage

Publié dans Active Directory, Sécurité, Windows 2003 Server, Windows Server 2008, Windows Server 2008 R2 | Laisser un commentaire

Migrer les serveurs d’espace de noms (DFS) de Windows 2003 vers Windows 2008 R2

Salut à tous, vous trouverez ci dessous quelques retours d’expériences sur le service DFS de Microsoft.

1. PRESENTATION DE L’ENVIRONNEMENT EXISTANT :
L’architecture existante se compose de :
- Un domaine appelé MSREPORT.INTRA géré par deux contrôleurs de domaine Windows 2003 Server R2 Standard (MSREPORTDC1 et MSREPORTDC2).
- Deux serveurs de fichiers Windows 2003 R2. MSREPORTFILE1 et MSREPORTFILE2.
- Deux serveurs d’espace de noms  de domaine gérés par deux serveurs Windows 2003 R2 Enterprise Edition (MSREPORTDFS1 et MSREPORTDFS2). Ces deux serveurs d’espace de noms gèrent les deux espaces de noms suivants :
Services : espace de noms DFS
Commerces : cible DFS vers \\MSREPORTFILE1\commerces
Informatique : cible DFS vers \\MSREPORTFILE2\informatique
Vente : cible DFS vers \\MSREPORTFILE1\vente
Projets : espace de noms DFS
Projets2013 : cible DFS vers \\MSREPORTFILE1\Projets2013
Projets2012 : cible DFS vers \\MSREPORTFILE2\Projets2012
Projets2011 : cible DFS vers \\MSREPORTFILE2\Projets2011
Les fichiers sont hébergés sur MSREPORTFILE1 ou MSREPORTFILE2. La fonctionnalité de réplication du DFS n’est pas utilisée (que cela soit avec le moteur de réplication DFS-R ou avec le moteur de réplication NTFRS).
La fonctionnalité d’espace de noms liés n’est pas utilisé. http://support.microsoft.com/kb/954091/en-us http://support.microsoft.com/kb/945222/en-us

2. OBJECTIFS :
Ce document a pour objectifs :
- De présenter le service d’espace de noms DFS de Microsoft.
- De présenter la procédure pour remplacer les serveurs d’espace de noms Windows 2003 MSREPORTDFS1 et MSREPORTDFS2 par deux nouveaux serveurs Windows 2008 R2 MSREPORTDFS3 et MSREPORTDFS4.

3. PRESENTATION DU SERVICE DFS :
Les serveurs d’espace de noms DFS gèrent la topologie DFS, c’est-à-dire l’arborescence de dossiers. Afin de disposer d’un service hautement disponible, il faut toujours configurer un espace de noms avec deux serveurs d’espace de noms.
Un espace de noms est composé de cibles DFS. Les cibles DFS redirigent les utilisateurs vers les données situées sur les serveurs de fichiers (dans notre cas MSREPORTFILE1 et MSREPORTFILE2).
Une cible DFS peut avoir un ou plusieurs serveurs de réplicas. Un réplica est un serveur qui contient les données partagés. Quand une cible DFS est configurée avec au moins 2 réplicas, les données répliquent entre les deux serveurs de réplicas à l’aide d’un des deux moteurs de réplications DFS (NTFRS ou DFS-R). Si les données sont modifiées sur un réplica par les utilisateurs, les changements sont répliqués sur les autres réplicas.

Il existe deux consoles pour gérer les espaces de noms sous Windows :
- La console Distributed File System : cette console est disponible sous Windows 2000, 2003 et 2003 R2. Elle n’existe pas sous Windows 2008 et ultérieur.
- La console DFS Management : cette console existe sous Windows 2003 R2 et ultérieur.

Il existe deux moteurs pour répliquer les cibles DFS :
- Le moteur NTFRS : il s’agit du moteur historique de réplication du service de fichiers DFS. Ce mode de réplications est compatible avec des serveurs d’espace de noms Windows 2000, 2003, 2003 R2 et 2008. Il n’est pas compatible avec les serveurs d’espace de noms Windows 2008 R2 (http://msdn.microsoft.com/en-us/library/ff384840(v=vs.85).aspx). Ce moteur de réplication est utilisé quand on active plusieurs réplicas pour une même cible depuis la console Distributed File System (les données de la cible sont synchronisées entre les deux serveurs réplicas). Le moteur de réplication NTFRS est peu fiable.  Si un fichier est modifié, il est intégralement recopié sur les autres serveurs de réplicas (réplication non optimale). Il est possible de configurer les heures où la réplication est autorisée.
- Le moteur DFS-R : ce moteur de réplication est apparu avec Windows 2003 R2. Il est beaucoup plus fiable que NTFRS. Les fichiers sont découpés en blocs. Seuls les blocs modifiés sont répliqués en cas de changement. Il est possible d’optimiser le trafic de réplication en définissant les heures où la réplication est autorisée et le débit maximum. Les serveurs de fichiers doivent être sous Windows 2003 R2 pour pouvoir activer le nouveau moteur de réplication DFS-R. Il est en effet nécessaire d’installer le service Réplication DFS sur les serveurs de fichiers. Dans le cas contraire, on a un message d’erreur quand on essaie d’utiliser un serveur antérieur à Windows 2003 R2 comme serveur de réplica supplémentaire pour une cible DFS « The following targets cannot be added as DFS replication members – The DFS replication is not installed ».

Il y a deux modes pour les espaces de noms DFS de domaine  :
- Les espaces de noms DFS Windows 2000 : ce type d’espace de noms peut être géré par des serveurs d’espace de noms sous Windows 2000, 2003, 2003 R2, 2008 et 2008 R2. - Les espaces de noms DFS Windows 2008 : ce type d’espace de noms peut être géré que par des serveurs d’espaces de noms Windows 2008 et ultérieur. Ce type d’espace de noms nécessite que le domaine Active Directory soit en mode natif 2008 ou ultérieur.

La fonctionnalité d’Access Based Enumeration permet de masquer les répertoires auxquels les utilisateurs n’ont pas accès (message Accès refusé). Elle n’est disponible qu’avec les espaces de noms DFS Windows 2008.

Pour plus d’informations sur le service DFS Microsoft :
http://technet.microsoft.com/fr-fr/library/ee404780(v=WS.10).aspx
http://social.technet.microsoft.com/Forums/fr-FR/winserverfiles/thread/d9232edf-8975-4125-b6cb-c204b565dfe3 http://support.microsoft.com/kb/977511/en-us

4. PROCEDURE DE MIGRATION DES SERVEURS D’ESPACE DE NOMS WINDOWS 2003 R2 VERS WINDOWS 2008 R2 :
Pour effectuer cette action, vous devez travailler avec un compte utilisateur qui est membre du groupe Domain Admins ou Enterprise Admins. Pour plus d’informations, voir : http://technet.microsoft.com/fr-fr/library/ee404780(v=WS.10).aspx

4.1 ETAPE 1 : SAUVEGARDE DE VOS ESPACES DE NOMS :
Il est important de sauvegarder les deux espaces de noms afin de pouvoir faire un retour arrière en cas de problèmes. Pour sauvegarder un espace de noms de domaine, il faut installer l’outil DFSUTIL (installer les supports tools sur le CD d’installation 1 de Windows 2003 R2) et entrer les commandes suivantes sur MSREPORTDFS1 et MSREPORTDFS2 : dfsutil /root:\\msreport.intra\Services /export:c:\Services-dfs.txt dfsutil /root:\\msreport.intra\Projets /export:c:\Projets-dfs.txt
Pour plus d’informations : http://blogs.technet.com/b/craigf/archive/2010/09/20/backing-up-and-restoring-domain-based-dfs-namespaces.aspx
http://support.microsoft.com/kb/969382

4.2 ETAPE 2 : PREPARER LES SERVEURS MSREPORTDFS3 ET MSREPORTDFS4
Windows 2003 R2 nécessite une mise à jour pour gérer plusieurs espaces de noms. http://support.microsoft.com/kb/903651/en-us Cette contrainte n’existe plus sous Windows 2008 R2.
On peut donc utiliser une version Standard de Windows 2008 R2 pour les serveurs d’espace de noms. http://technet.microsoft.com/fr-fr/library/ee307957(v=ws.10).aspx

Installer les mises à jour suivantes sur les serveurs d’espaces de noms MSREPORTDFS3 et MSREPORTDFS4 (Windows 2008 R2) :
- KB 2761922
- KB 2647452
- KB 2780453 v2
- KB 2663685
- KB 975763
- KB 968429

Remarque : – Si vous disposez de clients Windows XP, il recommandé d’installer le service pack 3 qui intègre de nombreux correctifs pour le service DFS : http://support.microsoft.com/kb/946480/fr

Configurer votre antivirus pour exclure de l’analyse temps réel les répertoires / fichiers utilisés par le service DFS : http://support.microsoft.com/kb/822158/fr

4.3 ETAPE 3 : VERIFIER LE BON FONCTIONNEMENT DE L’ESPACE DE NOMS DFS :
Entrer la commande suivante pour valider le bon fonctionnement des deux espaces de noms :
Dfsdiag /testdfsintegrity /DfsRoot:\\msreport.intra\Services /recurse /full
Dfsdiag /testdfsintegrity /DfsRoot:\\msreport.intra\Projets /recurse /full
La commande doit renvoyée les éléments suivants :
Success : No known corruption is found is the DFS metadata
Success : DFS metadata is consistent across all accessible domain controllers and the PDC Emulator.
Success : Registry information on namespace servers is consistent with the metadata in Active Directory Domain Services.

ETAPE 4 : AJOUTER LES DEUX SERVEURS D’ESPACE DE NOMS WINDOWS 2008 R2 :
Lancer la console Server Manager sur MSREPORTDFS3 et MSREPORTDFS4. Cliquer sur Add roles. Sélectionner File Services puis le service de rôle Distributed File System (prendre tous les composants). Ne pas créer d’espace de noms à cette étape.
Lancer la console DFS Management sur MSREPORTDFS3 Faire un clic droit sur Namespaces et sélectionner Add namespaces to Display. Ajouter les deux espaces de noms (Services et Projets).
Cliquer ensuite sur chaque espace de noms. Aller dans l’onglet Namespace Servers. Cliquer sur ajouter un serveur d’espace de noms. Dans la fenêtre « Add Namespaces server », sélectionner MSREPORTDFS3 puis cliquer sur OK. Faire la même action pour MSREPORTDFS4.
Ne pas supprimer les anciens serveurs d’espace de noms à cette étape ! Il existe en effet un mécanisme de cache au niveau du client DFS. Hors les nouveaux serveurs d’espace de noms DFS ne sont pas dans le cache des clients DFS. Si un serveur d’espace de noms n’est plus disponible, les clients basculent automatiquement sur un autre serveur d’espace de noms. Mais il faut pour cela que les nouveaux serveurs d’espace de noms soient connus des clients.
Pour visualiser le cache DFS sur les clients DFS (stations de travail Windows XP / Windows 7),  entrer une des deux commandes suivantes :
dfsutil /pktinfo
dfsutil /DisplayMupCache
Pour purger le cache DFS, entrer une des deux commandes suivantes :
dfsutil /pktflush
dfsutil /PurgeMupCache
Par défaut la valeur du cache DFS est de 300 secondes (5 minutes). Cette valeur peut se configurer au niveau des propriétés de chaque espace de noms.

Pour plus d’informations : http://blogs.technet.com/b/filecab/archive/2006/01/20/417832.aspx http://blogs.technet.com/b/josebda/archive/2009/07/15/five-ways-to-check-your-dfs-namespaces-dfs-n-configuration-with-the-dfsdiag-exe-tool.aspx

ETAPE 5 : REDEMARRER LE SERVICE D’ESPACE DE NOMS DFS SUR MSREPORTDFS1 ET MSREPORTDFS2 :
Pour rappel, la configuration d’un espace de noms DFS de domaine se trouve dans l’annuaire Active Directory (dans le conteneur System de la partition de domaine). Cependant chaque serveur d’espace de noms recopie cette configuration dans sa base de registre. Pour actualiser les entrées de la base de registre pour prendre en compte les nouveaux serveurs d’espace de noms immédiatement, il faut redémarrer le service d’espace de noms DFS sur MSREPORTDFS1 et MSREPORTDFS2. Attendre que le service d’espace de noms de MSREPORTDFS1 est  redémarré avant de redémarrer celui de MSREPORTDFS2 pour ne pas générer un arrêt de production côté client.

ETAPE 6 : SUPPRIMER MSREPORTDFS1 ET MSREPORTDFS2 EN TANT QUE SERVEUR D’ESPACE DE NOMS POUR LES ESPACES DE NOMS \\MSREPORT.INTRA\SERVICES ET \\MSREPORT.INTRA\PROJETS :
Il est préférable d’attendre 30 minutes entre l’étape 5 et 6 (bien que 5 minutes soient théoriquement suffisant). Lancer la console DFS Management. Faire un clic droit sur Namespaces et sélectionner Add namespaces to Display. Ajouter les deux espaces de noms (Services et Projets).
Cliquer ensuite sur chaque espace de noms. Aller dans l’onglet Namespace Servers. Sélectionner MSREPORTDFS1 puis cliquer sur Delete. Sélectionner MSREPORTDFS2 puis cliquer sur Delete. Redémarrer le service d’espace de noms sur MSREPORTDFS3 et MSREPORTDFS4 (un par un).

5. LES PROBLEMES CONNUS :
Quand on gère un serveur d’espace de noms DFS en mode Windows 2000 depuis un serveur Windows 2008 R2, le message d’erreur suivant peut apparaître : Msreport.intra\Services : Properties cannot be set on the folder. The request is not supported.
Msreport.intra\Projets : Properties cannot be set on the folder. The request is not supported.
Pour plus d’informations : http://support.microsoft.com/kb/973122/en-us

6. LE PLAN DE RETOUR ARRIERE :
Pour effectuer un retour arrière, il faut supprimer les espaces de noms. Faire une sauvegarde d’au moins deux contrôleurs de domaine Active Directory avant d’appliquer cette procédure (disque système et composant Etats du système).

Pour supprimer un espace de noms :
Aller dans la console DFS Management. Sélectionner l’espace de noms et cliquer sur Delete.
Si cela n’est pas possible via cette interface, lancer la console Active Directory Users and Computers. Aller dans le menu View et de sélectionner Show advanced features.
Aller dans le conteneur System | DFS Configuration. Chaque espace de noms est en fait un objet fTDfs. Supprimer l’objet fTDfs appelé Services et Projets.

Créer de nouveau les espaces de noms DFS Projets et Services via la console DFS Management. Restaurer tous les paramètres de l’espace de noms (cibles, groupe de réplication…) en exécutant les commandes suivantes : dfsutil /root:\\msreport.intra\Services /import:c:\Services-dfs.txt /merge dfsutil /root:\\msreport.intra\Projets /import:c:\Projets-dfs.txt /merge
La commande doit renvoyé le résultat suivant :
Links : Added XX Deleted XX Modified XX
Targets : Added XX Deleted XX Modified XX
Root : Attributes Modified XX
Done processing this command.

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

Publié dans Active Directory, Annuaire, DFS, Système, Windows 2003 Server, Windows Server 2008, Windows Server 2008 R2, Windows Seven, Windows Vista, Windows XP | Laisser un commentaire

Publication d’un nouveau support de cours -> SAMBA 3.6 avec Red Hat Enterprise Linux

Bonjour

Je viens de terminer la première version du support de cours sur SAMBA. Le document peut être téléchargé à l’adresse suivante :
http://msreport.free.fr/articles/SAMBA_RedHatEnterpriseLinux.pdf
Les éléments suivant sont abordés dans ce document. N’hésitez pas à m’envoyer vos retours d’expériences…

1. Présentation de l’architecture cible
- Vue d’ensemble de l’architecture OpenLDAP / Samba
- Présentation des composants de l’authentification sur un serveur Linux (PAM…)

2. Installation et configuration de Red Hat Enterprise Linux
- L’activation, désactivation du pare feu et de SE Linux

3. Procédure de déploiement
- Installation d’OpenLDAP
- Configuration OpenLDAP
- Configuration du serveur de temps sur les contrôleurs de domaine SAMBA
- Configuration du serveur de temps sur les machines Windows
- Configuration de SAMBA
- Configuration de SMBLDAP-TOOLS
- Configuration du service SSSD
- Configuration de la résolution WINS
- Configuration des scripts de login
- Configuration du secrit de login
- Configuration des stratégies de mots de passe
- Configuration des machines Windows XP / Windows 7
- Configuration de SAMBA en tant que serveurs de fichiers
- Configuration de SAMBA en tant que serveurs d’impression

4. Procédures d’administration
- Vue d’ensemble des principaux outils d’administration de SAMBA

Bonne lecture.

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

Publié dans Annuaire, Linux, SAMBA, Windows Seven, Windows XP | Laisser un commentaire

Dépannage NTFRS avancé.

Bonjour

Ci-dessous le descriptif d’un incident NTFRS que j’ai rencontré chez un de mes clients.

ARCHITECTURE CLIENT :
Un domaine Active Directory MSREPORT.INTRA géré par 3 contrôleurs de domaine sous Windows 2003 SP2 FR.

DESCRIPTION DE L’INCIDENT :
Le contenu des partages \\msreport.intra\sysvol (C:\WINDOWS\SYSVOL\SYSVOL\) et \\msreport.intra\netlogon (C:\WINDOWS\SYSVOL\SYSVOL\MSREPORT.INTRA\SCRIPTS) étaient différents sur les 3 contrôleurs de domaine. Aucune erreur ne remontait dans les observateurs d’événements (journal NTFRS). La réplication NTFRS semblait arrêtée. Le service NTFRS était démarré sur les 3 contrôleurs de domaine.

COMPLEMENT D’INFORMATIONS SUR NTFRS / SYSVOL :
Le moteur de réplication NTFRS permet que le contenu des partages SYSVOL et NETLOGON soient identiques sur les différents contrôleurs du domaine Active Directory. Le moteur de réplication NTFRS s’appuie pour cela sur le moteur de réplication Active Directory et les liens de réplication de la console Sites et Services Active Directory.
Plus précisément, la réplication NTFRS est gérée par 3 objets Active Directory :
- nTDRSSubscriber : objet enfant du compte ordinateur de chaque contrôleur de domaine. Passer la console Utilisateurs et Active Directory en mode affichage « Objets Utilisateurs et Groupes comme conteneur » et en mode « Fonctionnalités avancées » pour voir cet objet.
- nTFRSReplicaSet : objet dans le conteneur SYSTEM qui contient la configuration du jeu de réplication NTFRS (appelé SET). Le chemin LDAP de cet objet est CN=Domain System Volume (SYSVOL share),CN=File Replication Service,CN=System,DC=msreport,DC=intra. Passer la console Utilisateurs et Ordinateurs Active Directory en mode d’affichage « Fonctionnalités avancées » pour voir ce conteneur ou lancer la console ADSIEDIT.MSC.
- nTFRSMember : objet qui référence les contrôleurs de domaine qui utilisent le SET NTFRS.  Le chemin LDAP de cet objet est CN=NOMDC,CN=Domain System Volume (SYSVOL share),CN=File Replication Service,CN=System,DC=msreport,DC=intra. Passer la console Utilisateurs et Ordinateurs Active Directory en mode d’affichage « Fonctionnalités avancées » pour voir ce conteneur ou lancer la console ADSIEDIT.MSC.
Il est important de comprendre que :
- Le répertoire  C:\WINDOWS\SYSVOL\SYSVOL\MSREPORT.INTRA est une jonction (une sorte de lien physique) du répertoire C:\WINDOWS\SYSVOL\domain
- Le répertoire C:\WINDOWS\SYSVOL\STAGING AREAS\MSREPORT.INTRA est une junction du repertoire C:\windows\SYSVOL\staging\domain

La commande dir /aL /s C:\ permet de connaître les jonctions sur un serveur Windows.
Résultat de la commande :
Directory of C:\WINDOWS\SYSVOL\staging areas
12/03/2012  08:37 PM    <JUNCTION>     msreport.intra
0 File(s) 0 bytes
Directory of C:\WINDOWS\SYSVOL\sysvol 12/03/2012 
08:37 PM    <JUNCTION>     msreport.intra
0 File(s)  0 bytes
Le moteur de réplication NTFRS semble utiliser C:\WINDOWS\SYSVOL\domain et C:\windows\SYSVOL\staging\domain pour la réplication et non les jonctions.

ANALYSE DU PROBLEME :
Pour détermine la cause du problème, on valide l’état des 3 contrôleurs de domaine via la commande DCDIAG /V /E > c:\dcdiag.txt. Rechercher les erreurs dans le fichier de sortie. Analyser aussi les observateurs d’événements. Dans notre cas, tout était correcte.

L’étape suivante est de vérifier que les objets FRS sont bien créés. La commande NTFRSUTL DS (installer les supports Tools sur le CD d’installation de Windows Server) permet de valider que les références NTFRS sont présentes.
L’article http://support.microsoft.com/kb/312862/en-us comment recréer ses trois objets.

L’étape suivante est d’installer l’outil SONAR. Ce dernier permet de répliquer la réplication NTFRS.
Pour plus d’informations : http://www.microsoft.com/en-us/download/details.aspx?id=3745
Il existe aussi un outil appelé ULTRASOND qui permet d’effectuer cela : http://www.microsoft.com/en-us/download/details.aspx?id=3660
Hors dans notre cas, l’outil SONAR remontait « NOT A JUNCTION » au niveau de la colonne SYSVOLSHARED sur deux des trois contrôleurs de domaine.
Cela indiquait que le client avait supprimait la jonction C:\windows\SYSVOL\sysvol\msreport.intra (comme une suppression du répertoire) et avait recréé manuellement ce dossier puis recopier le contenu de ce répertoire depuis un autre contrôleur de domaine.

Pour corriger ce problème, il faut supprimer le répertoire (la fausse jonction) C:\WINDOWS\SYSVOL\SYSVOL\MSREPORT.INTRA et C:\WINDOWS\SYSVOL\STAGING AREAS\MSREPORT.INTRA et recréer la jonction avec l’outil Mklink.Exe en appliquant la procédure suivante : http://technet.microsoft.com/en-us/library/cc794939(v=ws.10).aspx

Dans notre cas taper les commandes suivantes :
cd C:\WINDOWS\SYSVOL\SYSVOL\ Mklink /j msreport.intra C:\WINDOWS\SYSVOL\domain
cd C:\WINDOWS\SYSVOL\STAGING AREAS Mklink /j msreport.intra C:\windows\SYSVOL\staging\domain

Pour télécharger l’outil MKLINK : http://downloads.netmediaeurope.de/3155/mklink-de3nle/

Si cela ne fonctionne pas, il faut alors effectuer une restauration non autoritaire de SYSVOL (clé burflags à D2) en spécifiant le serveur qui n’est pas en erreur dans SONAR. http://support.microsoft.com/kb/290762/en-us

A+

Guillaume MATHIEU
Consultant pôle Architecture & Intégration de PROSERVIA (MANPOWER GROUP SOLUTIONS)
La connaissance s’accroît quand on la partage.
http://msreport.free.fr

Publié dans Active Directory, Annuaire, Système, Troubleshouting, Windows 2000 Server, Windows 2003 Server, Windows Server 2008, Windows Server 2008 R2 | Laisser un commentaire