Problème de réplication Active Directory entre un contrôleur de domaine Windows 2003 et Windows 2008 R2 -> résolu avec Port Query UI

Bonjour

DESCRIPTION DU PROBLEME :
Un contrôleur de domaine Windows 2003 refusait de répliquer avec des contrôleurs de domaine Windows Server 2008 R2.
Ce même contrôleur de domaine arrivait à répliquer avec un autre serveur Windows 2003.

ANALYSE DU PROBLEME :
Pour rappel la réplication Active Directory utilise des ports RPC.
Le contrôleur de domaine qui initie la réplication se connecte sur le port TCP 135 de l’autre serveur et négocie avec lui le / les ports à utiliser pour la réplication.
– Windows 2003 Server va utiliser des ports pour répliquer dans la plage 1024 – 5000 (TCP ou UDP).
– Windows 2008 / 2008 R2 va utiliser des ports pour répliquer dans la plage 49152-65535 (TCP ou UDP).
Pour plus d’informations sur les ports de réplication Active Directory :
http://blogs.technet.com/b/askds/archive/2007/08/24/dynamic-client-ports-in-windows-server-2008-and-windows-vista-or-how-i-learned-to-stop-worrying-and-love-the-iana.aspx

Mon problème provenait du fait que l’administrateur réseau avait bloqué la plage de ports dynamique 10000 – 65535.

COMMENT DIAGNOSTIQUER CE TYPE DE PROBLEME :
La première chose est de vérifier la connectivité réseau et le bon fonctionnement du routage (le fameux PING).
La seconde étape est d’utiliser le client Telnet (à ajouter comme fonctionnalité sous Windows Vista / Seven).
Je peux par exemple valider que le port 25 est en écoute en tapant la commande suivante :
Telnet ip_serveur 25
La commande TELNET ne permet cependant que de diagnostiquer les ports TCP.
Pour faire un diagnostique sur des ports UDP et TCP, j’utilise sous Windows l’utilitaire Port Query UI.
http://www.microsoft.com/en-us/download/details.aspx?id=24009
Ce scanner de ports est rapidement devenu un des mes outils de diagnostics préférés.
Il permet de simuler du trafic LDAP / RPC et de scanner un port ou une plage de ports.

A+

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

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

Les réseaux Isa Server 2004 / 2006 / Forefont TMG 2010

Salut à tous

Les réseaux Isa Server sont des éléments très importants dans la configuration d’Isa Server. En effet, Isa Server ne peut filtrer le trafic que entre deux machines que si ces deux machines sont sur deux réseaux Isa Server différents. Nous allons voir dans ce dossier que la création de réseau Isa Server répond à des règles très particlières.

Règles générales :

1. Isa Server doit disposer d’au moins deux cartes réseaux pour fonctionner en mode pare feu (une seule en mode proxy uniquement). Ces cartes doivent être configurées avec une adresse IP fixe (sauf éventuellement pour la carte réseau externe).
2. Configurer les cartes réseaux de votre serveur Isa 2004 avec des adresses IP standard (voir site suivant : http://www.commentcamarche.net/internet/ip.php3). Il faut par exemple éviter d’utiliser une adresse IP 192.168.99.1 avec un masque de sous réseau 255.0.0.0.
3. Un réseau Isa Server 2004 est un ensemble d’adresse IP. Isa Server filtre uniquement le trafic réseau entre deux réseaux Isa Server (un réseau source et un réseau destination). Isa Server ne peut donc pas faire de filtrage entre deux adresses IP appartenant au même réseau Isa Server.
4. Après installation (serveur avec deux cartes réseaux), Isa Server 2004 dispose de 4 réseaux prédéfinis :
– Interne : géré manuellement
– Externe : géré dynamiquement par Isa Server 2004. Correspond à toutes les adresses IP moins l’ensemble des adresses IP des autres réseaux Isa Server).
– VPN : géré dynamiquement par Isa Server 2004
– VPN : géré dynamiquement par Isa Server 2004
5. Les réseaux que vous créez dans Isa Server 2004 doivent être cohérents avec la table de routage du serveur Isa 2004. Par exemple, vous ne pouvez pas avoir deux réseaux Isa Server qui se réfèrent à la même interface réseau.
6. Les règles de réseau définissent le type de relation entre les réseaux. Il en existe deux types :
– Routage : généralement entre deux réseaux avec une adresse privée ou deux réseaux avec une adresse publique (routable sur Internet)
– NAT : généralement entre un réseau avec un adressage IP privé (10.0.0.1/8 à 10.255.255.254/8, 172.16.0.1/16 à 172.31.255.254/16 et 192.168.0.1/24 à 192.168.0.254/24) et un réseau avec un adressage IP publique.
Il arrive que l’on souhaite définir une relation Nat entre deux réseaux avec une adresse IP privée.

Avec un réseau complexe :

Si votre réseau interne est segmenté par plusieurs routeurs, penser à inclure tous vos sous réseaux IP dans la table d’adresse local (Réseau Interne) d’Isa Server afin que les réseaux Isa Server soient cohérents avec votre table d’adresse local.
Si vous configurez une relation de routage entre deux réseaux Isa 2004, chacun des deux réseaux étant segmentés en plusieurs sous réseaux (avec des routeurs), il faut penser à ajouter manuellement les routes sur les routeurs.
Si votre réseau interne est segmenté en plusieurs sous réseau (utilisation de routeurs), configurer les clients Secure Nat avec l’adresse du routeur (s’il existe un roiuteur entre la machine et le serveur Isa). Configurer ensuite sur le routeur, la route vers le serveur Isa comme la route par défaut.

Exemple :

Dans l’exemple ci dessous, vous devez ajouter dans le réseau Interne d’Isa Server 2004 les plages d’adresses IP suivantes :
– 192.168.1.0 à 192.168.1.255
– 192.168.2.0 à 192.168.2.255
– 192.168.3.0 à 192.168.1.255

 

Pour plus d’informations:
http://www.microsoft.com/technet/isa/2004/plan/bp_networks.mspx
Je vous invite aussi à lire mon support de cours sur Isa Server 2006 :
http://msreport.free.fr/articles/IsaServer2006.pdf

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

Publié dans Windows Server 2008 | Laisser un commentaire

Comment ajouter une adresse email et la définir comme principale pour 15000 contacts -> mais avec ADModify.NET

Salut à tous

Cette article a pour but de :
* Vous présenter l’outil ADModify.NET.
* Expliquer un cas concret : l’ajout d’une adresse email et la définition de cette adresse comme principale sur 15000 contacts.
* Vous présenter la console ADSIEDIT et vous présenter en quoi cette console va nous être utile dans le cadre de l’utilisation d’ADModify.NET.
Une version électronique est disponible sur http://msreport.free.fr/articles/ajout_15000_contacts.pdf

Dans notre exemple, chaque contact dispose de deux adresses différentes :
* La première adresse est spécifiée dans le champ « Adresse de messagerie » au niveau de l’onglet « Général ».
* La seconde adresse est spécifiée au niveau de l’onglet « Exchange adresse de messagerie ». Il s’agit d’une adresse SMTP.
Ces deux adresses sont différentes.
Le but de l’opération est d’ajouter automatiquement « Adresse de messagerie » au niveau de l’onglet « Général » en tant qu’adresse de messagerie principale (onglet « Exchange adresse de messagerie »). Cette opération peut être fait très facilement par interface mais devient vite très fastidieuse surtout si on doit la répéter plusieurs milliers de fois.

LA SOLUTION :
Nous allons utiliser ADModify.NET pour effectuer cette opération.
Ce produit est disponible à l’adresse suivante (bouton DOWNLOAD dans la partie droite de la fenêtre) :
http://www.codeplex.com/admodify
Il nécessite l’installation du .Net Framework 2.0.
Le principe du produit est le suivant. Je sélectionne les objets sur lesquels je vais effectuer mes actions et ensuite je peux modifier la valeur d’un ou plusieurs champs en me basant sur la valeur d’un ou plusieurs autres champs. La fenêtre ADModify.NET est très proche de la fenêtre « Propriétés d’un compte utilisateur ».
ADModify.NET permet de générer une adresse à partir du champ « prénom » et du champ « nom » avec la dernière partie de l’adresse qui est commune à tous les utilisateurs (le @nomdomaine.fr).
Là où c’est géniale, c’est que la variable utilisée pour un champ donné correspond au nom de l’attribut Active Directory de ce champ.
Exemple :
La variable pour utiliser le champ « Prénom » dans ADModify.NET est « givenName » (même nom que l’attribut). Nous verrons plus loin dans ce document comment trouver le nom de l’attribut de chaque champ.
Pour revenir à notre objectif, le champ « Adresse de messagerie » au niveau de l’onglet « Général » correspond en fait à l’attribut « mail ».
Il nous suffit donc de cocher ensuite les cases « Add STMP Address » et « Set as Primary » au niveau de l’onglet « E-mail Addresses » dans la fenêtre « ADModify.net » et de cliquer sur le bouton « GO ».
Remarque très importante :
* Faire une sauvegarde complète de votre annuaire avant toute modification.
* Valider sur maquette le fonctionnement de la procédure.
* Appliquer la procédure OU par OU. Les possibilités de l’outil sont immenses donc les risques de mauvaises manipulations le sont tout autant.

ALLER PLUS LOIN AVEC L’OUTIL :
Comment écrire les règles :

Il y a trois règles à connaître :
* Les variables doivent être encadrées par le caractère ‘ (touche 4 du clavier)
* Pour séparer les variables d’une chaîne de caractères, il faut utiliser le caractère % (pourcentage).
* Pour utiliser les caractères % et ‘ il faut précéder ces caractères d’un espace.

Comment déterminer le nom des variables :
Active Directory avec Windows 2003 est divisé en 5 partitions :
* La partition de domaine
* La partition de schéma
* La partition de configuration
* La partition DomaineDnsZones.
* La partition ForestDnsZones.
Il est possible d’ajouter d’autres partitions applicatives.
Avec ADModify.Net, le nom des variables correspond au nom de l’attribut Active Directory.
Pour connaître le nom de l’attribut, utiliser la console ADSIEDIT. Aller dans la partition « Domain ». Le contenu de cette partition est en fait une version avancée de ce que l’on voit dans la console « Utilisateurs et Ordinateurs Active Directory ».
Aller dans les propriétés de l’objet et afficher uniquement les attributs qui ont une valeur. En déduire le champ selon sa valeur de l’attribut.
Remarque :
* Pour installer ADSIEDIT, il faut installer les « SUPPORT TOOLS » dans le dossier SUPPORT à la racine du CD d’installation.

Pour plus d’informations sur l’outil :
Consulter les sites web suivants et l’aide de l’outil (très bien faite).
* http://www.msexchange.org/articles/ADModify-Change- Exchange-Specific-AD-User-Attributes.html

A+
Guillaume MATHIEU
Consultant pôle Architecture & Intégration de PROSERVIA (groupe MANPOWER)

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

DEPLOIEMENT MICROSOFT NDES (MSCEP) -> PROCEDURE INSTALLATION ET ERREUR IIS 500

Salut à tous

OBJECTIFS :
– Déployer le service NDES (MSCEP) pour délivrer des certificats sur iPhone.

ARCHITECTURE :
– Un domaine Active Directory MSREPORT.LOCAL.
– Une autorité de certification racine Autonome MSREPORT-ROOT1 gérée par un serveur Windows 2008 R2 Entreprise membre du domaine (SRV-ROOT1). Ce serveur est éteint. Le mot de passe de compte ordinateur de cette machine est configuré pour ne pas changer.
– Une autorité de certification subordonnée Entreprise MSREPORT-EMET1 gérée par un serveur Windows 2008 R2 Entreprise membre du domaine (SRVEMET1).

LE PRINCIPE DE FONCTIONNEMENT :
– NDES va permettre à des machines non membres du domaine d’effectuer une demande en ligne de certificat. Cette demande va être effectuée en réalité par le compte de service NDES (MSREPORT-NDES dans cet exemple).
– La sécurité du protocole NDES repose sur un « secret partagé ».
– Il faut cependant configurer l’iPhone pour qu’il interroge un serveur NDES. Ce dernier doit être accessible sur Internet.
– NDES doit être installé sur une machine membre du domaine et s’appuie sur le service IIS.
– Il faut configurer l’autorité de certification pour émettre des certificats basés sur les Templates « Agent d’inscription Exchange (requête hors connexion) » et « Chiffrement CEP».

COMMENT UN IPHONE RECUPERE T’IL UN CERTIFICAT AVEC NDES :
– L’administrateur se connecte sur l’URL d’administration NDES et génère le secret partagé. Par défaut ce secret partagé change à chaque fois et a une durée de vie de 60 minutes. Nous verrons qu’il est possible de fixer ce secret partagé.
– L’URL du site web client NDES, le certificat racine de l’autorité de certification et le secret partagé est déployé sur l’iPhone  via l’iPhone Configuration Utility ou via une solution MDM. Avec l’iPhone Configuration Utility, on déploie un profil sur l’iPhone.
– Le certificat est généré sur l’iPhone lors de l’installation du profile.

Je vous invite à lire les liens suivants pour plus d’informations.
http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2011/06/04/ centralized-ipad-management-with-profiles-and-policies.aspx
http://blog.stephendolphin.co.uk/project-work/scep-on-windows-2008r2-for-iphones-ipads/
http://blogs.technet.com/b/askds/archive/2010/11/22/ipad-iphone-certificate-issuance.aspx
http://social.technet.microsoft.com/wiki/contents/articles/9063.network-device-enrollment-service-ndes-in-active-directory-certificate-services-ad-cs-en-us.aspx
http://social.technet.microsoft.com/Forums/is/winserversecurity/ thread/d7d01f1d-b05c-4616-9fed-5833dc69eeb7
http://support.microsoft.com/kb/2483564/en-us
http://support.microsoft.com/kb/959193/en-us
http://technet.microsoft.com/en-us/library/cc753784(v=ws.10)
http://technet.microsoft.com/en-us/library/cc755273(v=ws.10)
http://technet.microsoft.com/en-us/library/ff955646(v=ws.10)
http://support.apple.com/kb/DL1466?viewlocale=fr_FR

PREPARATION DU COMPTE DE SERVICE :
Dans cet exemple, le compte de service NDES sera MSREPORT-NDES.
Ce compte aura un mot de passe qui n’expire jamais.
Ajouter ce compte en tant que membre du groupe local IIS_IUSRS sur le serveur SRVEMET1.
Ajouter ensuite le suffixe UPN http/SRVEMET1 au compte utilisateur MSREPORT-NDES.
Pour cela, taper la commande
setspn -A http/SRVEMET1 MSREPORT\MSREPORT-NDES

INSTALLATION DU SERVICE NDES :
Pour installer NDES (MSCEP), il faut être  membre du groupe « Admins du domaine » ou « Enterprise Admins ».
Aller dans le Gestionnaire de Server et installer le service de rôle « Service d’inscription de périphérique réseau ».
Sélectionner « Spécifier un compte utilisateur » et saisir MSREPORT-NDES.
Saisir un nom pour l’autorité d’inscription SRVEMET1-CA-MSCEP-RA.
Laisser les autres paramètres par défaut et cliquer sur « Installer ».
Une fois l’installation terminée, vous pouvez lancer la console Autorité de certification et aller dans « Modèles de certificats ».
L’installation ajoute automatiquement les modèles de certificats « Chiffrement CEP » et « Agent d’inscription Exchange (requête hors connexion) ».
Le correctif ci-dessous doit être déployé sur le serveur NDES pour permettre le bon fonctionnement du service NDES:
http://support.microsoft.com/kb/2483564/en-us

Dans le cas contraire, l’erreur suivante remonte :
Log Name:      Application
Source:        Microsoft-Windows-NetworkDeviceEnrollmentService
Date:          15/07/2012 18:41:23
Event ID:      11
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      SRVEMET1
Description:
The Network Device Enrollment Service received an http message without the “Operation” tag, or with an invalid “Operation” tag.

TESTER L’ACCES AU SITE WEB D’ADMINISTRATION NDES :
Pour cela, se connecter au site web suivant :
https://srvemet1.msreport.local/certsrv/mscep_admin/
Vous arrivez sur une page où l’on vous fournit « un mot de passe de stimulation d’inscription ». Copier ce numéro, il s’agit du secret partagé.
Dans la configuration actuelle, il change à chaque demande.

CONFIGURATION DES PARAMETRES NDES :
Le but est de pouvoir :
– Configurer NDES avec un secret partagé qui ne change pas et qui n’expire jamais.
– Configurer NDES pour délivrer des certificats utilisateurs.
Ces paramètres existent depuis la mise à jour http://support.microsoft.com/kb/959193/en-us qui est incluse de base dans Windows 2008 R2.

Pour définir que le secret partagé ne change jamais :
HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\ MSCEP\UseSinglePassword. La clé DWORD UseSinglePassword a été mise à 1.

Pour définir le modèle de certificat délivré par NDES :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\ MSCEP\EncryptionTemplate. Mettre le nom du template « User »  dans l’entrée REGSZ.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\ MSCEP\GeneralPurposeTemplate. Mettre le nom du template « User »  dans l’entrée REGSZ.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\ MSCEP\SignatureTemplate. Mettre le nom du template « User »  dans l’entrée REGSZ.
Par défaut « EncryptionTemplate », « GeneralPurposeTemplate », « SignatureTemplate » avaient la valeur « IPSECIntermediateOffline ». Toujours mettre la valeur du modèle de certificat en anglais !

PROBLEME QUAND USESINGLEPASSWORD EST CONFIGURE A LA VALEUR « 1 » :
L’activation du paramètre UseSinglePassword à la valeur « 1 » génère une erreur 500 au niveau du site web https://srvemet1.msreport.local/certsrv/mscep_admin/

POUR CORRIGER L’ERREUR 500 AU NIVEAU DU SITE WEB D’ADMINISTRATION NDES :
– Lancer la console « Gestionnaire IIS ».
– Arrêter le service IIS.
– Ouvrir une session avec le compte MSREPORT-NDES sur SRVEMET1.MSREPORT.LOCAL. Fermer la session. Cette étape est obligatoire. Ne jamais supprimer le profil du compte utilisateur MSREPORT-NDES sur le serveur NDES !
– Supprimer la clé HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MSCEP\EncryptedPassword\ EncryptedPassword.
– Aller dans Pools d’applications. Sélectionner SCEP puis cliquer sur « Paramètres avancées ». Passer le paramètre « Charger le profil utilisateur » sur « True ».
– Donner la permission « Enroll » au niveau du modèle de Certificat déployé par NDES (Utilisateur) au compte MSREPORT-NDES. Pour cela lancer la console « Modèle de Templates ».
– Démarrer IIS.
– Se connecter à l’interface d’administration NDES pour valider le bon fonctionnement du site web NDES d’administration : https://srvemet1.msreport.local/certsrv/mscep_admin/
– Redémarrer le serveur (si la procédure a été mal appliquée cela ne marche plus).
– Se connecter à l’interface d’administration NDES pour valider le bon fonctionnement du site web NDES d’administration : https://srvemet1.msreport.local/certsrv/mscep_admin/

PUBLIER LE SERVEUR MSCEP SUR INTERNET :
– Il faut permettre l’accès au site web NDES sur Internet afin que les IPHONE puissent contacter le serveur NDES via une connexion 3G. Dans mon cas j’utilise aussi une URL publique MSREPORT.FR.
– Le client va donc se connecter sur http://srvemet1.msreport.fr/certsrv/mscep/mscep.dll (site web NDES pour les clients).

DEPLOIEMENT D’UN CERTIFICAT SUR UN IPHONE VIA L’IPHONE CONFIGURATION UTILITY :
– Se connecter sur le site web d’administration de NDES pour récupérer le secret partagé.
https://srvemet1.msreport.local/certsrv/mscep_admin/
– Télécharger et installer ensuite Iphone Configuration Utility for Windows :
http://support.apple.com/kb/DL1466?viewlocale=fr_FR
– Connecter l’IPHONE sur cet ordinateur avec le câble USB. Dans « Utilitaire de configuration Iphone », aller dans « Profils de Configuration » et cliquer sur « Nouveau ». Saisir un nom pour le profil. Aller dans la section « Références ». Cette section permet d’installer les certificats d’autorités de certification.
– Installer le certificat de l’autorité de certification MSREPORT-ROOT1.
– Développer ensuite la section « SCEP ». Entrer les informations suivantes :
URL : http://srvemet1.msreport.fr/certsrv/mscep/mscep.dll
Nom : MSREPORT-EMET1
Object : CN=WIFI
Challenge : le secret partagé (Enrollment challenge password)
Cocher les cases « Utiliser comme signature numérique » et « Utiliser pour le chiffrement de clé ».
– Aller dans Appareils et sélectionner le nom de l’iPhone puis sélectionner l’onglet « Profils de configuration ».
– Cliquer sur « Installer ».
Attention l’iPhone doit être capable de se connecter au site web (URL publique et site web NDES publié).
– Cliquer sur Installer au niveau de l’IPhone. 
– Un message apparaît  comme quoi MSREPORT-ROOT1 sera ajouté à la liste des certificats fiables.
– Cliquer sur Installer.
– Vérifier le type de certificat délivré.

POUR SUPPRIMER UN CERTIFICAT SUR L’IPHONE :
– Il faut supprimer le profil sur l’iPhone. Aller dans « Réglages | Général | Profil ». Supprimer le profil.

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

 

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

Comment centraliser les logs sur une machine -> Utiliser la souscription

Salut à tous

Cet article est disponible au format PDF à l’adresse suivante:
http://msreport.free.fr/articles/Comment-centraliser-logs.pdf

DESCRIPTION DE LA DEMANDE :
L’analyse des observateurs d’événements est une tâche fastidieuse et très longue.
Cet article a pour but de vous proposer une solution permettant :
– De collecter tous une ou partie des observateurs d’événements de vos serveurs
– D’exporter les logs sous forme d’un fichier CSV.

1. PRESENTATION DE LA FONCTIONNALITE DE SOUSCRIPTION :

Depuis Windows Vista / Windows 2008, l’observateur d’événements dispose d’une fonctionnalité appelée « Souscription ».
Cette fonctionnalité permet de récupérer le contenu des observateurs d’événements d’une ou plusieurs machines sous Windows XP Pro, Windows Vista, Windows 2003, Windows 2008, Windows 2008 R2.
Il est possible de créer des filtres pour ne récupérer que certains observateurs d’événements (protocole XQUERY).

2. PRESENTATION DE LA SOLUTION POUR EXPORTER LES OBSERVATEURS D’EVENEMENTS AU FORMAT CSV :

Les commandes PowerShell Get-Eventlog et Get-WinEvent permettent de lister le contenu des journaux d’évènements.
Nous verrons dans cet article qu’il est nécessaire d’utiliser la commande PowerShell Get-WinEvent pour analyser le journal « Forwarded Events » (journal utilisé pour collecter les événements).

3. MISE EN PLACE DE LA SOUSCRIPTION :

Le serveur collecteur et les serveurs « sources » doivent être dans le même domaine ou deux domaines différents mais qui s’approuvent.

SUR LE SERVEUR DE SOUSCRIPTION :
Taper les commandes suivantes :
winrm quickconfig
wecutil qc
Ajouter l’entité de sécurité « NETWORK SERVICE » dans le groupe « Event Log Readers ». 

SUR LES TOUS LES ORDINATEURS « SOURCES » :
Taper la commande suivante :
winrm quickconfig
Ajouter l’entité de sécurité « NETWORK SERVICE » dans le groupe « Event Log Readers ». 
Ajouter le compte ordinateur du serveur collecteur en tant qu’administrateur local de la machine source (membre du groupe « Administrators »).

Créer et configurer la souscription sur le collecteur :
Démarrer la console « Server Manager ».
Aller dans l’onglet « Diagnostics\Event Viewer\Subscription ».
Faire un clic droit et sélectionner « Create Subscription ».
Sélectionner « Forwarded Events » comme  « Destination log ».
Sélectionner « Collector initiated »et cliquer ensuite sur « Select Computers ».
Ajouter tous les machines pour lesquels vous voulez collecter les logs.
Cliquer sur « Add Domain computers ».
Entrer le nom de vos serveurs.
Cliquer sur le bouton « Test » pour vérifier que la source est accessible depuis le collecteur.
Au niveau des propriétés de la souscription, cliquer sur le bouton « Select Events ».
Au niveau de « QUERY », créer votre requête pour récupérer que les logs.
Aller ensuite dans l’onglet « XML »
Cocher la case « Edit query manually ».Il est en possible d’affiner les requêtes par défaut (via l’interface) pour collecter les événements.
Simplifier la requête XQUERY.
Faire OK pour valider.

Configurer le collecteur pour recevoir les événements au format binaire.
Taper les commandes suivantes :
wecutil es : permet de déterminer le nom de la souscription
wecutil gs ars : permet de voir les paramètres de la souscription
wecutil ss ARS /cf:events : permet de configurer la souscription pour récupérer les événements au format binaire.

Redémarrer ensuite les serveurs sources et le collecteur (si les descriptions n’apparaissent pas correctement).
Vérifier que la souscription fonctionne. Pour cela, faire un clic droit sur la souscription et aller dans « RunTime Status ».

4. SCRIPT POUR ANALYSER LES LOGS :

Le script suivant permet d’extraire sous forme d’un fichier CSV tous les événements des dernières 24 heures.
Il permet d’afficher la description de l’événement sur une seule ligne (nécessaire pour créer le fichier CSV).
Il crée un fichier résultat avec la date d’hier.

# Date Intialization with format YYYY-MM-DD
$Yesterday = (get-date (get-date).AddDays(-1) -format yyyy-MM-dd)
# Create Log file of the day
$file = New-Item -type File (“C:\MSREPORT\” + $YESTERDAY +”_LOGS.csv”)
# Initialize header line in CSV file
$HeaderLine = “DateandTime;Source;EventID;TaskCategory;Message” | Out-File $file -Append
$filterXml = ‘
  <QueryList>
  <Query Id=”0″ Path=”ForwardedEvents”>
    <Select Path=”ForwardedEvents”>*[System[TimeCreated[timediff(@SystemTime) <= 2592000000]]]</Select>
  </Query>
</QueryList>’
Get-WinEvent –FilterXml $filterXml | select TimeCreated,ProviderName,Id,TaskDisplayName,Message | foreach {
 $Message = $_.Message -replace(‘\t’,” “)
 $Message = $Message -replace (“\s” , ” “)
 $Message = $Message.replace(“`r`n”,” “)
 $LineToWrite = [string]$_.TimeCreated + “;” + $_.ProviderName + “;” + [string]$_.Id + “;” + $_.TaskDisplayName + “;” + $Message | Out-File $file -Append
}

5. LES RETOURS D’EXPERIENCES :
La fonctionnalité de souscription est plus complexe à mettre en place qu’il n’y paraît !

RETOUR D’EXPERIENCE 1 : LA COLLECTE DES JOURNAUX D’EVENEMENTS FONCTIONNE MAIS LA DESCRIPTION DE CHAQUE EVENEMENT EST INCORRECTE.

On arrive dans ce cas à collecter les événements mais le message dans le champ description est remplacé par  « The description for Event ID XXXX from source XXXX cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer »

Log Name:      System
Source:        Service Control Manager
Date:          16/08/2011 17:11:23
Event ID:      7036
Task Category: None
Level:         Information
Keywords:      Classic
User:          N/A
Computer:      FR92SV0001.newlife.lan
Description:
The description for Event ID 7036 from source Service Control Manager cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.
If the event originated on another computer, the display information had to be saved with the event.
The following information was included with the event:
WinHTTP Web Proxy Auto-Discovery Service

POUR CORRIGER CE PROBLEME :

Effectuer les actions suivantes sur le serveur qui collecte les événements et sur toutes les machines sources :
Ajouter l’entité de sécurité « NETWORK SERVICE»  (service réseau) dans le groupe « Event Log Readers ». On retrouve ce groupe au niveau de la base de compte locale de chaque serveur en groupe de travail / membre d’un domaine et dans le conteneur BUILTIN de l’annuaire Active Directory sur un contrôleur de domaine.

Configurer la souscription pour récupérer les événements au format binaire et non au format texte :
Sur le serveur qui collecte les événements, taper les commandes suivantes :
wecutil es : permet de déterminer le nom de la souscription
wecutil gs ars : permet de voir les paramètres de la souscription
wecutil ss ARS /cf:events : permet de configurer la souscription pour récupérer les événements au format binaire.

Configurer le serveur de collecte pour disposer des descriptions des événements :
Si vous collectez les événements d’un contrôleur de domaine, il sera nécessaire d’installer  la console d’administration du rôle « Active Directory Service ». Pour faire cela sous Windows 2008, aller dans le  « Server Manager | Features ». Faire un clic droit avec la souris et sélectionner « Add features ». Développer « Remote Server Administration Tools » et sélectionner les consoles d’administration à installer.

RETOUR D’EXPERIENCE 2 : LE MESSAGE D’ERREUR ACCESS DENIED APPARAIT :
Dans certains cas la souscription ne fonctionne pas et on a le message « Access is denied ».
Cela se produit si vous configurer la souscription sur « Minimize latency » au niveau des paramètres avancées de la souscription.
Pour plus d’informations :
http://social.technet.microsoft.com/Forums/en-US/winserverManagement/thread/665375cc-5cb6-4b5b-952e-1c9908382208

RETOUR D’EXPERIENCE 3 : IL N’EST PAS POSSIBLE DE COLLECTER LES LOGS VERS UN JOURNAL PERSONNALISE :
Il est possible de créer un observateur d’événement personnalisé mais il ne semble pas être possible de collecter les logs vers ce journal.
La commande suivante permet par exemple de créer un journal personnalisé appelé MSREPORT : new-eventlog -source MSREPORT -logname MSREPORT

Dans cet exemple, les événements seront collectés dans le journal « FORWARDED EVENTS ».

Pour plus d’informations :
http://social.technet.microsoft.com/Forums/en-US/winserverManagement/thread/f16be533-4f4a-469e-bc17-7591eb46461b/

RETOUR D’EXPERIENCE 4 : IMPOSSIBLE D’ANALYSER LE JOURNAL « FORWARDED EVENTS » AVEC LA COMMANDE POWERSHELL GET-EVENTLOG :

Depuis Windows 2008, il y a deux types de journaux d’événements : « SYSTEM » et « OPERATIONAL ».
Hors la commande PowerShell Get-EventLog ne permet que d’analyser les journaux d’événements de type « SYSTEM ». Il n’est donc pas possible d’analyser le journal « FORWARDED EVENTS » avec cette commande.
Il faut pour cela utiliser la commande PowerShell Get-WinEvent.
Le paramètre -FilterHashtable permet d’effectuer les mêmes filtres que la commande Get-EventLog.

RETOUR D’EXPERIENCE 5 : LE PARAMETRE « –FILTERHASTABLE START TIME » NE MARCHE PAS AVEC LE JOURNAL « FORWARDED EVENTS » :

Lancer PowerShell et exécuter les deux commandes ci-dessous :
$starttime = (get-date).adddays(-1)
$endtime = (get-date)

Exécuter maintenant la commande suivante :
Get-WinEvent -FilterHashtable @{logname=”application”; starttime=$starttime ; EndTime= $endtime}
Vous obtenez alors tous les événements contenus dans le journal application des dernières 24 heures.
Si votre journal d’événement est vide ou que vous n’avez aucun événement depuis 24 heures, vous obtenez le résultat suivant :
Get-WinEvent : No events were found that match the specified selection criteria

Assurez-vous maintenant que vous disposez d’au moins 1 événement depuis 24 heures dans le journal « Forwarded Events » et lancer la commande PowerShell suivante :
Get-WinEvent -FilterHashtable @{logname=”ForwardedEvents”; starttime=$starttime ; EndTime= $endtime}
Cela renvoie systématiquement « Get-WinEvent : No events were found that match the specified selection criteria ».
Le problème vient en fait du fait que le journal Forwarded Events rencontre un problème avec le paramètre Start Time.
On peut reproduire le problème directement dans l’interface graphique de Windows Server 2008.
Pour cela :
Lancer la console « Event Viewer ». Faire un clic droit sur « Forwarded Events » et sélectionner « Filter Current Log ». Dans la liste déroulante « Logged », sélectionner « Custom Range ».
Définir la date de démarrage (FROM) sur « Events on » et spécifier une date.
Définir la date de fin (TO) sur « Last Events ».
Faire OK. Aucun évènement ne s’affiche.

Pour contourner ce problème, il faut sélectionner dans le filtre « Last 24 hours ».
Si vous voulez une période de temps personnalisé, au niveau de votre filtre cliquer sur l’onglet XML et copier / coller le contenu du filtre (QueryList).

<QueryList>
  <Query Id=”0″ Path=”ForwardedEvents”>
    <Select Path=”ForwardedEvents”>*[System[TimeCreated[timediff(@SystemTime) <= 86400000]]]</Select>
  </Query>
</QueryList>

La commande PowerShell Get-WinEvent peut être utilisée avec un filtre personnalisé :
$filterXml = ‘
   <QueryList>
  <Query Id=”0″ Path=”ForwardedEvents”>
    <Select Path=”ForwardedEvents”>*[System[TimeCreated[timediff(@SystemTime) <= 2592000000]]]</Select>
  </Query>
</QueryList>’
Get-WinEvent –FilterXml $filterXml

Cela marche maintenant !

Pour plus d’informations :
get-Help Get-Winevent -full > c:\getwinvent.txt
Lire ensuite le fichier c:\getwinvent.txt
http://blogs.msdn.com/b/powershell/archive/2011/04/14/using-get-winevent-filterxml-to-process-windows-events.aspx
http://stackoverflow.com/questions/9224527/get-time-of-forwarded-events-with-get-winevent
http://msdn.microsoft.com/en-us/library/aa385231.aspx

RETOUR D’EXPERIENCE 6 : IL N’EST PAS POSSIBLE DE SUPPRIMER JUSTE UN EVENEMENT DANS UN JOURNAL :

Il ne semble pas être possible de supprimer uniquement un seul événement pour des raisons de sécurité. En effet les commandes Clear-EventLog et Remove-EventLog permettent uniquement de supprimer tous les événements d’un journal de logs.

RETOUR D’EXPERIENCE 7 :
La souscription échoue. On peut voir le message d’erreur ci-dessous en faisant un clic droit sur la souscription puis « RunTime Status »
[FQDN] – Error – Last retry time: 02/06/2012 13:23:15. Code (0x138C): <f:ProviderFault provider=”Event Forwarding Plugin” path=”%systemroot%\system32\wevtfwd.dll” xmlns:f=”http://schemas.microsoft.com/wbem/wsman/1/wsmanfault”><t:ProviderError xmlns:t=”http://schemas.microsoft.com/wbem/wsman/1/windows/EventLog”>Windows Event Forward plugin can’t read any event from the query since the query returns no active channel. Please check channels in the query and make sure they exist and you have access to them.</t:ProviderError></f:ProviderFault>  Next retry time: 02/06/2012 13:28:15.

Le problème provient en fait du fait que l’on a fait une requête XML QUERY avec un filtre sur le champ Category.
Dans mon cas la requête échoue quand je sélectionne plus de 22 critères. Je pense qu’il s’agit d’un problème de longueur de requête. Pour contourner le problème j’utilise les opérateurs = ou != selon le cas pour réduire la taille de la requête.

<QueryList>
  <Query Id=”0″ Path=”Application”>
    <Select Path=”Application”>*[System[Provider[@Name=’ESENT’] and (Level=1  or Level=2 or Level=3 or Level=4 or Level=0 or Level=5) and ( Task = 1 or Task = 2 or Task = 3 or Task = 4 or Task = 5 or Task = 6 or Task = 7 or Task = 8 or Task = 9 or Task = 10 or Task = 12 or Task = 13 or Task = 14 or Task = 15 or Task = 16 or Task = 17 or Task = 18 or Task = 19 or Task = 20 or Task = 21 or Task = 23 or Task = 24 or Task = 25 or Task = 26 or Task = 27 or Task = 28 or Task = 29)]]</Select>
  </Query>
</QueryList>

Si je veux toutes les category sauf la catégorie 11, je crée ma requête de cette façon et cela marche alors :

<QueryList>
  <Query Id=”0″ Path=”Application”>
    <Select Path=”Application”>*[System[Provider[@Name=’ESENT’] and (Level=1  or Level=2 or Level=3 or Level=4 or Level=0 or Level=5) and ( Task != 11)]]</Select>
  </Query>
</QueryList>

A+

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

Publié dans Outils, Scripts, Système, Windows Server 2008, Windows Server 2008 R2 | Marqué avec , , | 2 commentaires