<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ldap389 &#187; sécurité</title>
	<atom:link href="http://www.ldap389.info/category/securite/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ldap389.info</link>
	<description>Active Directory Blog</description>
	<lastBuildDate>Thu, 26 Jan 2012 11:37:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Powershell: exporter les firewall policies de vos serveurs TMG.</title>
		<link>http://www.ldap389.info/2011/12/22/powershell-tmg-exporter-firewall-policies/</link>
		<comments>http://www.ldap389.info/2011/12/22/powershell-tmg-exporter-firewall-policies/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 00:17:46 +0000</pubDate>
		<dc:creator>ldap389</dc:creator>
				<category><![CDATA[scripts]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[tmg]]></category>

		<guid isPermaLink="false">http://www.ldap389.info/?p=1604</guid>
		<description><![CDATA[Nous allons voir dans ce post comment utiliser PowerShell avec TMG en utilisant l&#8217;objet COM FPC.root, pour plus de détails vous pouvez lire cet article. Le but de ce script est d&#8217;exporter au format XML les Firewall Policies de chacun de vos serveurs TMG: Pour nous connecter à chacun des serveurs TMG nous allons utiliser [...]]]></description>
			<content:encoded><![CDATA[<p>Nous allons voir dans ce post comment utiliser PowerShell avec TMG en utilisant l&#8217;objet COM <a href="http://msdn.microsoft.com/en-us/library/ms826706.aspx">FPC.root</a>, pour plus de détails vous pouvez lire <a href="http://www.isaserver.org/tutorials/Forefront-TMG-Scripting-with-VBScript-Powershell.html">cet article</a>.</p>
<p>Le but de ce script est d&#8217;exporter au format XML les <em>Firewall Policies</em> de chacun de vos serveurs TMG:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2011/12/firewallpolicies1.jpg" rel="lightbox[1604]"><img class="aligncenter size-medium wp-image-1606" title="firewallpolicies" src="http://www.ldap389.info/wp-content/uploads/2011/12/firewallpolicies1-300x169.jpg" alt="" width="300" height="169" /></a><br />
<span id="more-1604"></span><br />
Pour nous connecter à chacun des serveurs TMG nous allons utiliser la méthode <em><a href="http://msdn.microsoft.com/en-us/library/ms826310.aspx">ConnectToConfigurationStorageServer</a></em><em> . </em>Puis nous ferons appel à la collection <em><a href="http://msdn.microsoft.com/en-us/library/aa491800.aspx">FPCPolicyRules</a></em> pour parcourir les différentes règles firewall. Pour chaque serveur les informations suivantes seront affichées:</p>
<ul>
<li>Nom de la règle.</li>
<li>Si celle ci est active.</li>
<li>Type d&#8217;action: Accepter traffic (0), Rejeter le traffic (1).</li>
</ul>
<p>Ce qui donne:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2011/12/scriptresult.jpg" rel="lightbox[1604]"><img class="aligncenter size-medium wp-image-1607" title="scriptresult" src="http://www.ldap389.info/wp-content/uploads/2011/12/scriptresult-300x93.jpg" alt="" width="300" height="93" /></a></p>
<p>Chaque règle est exportée au format XML dans un fichier %NOMSERVER%_%NOMREGLE%.xml situé dans répertoire courant. Ceci grâce à la méthode <em><a href="http://msdn.microsoft.com/en-us/library/ms826700.aspx">FPC.ExportToFile</a>:</em></p>

<div class="wp_syntax"><div class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #800080;">$oFPC</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> <span style="color: #008080; font-style: italic;">-comObject</span> FPC.root
<span style="color: #800080;">$cArrays</span> <span style="color: pink;">=</span> <span style="color: #800080;">$oFPC</span>.Arrays
<span style="color: #0000FF;">Foreach</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$oArray</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$cArrays</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
    <span style="color: #800080;">$policyrules</span> <span style="color: pink;">=</span> <span style="color: #800080;">$oArray</span>.ArrayPolicy.policyrules
    <span style="color: #0000FF;">foreach</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$policyrule</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$policyrules</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
        <span style="color: #800080;">$policyrule</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">select</span> name<span style="color: pink;">,</span>enabled<span style="color: pink;">,</span>action
        <span style="color: #800080;">$szOutFilePath</span> <span style="color: pink;">=</span> <span style="color: #800000;">'C:\'</span> <span style="color: pink;">+</span> <span style="color: #800080;">$policyrule</span>.name <span style="color: pink;">+</span> <span style="color: #800000;">'.xml'</span>
        <span style="color: #008000;">#See options for $iOptionalData at &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/aa490382.aspx&quot;&gt;http://msdn.microsoft.com/en-us/library/aa490382.aspx&lt;/a&gt;</span>
        <span style="color: #800080;">$iOptionalData</span> <span style="color: pink;">=</span>  0x00000001 <span style="color: #FF0000;">-bor</span> 0x00000002 <span style="color: #FF0000;">-bor</span> 0x00000004 <span style="color: #FF0000;">-bor</span> 0x00000008
        <span style="color: #800080;">$szPassword</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;12345678&quot;</span>
        <span style="color: #800080;">$szComment</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;&quot;</span>
        <span style="color: #800080;">$policyrule</span>.ExportToFile<span style="color: #000000;">&#40;</span><span style="color: #800080;">$szOutFilePath</span><span style="color: pink;">,</span> <span style="color: #800080;">$iOptionalData</span><span style="color: pink;">,</span> <span style="color: #800080;">$szPassword</span><span style="color: pink;">,</span> <span style="color: #800080;">$szComment</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Pour télécharger le script complet c&#8217;est ici:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2011/12/export-fw-policy.txt"><img class="aligncenter size-full wp-image-83" title="tool" src="http://www.ldap389.info/wp-content/uploads/2010/03/tool1.png" alt="" width="48" height="48" /></a></p>
<p>Changer les valeurs:</p>
<ul>
<li>$servers: noms de vos serveurs TMG.</li>
<li>$iOptionalData: Type d&#8217;export (données Radius etc&#8230;) Voir <a href="http://msdn.microsoft.com/en-us/library/aa490382.aspx">ce lien</a> pour plus détails.</li>
<li>$szPassword: Mot de passe utilisé pour exporter les données confidentielles (ex: données Radius)</li>
</ul>
<p>&nbsp;</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Powershell%3A+exporter+les+firewall+policies+de+vos+serveurs+TMG.+http%3A%2F%2Fis.gd%2FSIIGy8" title="Post to Twitter"><img class="nothumb" src="http://www.ldap389.info/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.ldap389.info/2011/12/22/powershell-tmg-exporter-firewall-policies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Publication OWA via une array TMG membre d&#8217;un domaine en DMZ</title>
		<link>http://www.ldap389.info/2011/12/09/publication-owa-url-externearray-tmg-domaine-dmz/</link>
		<comments>http://www.ldap389.info/2011/12/09/publication-owa-url-externearray-tmg-domaine-dmz/#comments</comments>
		<pubDate>Fri, 09 Dec 2011 22:07:25 +0000</pubDate>
		<dc:creator>ldap389</dc:creator>
				<category><![CDATA[Public Key Infrastructure]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[pki]]></category>
		<category><![CDATA[rodc]]></category>
		<category><![CDATA[tmg]]></category>

		<guid isPermaLink="false">http://www.ldap389.info/?p=1551</guid>
		<description><![CDATA[Nous allons dans cet article décrire comment fonctionne TMG pour publier l&#8217;URL externe de votre OWA et vous indiquer quels types de certificats utiliser. Le site OWA est installé sur les serveurs CAS de votre infrastructure Exchange. L&#8217;URL interne du site est enregistrée dans votre DNS interne et est accédé par les clients membres de votre domaine. [...]]]></description>
			<content:encoded><![CDATA[<p>Nous allons dans cet article décrire comment fonctionne TMG pour publier l&#8217;URL externe de votre OWA et vous indiquer quels types de certificats utiliser. Le site OWA est installé sur les serveurs CAS de votre infrastructure Exchange. L&#8217;URL interne du site est enregistrée dans votre DNS interne et est accédé par les clients membres de votre domaine. L&#8217;URL externe du site est enregistrée dans votre DNS externe et est accédée par les clients se connectant depuis l&#8217;internet qui ne sont pas forcément membres de votre domaine. Pour obtenir ces URLs, lancer la commande suivante via l&#8217;Exchange Management Shell:</p>

<div class="wp_syntax"><div class="code"><pre class="powershell" style="font-family:monospace;">Get<span style="color: pink;">-</span>OwaVirtualDirectory <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">ft</span> server<span style="color: pink;">,</span>InternalURL<span style="color: pink;">,</span>externalURL</pre></div></div>

<p><span id="more-1551"></span><br />
Dans notre exemple l&#8217;URL interne est <em>mail.internal.ldap389.info</em> et l&#8217;externe <em>mail.ldap389.info</em>. Seul le trafic SSL est accepté, sur chacun de nos CAS un certificat SAN issu de notre PKI d&#8217;entreprise avec ces deux URLs  est mis en place.</p>
<p>Les clients accédant à l&#8217;URL interne <em>mail.internal.ldap389.info</em> se connectent directement au serveur CAS, le trafic est réparti entre les différents membres du CAS array via un équipement HLB (trafic en vert dans le schéma ci-dessous).</p>
<p>Les clients se connectant depuis l&#8217;internet via l&#8217;URL <em>mail.ldap389.info</em> accèdent tout d&#8217;abord aux serveurs TMG, le trafic est réparti sur les cartes réseau externes des différents membres de l&#8217;array TMG via un équipement HLB, ces IPs sont accessibles depuis Internet et situés dans une &#8220;DMZ publique&#8221;. Le trafic entre les clients internet et le CAS array est indiqué en rouge sur le schéma et expliqué ci-après:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2011/12/owa-tmg3.jpg" rel="lightbox[1551]"><img class="aligncenter size-medium wp-image-1577" title="owa-tmg" src="http://www.ldap389.info/wp-content/uploads/2011/12/owa-tmg3-229x300.jpg" alt="" width="229" height="300" /></a></p>
<p>Un certificat a été acheté auprès d&#8217;un CA externe et déclaré sur le listener OWA des serveurs TMG afin de permettre aux machines  ne faisant pas partie du domaine <em>internal.ldap389.info, </em>de communiquer via SSL avec votre array TMG. Si vous utilisez un certificat issu de votre PKI interne alors le root CA devra être déclaré comme de confiance sur tous les clients externes, sous peine d&#8217;avoir ce type d&#8217;avertissement lors de la connexion:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2011/12/warning-root-ca.jpg" rel="lightbox[1551]"><img class="aligncenter size-medium wp-image-1559" title="warning-root-ca" src="http://www.ldap389.info/wp-content/uploads/2011/12/warning-root-ca-300x239.jpg" alt="" width="300" height="239" /></a></p>
<p>Les serveurs TMG communiquent, à partir de leur carte réseau interne situé en &#8220;DMZ privée&#8221;, de manière sécurisé avec le CAS array.  Pour cela le certificat de votre CA d&#8217;entreprise est déclaré comme autorité de certification de confiance sur les serveurs TMG. Ceci afin de permettre le traffic SSL avec le certificat SAN mis en place sur les membres du CAS array et issu de votre PKI d&#8217;entreprise.</p>
<p>L&#8217;authentification des clients auprès du TMG est de type &#8220;HTML Form Authentication&#8221;, les credentials de l&#8217;utilisateur sont validés via LDAP over SSL auprès d&#8217;un <a href="http://blogs.technet.com/b/activedirectoryua/archive/2009/01/15/planning-and-deploying-rodcs.aspx">RODC</a> sous Windows 2008R2 Core membre du domaine <em>internal.ldap389.info</em>. Plusieurs RODC peuvent être configurés via le <em>LDAP Server Set</em>. La <a href="http://technet.microsoft.com/en-us/library/cc730883(WS.10).aspx">mise en cache des mots de passe </a>pour les utilisateurs accédant à la messagerie est conseillée, dans ce cas utiliser un <a href="http://technet.microsoft.com/fr-fr/library/cc730693(WS.10).aspx">RODC par site AD</a>. La configuration de l&#8217;authentification se fait au niveau du listener OWA sur le TMG:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2011/12/tmg-rodc.jpg" rel="lightbox[1551]"><img class="aligncenter size-medium wp-image-1560" title="tmg-rodc" src="http://www.ldap389.info/wp-content/uploads/2011/12/tmg-rodc-300x113.jpg" alt="" width="300" height="113" /></a></p>
<p>Pour que TMG puisse communiquer en SSL auprès du RODC le nom <em>rodc.internal.ldap389.info </em>doit être résolu via un fichier host. De même pour une communication sécurisée entre TMG et le CAS array, le nom <em>mail.ldap389.info</em> doit pointer vers le HLB répartissant le trafic externe sur le CAS array (voir host file sur le schéma).</p>
<p>Afin de bénéficier de toutes les fonctionnalités d&#8217;une array TMG entreprise, dont la réplication <a href="http://araihan.wordpress.com/2010/06/10/install-and-configure-forefront-tmg-2010-enterprise-management-server-ems-for-centralized-management-step-by-step/">EMS</a>, celle-ci doit être membre d&#8217;un <a href="http://technet.microsoft.com/en-us/library/dd897048.aspx">domaine</a> (<em>dmz.local</em>). Pour déployer un domaine en DMZ nous vous conseillons la lecture de <a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=3957">document</a>. Dans notre cas, le domaine en DMZ n&#8217;a pas de relation d&#8217;approbation avec le domaine interne, ni aucune redirection DNS (d&#8217;où l&#8217;emploi de fichiers host dans le paragraphe ci-dessus). Seules les communications sécurisées sont autorisées de la &#8220;DMZ privée&#8221; vers le réseau interne.</p>
<p>Afin de sécuriser ce domaine en DMZ (trafic en bleu sur le schéma), les contrôleurs de domaine sont placés dans un subnet dédié de la &#8220;DMZ privée&#8221;, qui n&#8217;accepte aucun trafic venant de l&#8217;internet. Les TMG s&#8217;authentifient uniquement auprès de RODC 2008R2 core, le port <a href="http://technet.microsoft.com/en-us/library/cc754956(WS.10).aspx">DNS TCP 53</a> doit tout de même être ouvert vers le PDCe, seul RWDC du domaine, afin de permettre la mise à jour DNS des clients (voir <em>How does the client DNS update referral mechanism work?). </em>Pour joindre vos serveurs TMG auprès d&#8217;un RODC utiliser ce <a href="http://blogs.dirteam.com/blogs/jorge/archive/2009/01/02/domain-join-through-an-rodc-instead-of-an-rwdc.aspx">script</a>. Si vous désirez sécuriser encore plus ce domaine vous pouvez aussi mettre en place un <a href="http://technet.microsoft.com/fr-fr/library/cc755310(WS.10).aspx">administrateur local pour les RODC</a> et interdire la mise en cache des mots de passe des administrateurs du domaine. Vous pouvez aussi paramétrer la valeur <em><a href="http://support.microsoft.com/kb/172931/en-us">CachedLogonCounts</a></em> sur vos TMG à 0, mais vous ne pourrez pas vous loguer sur la machine avec un compte du domaine <em>dmz.local</em> si aucun contrôleur de domaine n&#8217;est disponible.</p>
<p>Dans cette configuration votre TMG est membre d&#8217;un domaine en DMZ sécurisé et vous permet de bénéficier de toutes les fonctionnalités du produit dans sa version Enterprise.</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Publication+OWA+via+une+array+TMG+membre+d%E2%80%99un+domaine+en+DMZ+http%3A%2F%2Fis.gd%2FANF98X" title="Post to Twitter"><img class="nothumb" src="http://www.ldap389.info/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.ldap389.info/2011/12/09/publication-owa-url-externearray-tmg-domaine-dmz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Powershell: WSUS comparer patchs approuvés entre deux groupes</title>
		<link>http://www.ldap389.info/2011/10/31/powershell-wsus-comparer-patchs-approuves-entre-deux-groupes/</link>
		<comments>http://www.ldap389.info/2011/10/31/powershell-wsus-comparer-patchs-approuves-entre-deux-groupes/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 14:31:29 +0000</pubDate>
		<dc:creator>ldap389</dc:creator>
				<category><![CDATA[scripts]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[wsus]]></category>

		<guid isPermaLink="false">http://www.ldap389.info/?p=1444</guid>
		<description><![CDATA[Ce script compare les KB approuvées entre deux groupes d&#8217;ordinateurs WSUS ce qui peut etre utile quand vous configurez un groupe de machines de test et un de production, vous pouvez lire cet article de Group Policy Central pour plus de détails sur ce type de configuration via de clients WSUS via GPO (voir chapitre Implement a WSUS [...]]]></description>
			<content:encoded><![CDATA[<p>Ce script compare les KB approuvées entre deux groupes d&#8217;ordinateurs WSUS ce qui peut etre utile quand vous configurez un groupe de machines de test et un de production, vous pouvez lire cet article de <a href="http://www.grouppolicy.biz/2011/06/best-practices-group-policy-for-wsus/">Group Policy Central</a> pour plus de détails sur ce type de configuration via de clients WSUS via GPO (voir chapitre <em>Implement a WSUS Update Test Group of Computers</em>).<br />
<span id="more-1444"></span></p>
<p>Pour connaitre le statut d&#8217;une mise à jour nous allons utiliser  l&#8217;espace de nom <em>Microsoft.UpdateServices.Administration </em>(enumeration <em><a href="http://msdn.microsoft.com/en-us/library/microsoft.updateservices.administration.updateapprovalaction(v=VS.85).aspx">UpdateApprovalAction</a>), </em>le code suivant parcoure toutes les KB et retourne son statut de validation pour l&#8217;ensemble des groupes d&#8217;ordinateurs.</p>

<div class="wp_syntax"><div class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #000000;">&#91;</span>void<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>reflection.assembly<span style="color: #000000;">&#93;</span>::<span style="color: #800000;">LoadWithPartialName</span><span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;Microsoft.UpdateServices.Administration&quot;</span><span style="color: #000000;">&#41;</span>
<span style="color: #800080;">$wsus</span> <span style="color: pink;">=</span> <span style="color: #000000;">&#91;</span>Microsoft.UpdateServices.Administration.AdminProxy<span style="color: #000000;">&#93;</span>::getUpdateServer<span style="color: #000000;">&#40;</span><span style="color: #800080;">$wsusserver</span><span style="color: pink;">,</span><span style="color: #800080;">$False</span><span style="color: #000000;">&#41;</span>
<span style="color: #800080;">$updateScope</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">new-object</span> Microsoft.UpdateServices.Administration.UpdateScope;
<span style="color: #800080;">$updateScope</span>.UpdateApprovalActions <span style="color: pink;">=</span><span style="color: #000000;">&#91;</span>Microsoft.UpdateServices.Administration.UpdateApprovalActions<span style="color: #000000;">&#93;</span>::Install <span style="color: #FF0000;">-bor</span> <span style="color: #000000;">&#91;</span>Microsoft.UpdateServices.Administration.UpdateApprovalActions<span style="color: #000000;">&#93;</span>::Uninstall <span style="color: #FF0000;">-bor</span> <span style="color: #000000;">&#91;</span>Microsoft.UpdateServices.Administration.UpdateApprovalActions<span style="color: #000000;">&#93;</span>:: All <span style="color: #FF0000;">-bor</span> <span style="color: #000000;">&#91;</span>Microsoft.UpdateServices.Administration.UpdateApprovalActions<span style="color: #000000;">&#93;</span>::NotApproved
&nbsp;
<span style="color: #800080;">$updates</span> <span style="color: pink;">=</span> <span style="color: #800080;">$wsus</span>.GetUpdates<span style="color: #000000;">&#40;</span><span style="color: #800080;">$updateScope</span><span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #800080;">$groups</span> <span style="color: pink;">=</span> <span style="color: #800080;">$wsus</span>.GetComputerTargetGroups<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">foreach</span><span style="color: #000000;">&#40;</span> <span style="color: #800080;">$update</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$updates</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
&nbsp;
    <span style="color: #0000FF;">foreach</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$group</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$groups</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
&nbsp;
    <span style="color: #800080;">$status</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Pending&quot;</span>
&nbsp;
    <span style="color: #008000;">#MSDN update status:</span>
    <span style="color: #008000;">#All: Use to query all updates, regardless of their action.</span>
    <span style="color: #008000;">#Install: Client installs the update.</span>
    <span style="color: #008000;">#NotApproved :The Update will not be available for clients. This value can be used in a simple targeting ComputerTargetGroup to &quot;override&quot; a UpdateApproval made to the &quot;All Computers&quot; ComputerTargetGroup.</span>
    <span style="color: #008000;">#Uninstall: Client removes the update.</span>
&nbsp;
        <span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$update</span>.GetUpdateApprovals<span style="color: #000000;">&#40;</span><span style="color: #800080;">$group</span><span style="color: #000000;">&#41;</span>.Count <span style="color: #FF0000;">-ne</span> <span style="color: #804000;">0</span><span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span><span style="color: #800080;">$status</span> <span style="color: pink;">=</span> <span style="color: #800080;">$update</span>.GetUpdateApprovals<span style="color: #000000;">&#40;</span><span style="color: #800080;">$group</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span>.Action<span style="color: #000000;">&#125;</span>
    <span style="color: #008080; font-weight: bold;">write-host</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$update</span>.Title <span style="color: pink;">+</span> <span style="color: #800000;">';'</span> <span style="color: pink;">+</span> <span style="color: #800080;">$group</span>.Name <span style="color: pink;">+</span> <span style="color: #800000;">';'</span> <span style="color: pink;">+</span> <span style="color: #800080;">$status</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Les deux groupes de production et de test héritent du groupe &#8221;All Computers&#8221;:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2011/10/wsus-hierarchy.jpg" rel="lightbox[1444]"><img class="aligncenter size-medium wp-image-1449" title="wsus-hierarchy" src="http://www.ldap389.info/wp-content/uploads/2011/10/wsus-hierarchy-215x300.jpg" alt="" width="215" height="300" /></a></p>
<p>Sont récupérés le statut de chaque KB pour les groupes suivants:</p>
<ul>
<li>$Allstatus: Groupe WSUS &#8220;All computers&#8221;, valeur par défaut &#8220;<em>Not Approved</em>&#8220;.</li>
<li>$statusprod: Groupe WSUS comportant vos machines de production, valeur par défaut &#8220;<em>Pending</em>&#8220;, dans ce cas hérite de &#8220;All computers&#8221;.</li>
<li>$statusqualif: Groupe WSUS avec vos machines de qualification, valeur par défaut &#8220;<em>Pending</em>&#8220;, dans ce cas hérite de &#8220;All computers&#8221;.</li>
</ul>
<p>Si <em>$statusprod</em> est différent de <em>$statusqualif</em> alors le statut de chaque groupe est donné, si aucune valeur n&#8217;est renseignée pour l&#8217;un des deux groupes (<em>Pending</em>) alors le statut du groupe <em>All computers</em> est donné.</p>
<p>Pour télécharger le script comparant le statut de validation des patchs WSUS entre deux groupes c&#8217;est ici:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2011/10/compare-wsus-groups.ps1"><img class="aligncenter size-full wp-image-83" title="tool" src="http://www.ldap389.info/wp-content/uploads/2010/03/tool1.png" alt="" width="48" height="48" /></a></p>
<p>Le script retourne un fichier .csv avec comme informations:</p>
<ul>
<li>Le Nom de la KB.</li>
<li>Le statut de validation pour le groupe de production en indiquant l&#8217;héritage de <em>All Computers</em> si besoin.</li>
<li>Le statut de validation pour le groupe de test en indiquant l&#8217;héritage de <em>All Computers</em> si besoin.</li>
<li>La classification MSRC du patch (voir cet <a href="http://msdn.microsoft.com/en-us/library/microsoft.updateservices.administration.msrcseverity(v=VS.85).aspx">article MSDN</a> pour les valeurs possibles).</li>
<li>Le bulletin de sécurité MS auquel il se rapporte.</li>
<li>Les produits auxquels cette KB s&#8217;applique.</li>
</ul>
<p>Changer les valeurs par défaut suivantes:</p>
<ul>
<li><em>$wsusserver</em>: Nom de votre serveur WSUS.</li>
<li><em>$grqualif</em>: Nom du groupe WSUS des ordinateurs de tests.</li>
<li><em>$grprod</em>: Nom du groupe WSUS des ordinateurs en production.</li>
</ul>
<p>Si vous voulez plus de scripts PowerShell sur WSUS je vous conseille ce lien du <a href="http://gallery.technet.microsoft.com/scriptcenter/site/search?f%5B0%5D.Type=RootCategory&amp;f%5B0%5D.Value=windowsupdate&amp;f%5B0%5D.Text=Windows%20Update&amp;f%5B1%5D.Type=SubCategory&amp;f%5B1%5D.Value=serverside&amp;f%5B1%5D.Text=Server-Side%20Management">technet script center</a>.</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Powershell%3A+WSUS+comparer+patchs+approuv%C3%A9s+entre+deux+groupes+http%3A%2F%2Fis.gd%2F6zOKyB" title="Post to Twitter"><img class="nothumb" src="http://www.ldap389.info/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.ldap389.info/2011/10/31/powershell-wsus-comparer-patchs-approuves-entre-deux-groupes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Migration Windows 2008R2: Avant de migrer vers Windows 8&#8230;</title>
		<link>http://www.ldap389.info/2011/09/20/migration-active-directory-2008r2-avant-de-migrer-vers-windows-8/</link>
		<comments>http://www.ldap389.info/2011/09/20/migration-active-directory-2008r2-avant-de-migrer-vers-windows-8/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 01:49:26 +0000</pubDate>
		<dc:creator>ldap389</dc:creator>
				<category><![CDATA[PRA]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<category><![CDATA[adprep]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[rodc]]></category>
		<category><![CDATA[schema]]></category>
		<category><![CDATA[vdc]]></category>

		<guid isPermaLink="false">http://www.ldap389.info/?p=1284</guid>
		<description><![CDATA[Vous pensez déjà à installer Windows 8&#8230; Mais vous n&#8217;avez toujours pas terminé votre migration vers AD 2008R2&#8230; Voici un tableau synthétisant les principales étapes de migration et problèmes de compatibilté que l&#8217;ont peut rencontrer: adprep: extension de schema Installer le premier RWDC 2008R2 (non fsmo). Migrer le PDCe vers 2008R2. Migrer le schéma master [...]]]></description>
			<content:encoded><![CDATA[<p>Vous pensez déjà à <a href="http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2011/09/14/how-to-install-windows-server-8-build-8102.aspx">installer Windows 8</a>&#8230; Mais vous n&#8217;avez toujours pas terminé votre migration vers AD 2008R2&#8230; Voici un tableau synthétisant les principales étapes de migration et problèmes de compatibilté que l&#8217;ont peut rencontrer:</p>
<p><span id="more-1284"></span></p>
<table border="1">
<tbody>
<tr>
<td width="25%">adprep: extension de schema</td>
<td width="25%">Installer le premier <em>RWDC</em> 2008R2 (non fsmo).</td>
<td width="25%">Migrer le <em>PDCe</em> vers 2008R2.</td>
<td width="25%">Migrer le <em>schéma master</em> vers 2008: <em>Filtered Attribute Set</em> et mise en place de RODC.</td>
</tr>
<tr>
<td width="25%">1\ Niveau fonctionnel du domaine minimum: 2000.Conseillé: 2003.Voir <a href="http://blogs.technet.com/b/askds/archive/2008/11/11/so-you-want-to-upgrade-to-windows-2008-domain-controllers-adprep.aspx">askDS</a></p>
<p>2\ Mise en place de RODC:<em>adprep /rodcprep:</em></p>
<p>Niveau fonctionnel du domaine  minimum: <a href="http://technet.microsoft.com/en-us/library/cc754629%28WS.10%29.aspx#bkmk_raiseforestlevel">2003</a>.</td>
<td width="25%">1\ Client NT4.0 ou CIFS ne s&#8217;authentifient plus auprès d&#8217;un <a href="http://support.microsoft.com/kb/942564/en-us">DC Windows 2008R2</a>.Symptome 4:</p>
<p>Serveur CIFS ne supportant pas le protocole SMB v2.</p>
<p>Voir exemple EMC avec Celerra en <a href="http://ecn-staging.emc.com/servlet/JiveServlet/previewBody/4724-102-2-15824/Celerra_Network_Server_5-6-46-4_RN_300-004-151_a17.pdf;jsessionid=8BE2E66E9B324A416227F054E311CC6E.node0">target inférieur à 5.6</a>:</p>
<p><em>As of version 5.6.42.5, Celerra Network Server supports Microsoft’s new SMB 2 protocol.<br />
</em></p>
<p>2\ Application s&#8217;authentifiant sur un DC 2008R2 et utilisant un algorithme de <a href="http://support.microsoft.com/kb/977321/en-us">cryptage DES ancien et désactivé par défaut.</a></p>
<p>Voir exemple pour le <a href="http://www.jonathanmedd.net/2011/06/sap-single-sign-on-issues-with-windows-server-2008-r2-domain-controllers.html">SSO sous SAP.</a></td>
<td width="25%">1\ Relations d&#8217;approbation avec un domaine NT4, toujours <a href="http://support.microsoft.com/kb/942564/en-us">la même KB</a>:Symptome 5:<br />
<em><br />
Servers that are running Windows Server 2008 R2 cannot be accessed by using a Windows NT 4.0-based domain trust.</em></p>
<p><strong>Effet Kisscool</strong>: La trust se casse lors du renouvellement de mot de passe. Voir <em>TDO passwords</em> de cet <a href="http://technet.microsoft.com/en-us/library/cc773178%28WS.10%29.aspx">article</a>.</p>
<p>2\ Mise en place RODC:Tant que le PDCe n&#8217;est pas migré sous 2008R2, un <a href="http://technet.microsoft.com/en-us/library/cc753966%28WS.10%29.aspx">RODC ne peut pas être serveur de temps pour les clients du domaine</a>.</td>
<td width="25%">1\ Le Schéma master doit être sous 2008 pour la mise en place de <a href="http://technet.microsoft.com/en-us/library/cc755310%28WS.10%29.aspx">FAS sur un RODC</a>:<em></p>
<p>Make sure that the domain controller that holds the schema operations master (also known as flexible single master operations or FSMO) role is running Windows Server 2008 when you add attributes to the RODC FAS so that the attributes are verified to not be system critical</em>.2\ Autres notes sur FAS du <a href="http://technet.microsoft.com/en-us/library/cc755310%28WS.10%29.aspx">même article</a>:</p>
<p><em> </em><em>A rogue RODC can replicate RODC FAS data from a domain controller that runs Windows Server 2003 by making a replication request.</em></p>
<p>Les partenaires de réplication de vos RODCs doivent être sous 2008. A configurer  via <em>dssite.msc</em>.</td>
</tr>
</tbody>
</table>
<p>Ok vous avez terminé votre migration sous 2008R2 et vous avez <a href="http://technet.microsoft.com/en-us/library/understanding-active-directory-functional-levels%28WS.10%29.aspx">plein de nouvelles features</a>, comme la corbeille AD avec un niveau fonctionnel de forêt sous 2008R2…</p>
<p>Et bien en termes de PRA béton: Il ne vous reste plus qu’à passer sous Windows 8&#8230; Ceci afin de pouvoir faire des <a href="http://www.windowsitpro.com/article/windowsserver8/windows-server-8-active-directory-140571">snapshots de vos V-DC</a> <img src='http://www.ldap389.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  La phrase suivante fera plaisir à mes collègues <a href="http://www.hypervisor.fr/">Hypervisor</a> et <a href="http://www.vmdude.fr/">VMDude</a>:</p>
<p><em>Microsoft is working with other virtualization vendors to make sure they include this technology in the latest version of their hypervisors as well. It’s in their interest to do so.</em></p>
<p> <img src='http://www.ldap389.info/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Migration+Windows+2008R2%3A+Avant+de+migrer+vers+Windows+8%E2%80%A6+http%3A%2F%2Fis.gd%2FfDsKKA" title="Post to Twitter"><img class="nothumb" src="http://www.ldap389.info/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.ldap389.info/2011/09/20/migration-active-directory-2008r2-avant-de-migrer-vers-windows-8/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Signer une macro Excel avec un certificat issu de votre PKI</title>
		<link>http://www.ldap389.info/2011/08/26/signer-macro-excel-vba-avec-certificat-pki-adc/</link>
		<comments>http://www.ldap389.info/2011/08/26/signer-macro-excel-vba-avec-certificat-pki-adc/#comments</comments>
		<pubDate>Fri, 26 Aug 2011 18:22:10 +0000</pubDate>
		<dc:creator>ldap389</dc:creator>
				<category><![CDATA[gpo]]></category>
		<category><![CDATA[Public Key Infrastructure]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[adm]]></category>
		<category><![CDATA[pki]]></category>

		<guid isPermaLink="false">http://www.ldap389.info/?p=1240</guid>
		<description><![CDATA[Cet article décrit comment signer un projet VBA sous Excel avec un certificat issu de votre PKI ADCS. Cette méthode peut s&#8217;appliquer pour n&#8217;importe quel projet VBA de la suite Office. Vous pouvez lire cette KB et cet article MSDN pour une introduction sur comment signer des projets VBA. Nous pouvons lire dans les deux [...]]]></description>
			<content:encoded><![CDATA[<p>Cet article décrit comment signer un projet VBA sous Excel avec un certificat issu de votre PKI ADCS. Cette méthode peut s&#8217;appliquer pour n&#8217;importe quel projet VBA de la suite Office. Vous pouvez lire cette <a href="http://support.microsoft.com/kb/206637/en-us">KB</a> et cet article <a href="http://msdn.microsoft.com/en-us/library/aa141471(v=office.10).aspx">MSDN</a> pour une introduction sur comment signer des projets VBA.<br />
<span id="more-1240"></span></p>
<p>Nous pouvons lire dans les deux articles mentionnés précédemment que le modèle de type &#8221;<a href="http://technet.microsoft.com/en-us/library/cc786499(WS.10).aspx">code signing</a>&#8221; est utilisé pour signer des macros. Nous allons donc <a href="http://technet.microsoft.com/en-us/library/cc740077(WS.10).aspx">créer un nouveau modèle</a> de certificat nommé &#8220;<em>Excel</em>&#8221; à partir du modèle &#8220;<em>code signing</em>&#8220;. Ce modèle aura les caractéristiques suivantes:</p>
<ul>
<li>L&#8217;<a href="http://technet.microsoft.com/en-us/library/cc778954(WS.10).aspx">autoenrollment</a> est configuré pour le groupe <em>ldap389-excel-dev,</em> ce groupe contient les utilisateurs autorisés à signer des projets VBA, à savoir vos dévelopeurs, dans notre exemple il contient l&#8217;utilisateur <em>ldap389-dev</em>.</li>
<li>Clef privée: 2048 bits non exportable.</li>
<li>Validité du certificat: 1 an.</li>
</ul>
<p><a href="http://www.ldap389.info/wp-content/uploads/2011/08/code-signing-vba-certificate-template1.jpg" rel="lightbox[1240]"><img class="aligncenter size-medium wp-image-1244" title="code-signing-vba-certificate-template" src="http://www.ldap389.info/wp-content/uploads/2011/08/code-signing-vba-certificate-template1-300x171.jpg" alt="" width="300" height="171" /></a></p>
<p>Une fois le modèle de certificats &#8220;Excel&#8221; configuré, le certificat sera automatiquement installé par <em>autoenrollment</em> dans le magasin de certificats de notre utilisateur <em>ldap389-dev</em> faisant partie du groupe <em>ldap389-excel-dev</em>:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2011/08/certificate-store.jpg" rel="lightbox[1240]"><img class="aligncenter size-medium wp-image-1245" title="certificate-store" src="http://www.ldap389.info/wp-content/uploads/2011/08/certificate-store-300x84.jpg" alt="" width="300" height="84" /></a></p>
<p>Il est conseillé de verrouiller par mot de passe son projet VBA avant de le signer, sous l&#8217;éditeur Visual Basic: click droit sur le projet, selectionner &#8220;propriétés&#8221; puis onglet &#8220;protection&#8221;. Pour signer son projet VBA: séléctionner son projet puis faire &#8220;outils\signature éléctronique&#8221;, cliquer sur &#8220;choisir&#8221;, le certificat présent dans son magasin local lui est alors proposé.</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2011/08/vba_lock_and_sign.jpg" rel="lightbox[1240]"><img class="aligncenter size-medium wp-image-1247" title="vba_lock_and_sign" src="http://www.ldap389.info/wp-content/uploads/2011/08/vba_lock_and_sign-300x264.jpg" alt="" width="300" height="264" /></a></p>
<p>Le projet est maintenant protégé et signé pour la période de validité du certificat que vous avez configuré dans votre modèle, dans notre cas pour le modèle &#8220;<em>Excel</em>&#8221; 1 an. Il faudra ressigner la macro et la redéployer avant l&#8217;expiration du certificat (dans notre cas le 16/08/2012).</p>
<p>A moins que vous n&#8217;utilisez un serveur de <em>TimeStamp</em> conformément à la <a href="http://www.ietf.org/rfc/rfc3161.txt">RFC 3161</a>, ceci afin de dater la macro lors de sa signature. Le développeur devra éditer la clef <em>HKEY_CURRENT_USER\Software\Microsoft\VBA\Security</em> comme est indiqué dans le chapitre <em>&#8220;Office files: enable time-stamping&#8221;</em> de ce <a href="http://surewebconsulting.com/code-signing-microsoft-office-files-with-vba-macros/">post</a>. L&#8217;édition de cette clef peut être déployée via GPO pour le groupe  <em>ldap389-excel-dev. </em>Dans notre cas nous utiliserons les valeurs de registre suivantes:</p>
<ul>
<li>TimeStampURL (REG_SZ): http://timestamp.verisign.com/scripts/timstamp.dll.</li>
<li>TimeStampRetryCount (REG_DWORD): 2.</li>
<li>TimeStampRetryDelay (REG_DWORD): 2.</li>
</ul>
<p>Une fois que vous avez signé les différents projets VBA qui ne l&#8217;étaient pas vous pouvez forcer le niveau de sécurité de Excel via GPO pour toutes les versions déployées dans votre entreprise, pour cela il vous faut utiliser les &#8220;Administrative Templates&#8221; de chaque version de Office:</p>
<ul>
<li><a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=9035">Office 2003 SP3</a> Administrative Template Files (ADM).</li>
<li><a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=22666">Office 2007</a> Administrative Template Files (ADM,ADMX/ADML).</li>
<li><a href="http://www.microsoft.com/download/en/details.aspx?id=18968">Office 2010</a> Administrative Template Files (ADM,ADMX/ADML).</li>
</ul>
<p>Vous pouvez créer une GPO qui empêche l’exécution des macros non signées pour toutes le versions de Excel des suites Office mentionnées ci dessus:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2011/08/gpo_macro_security.jpg" rel="lightbox[1240]"><img class="aligncenter size-medium wp-image-1248" title="gpo_macro_security" src="http://www.ldap389.info/wp-content/uploads/2011/08/gpo_macro_security-300x201.jpg" alt="" width="300" height="201" /></a></p>
<p>Les paramètres ci dessus sont les paramètres par défaut de Excel, mais il est toujours mieux de les forcer par GPO, au cas où ils seraient modifiés..</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Signer+une+macro+Excel+avec+un+certificat+issu+de+votre+PKI+http%3A%2F%2Fis.gd%2Fawhw02" title="Post to Twitter"><img class="nothumb" src="http://www.ldap389.info/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.ldap389.info/2011/08/26/signer-macro-excel-vba-avec-certificat-pki-adc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Powershell: WSUS réaliser un inventaire de conformité</title>
		<link>http://www.ldap389.info/2011/05/22/powershell-wsus-inventaire-client-version-os/</link>
		<comments>http://www.ldap389.info/2011/05/22/powershell-wsus-inventaire-client-version-os/#comments</comments>
		<pubDate>Sun, 22 May 2011 18:21:35 +0000</pubDate>
		<dc:creator>ldap389</dc:creator>
				<category><![CDATA[scripts]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[wsus]]></category>

		<guid isPermaLink="false">http://www.ldap389.info/?p=1150</guid>
		<description><![CDATA[Dans cet article nous allons réaliser un inventaire de conformité WSUS des ordinateurs de votre domaine. Les machines qui peuvent recevoir des patchs de sécurité Microsoft doivent avoir une version d&#8217;OS et de Service Pack minimale, ci-dessous un tableau récapitulatif des versions de Windows supportées: Nous allons considérer que le SP1 de Windows Vista n&#8217;est plus [...]]]></description>
			<content:encoded><![CDATA[<p>Dans cet article nous allons réaliser un inventaire de conformité WSUS des ordinateurs de votre domaine. Les machines qui peuvent recevoir des patchs de sécurité Microsoft doivent avoir une version d&#8217;OS et de Service Pack minimale, ci-dessous un tableau récapitulatif des versions de Windows supportées:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2011/05/os-supported2.jpg" rel="lightbox[1150]"><img class="aligncenter size-medium wp-image-1159" title="os-supported" src="http://www.ldap389.info/wp-content/uploads/2011/05/os-supported2-300x75.jpg" alt="" width="300" height="75" /></a></p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2011/05/os-supported.jpg" rel="lightbox[1150]"></a><span id="more-1150"></span>Nous allons considérer que le SP1 de Windows Vista n&#8217;est plus supporté, car le support MS se <a href="http://blogs.technet.com/b/askds/archive/2011/05/18/vista-sp1-end-of-support-reminder.aspx">termine le  12 juillet 2011</a>. Dans un premier temps nous allons donc inventorier avec Powershell les machines qui ne peuvent plus recevoir des patchs de sécurité du fait de leur obsolescence, ceci en s&#8217;inspirant de cet article de <a href="http://blogs.technet.com/b/askds/archive/2010/02/04/inventorying-computers-with-ad-powershell.aspx">AskDS</a>.</p>

<div class="wp_syntax"><div class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #800080;">$base</span> <span style="color: pink;">=</span> <span style="color: #800000;">'OU=Servers,DC=ldap389,DC=info'</span>
<span style="color: #800080;">$d</span> <span style="color: pink;">=</span> <span style="color: #000000;">&#91;</span>DateTime<span style="color: #000000;">&#93;</span>::Today.AddDays<span style="color: #000000;">&#40;</span><span style="color: pink;">-</span><span style="color: #804000;">30</span><span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #800080;">$computers</span> <span style="color: pink;">=</span> Get<span style="color: pink;">-</span>ADComputer <span style="color: pink;">-</span><span style="color: #0000FF;">Filter</span> <span style="color: #800000;">'PasswordLastSet -ge $d'</span> <span style="color: pink;">-</span>Searchbase <span style="color: #800080;">$base</span> <span style="color: pink;">-</span>Properties OperatingSystemVersion<span style="color: pink;">,</span>OperatingSystemServicePack<span style="color: pink;">,</span>dNSHostName<span style="color: pink;">,</span>OperatingSystem
&nbsp;
<span style="color: #0000FF;">foreach</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$computer</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$computers</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
&nbsp;
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$computer</span>.OperatingSystemVersion <span style="color: #FF0000;">-lt</span> <span style="color: #800000;">&quot;5.1&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #FF0000;">-or</span> <span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$computer</span>.OperatingSystemVersion <span style="color: #FF0000;">-like</span> <span style="color: #800000;">&quot;5.1*&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #FF0000;">-and</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$computer</span>.OperatingSystemServicePack <span style="color: #FF0000;">-ne</span> <span style="color: #800000;">&quot;Service Pack 3&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #FF0000;">-or</span> <span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$computer</span>.OperatingSystemVersion <span style="color: #FF0000;">-like</span> <span style="color: #800000;">&quot;5.2*&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #FF0000;">-and</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$computer</span>.OperatingSystemServicePack <span style="color: #FF0000;">-ne</span> <span style="color: #800000;">&quot;Service Pack 2&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #FF0000;">-or</span> <span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$computer</span>.OperatingSystemVersion <span style="color: #FF0000;">-like</span> <span style="color: #800000;">&quot;6.0*&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #FF0000;">-and</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$computer</span>.OperatingSystemServicePack <span style="color: #FF0000;">-ne</span> <span style="color: #800000;">&quot;Service Pack 2&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span><span style="color: #800080;">$computer</span>.Name <span style="color: pink;">+</span> <span style="color: #800000;">';'</span> <span style="color: pink;">+</span> <span style="color: #800080;">$computer</span>.OperatingSystem <span style="color: pink;">+</span> <span style="color: #800000;">';'</span> <span style="color: pink;">+</span> <span style="color: #800080;">$computer</span>.OperatingSystemServicePack  <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Out<span style="color: #FF0000;">-file</span></span> NOK<span style="color: pink;">-</span>OSVersion.csv <span style="color: #008080; font-style: italic;">-append</span><span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Nous cherchons donc les machines actives, i.e. qui ont renouvelé leur mot de passe avec un DC au cours des 30 derniers jours, situées dans l&#8217;OU <em>&#8220;Servers&#8221;</em> et dont la version d&#8217;OS et de Service Pack n&#8217;est plus supportée par Microsoft. Ces machines listés dans le fichier <em>NOK-OSVersion.csv</em> ne peuvent plus recevoir des mises à jour de sécurité via WSUS, il faudra les mettre à jour.</p>
<p>Nous allons dans un second temps chercher les machines qui sont éligibles à recevoir des mises à jour mais qui ne remontent pas dans votre serveur WSUS. Il existe alors un problème au niveau du client WSUS de la machine où celui ci <a href="http://support.microsoft.com/kb/328010/en-us">n&#8217;est pas configuré</a> et elles téléchargent directement les patchs de sécurité sur Internet, ce qui n&#8217;est pas conseillé dans un environnement d&#8217;entreprise, car vous n&#8217;avez aucun contrôle quant à leur déploiement.</p>
<p>A partir de WSUS 3.0 SP2 il est possible d&#8217;utiliser PowerShell pour gérer vos mises à jour comme nous montre ce tutoriel de <a href="http://boeprox.wordpress.com/2010/10/10/manage-wsus-with-powershell/">Boe Prox</a>, ceci à l&#8217;aide du Namespace <em><a href="http://msdn.microsoft.com/en-us/library/microsoft.updateservices.administration%28v=VS.85%29.aspx">Microsoft.UpdateServices.Administration</a>. </em>Nous allons donc lister toutes les machines contenues dans nos groupes WSUS (sauf le groupe <em>All Computers</em> qui est un groupe qui contient au fait tous les groupes) et les comparer aux ordinateurs issus de notre requête faite sur l&#8217;annuaire Active Directory (<em>$computer</em>):</p>

<div class="wp_syntax"><div class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #800080;">$wsusserver</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;WSUS-server&quot;</span>
&nbsp;
<span style="color: #000000;">&#91;</span>void<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>reflection.assembly<span style="color: #000000;">&#93;</span>::<span style="color: #800000;">LoadWithPartialName</span><span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;Microsoft.UpdateServices.Administration&quot;</span><span style="color: #000000;">&#41;</span>
<span style="color: #800080;">$wsus</span> <span style="color: pink;">=</span> <span style="color: #000000;">&#91;</span>Microsoft.UpdateServices.Administration.AdminProxy<span style="color: #000000;">&#93;</span>::getUpdateServer<span style="color: #000000;">&#40;</span><span style="color: #800080;">$wsusserver</span><span style="color: pink;">,</span><span style="color: #800080;">$False</span><span style="color: #000000;">&#41;</span>
<span style="color: #800080;">$groups</span> <span style="color: pink;">=</span> <span style="color: #800080;">$wsus</span>.GetComputerTargetGroups<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">foreach</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$group</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$groups</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$group</span>.Name <span style="color: #FF0000;">-ne</span> <span style="color: #800000;">&quot;All Computers&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
<span style="color: #000000;">&#40;</span><span style="color: #800080;">$wsus</span>.getcomputertargetgroup<span style="color: #000000;">&#40;</span><span style="color: #800080;">$group</span>.Id<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>.GetComputerTargets<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: pink;">|%</span><span style="color: #000000;">&#123;</span><span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #000080;">$_</span>.FullDomainName <span style="color: #FF0000;">-eq</span> <span style="color: #800080;">$computer</span>.dNSHostName<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span> ....<span style="color: #000000;">&#125;</span><span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Le FQDN de la machine est la clef commune entre l&#8217;objet ordinateur sous WSUS (attribut <em>FullDomainName</em>) et celui sous Active Directory (attribut <em>DNSHostName</em>). Les objets dont le matching est trouvé seront inscrits dans un fichier <em>$file </em>portant le nom du groupe WSUS auxquels ils appartiennent. Les ordinateurs pour lesquels il n&#8217;y a pas de matching, qui donc ne sont pas remontés sur votre serveur WSUS, sont indiqués dans un fichier <em>NOK-wsus.csv. </em>Pour ces derniers il faudra donc voir si vous les avez configurés pour pointer sur votre serveur WSUS, ou si le <a href="http://www.wsuswiki.com/ClientFAQ">client WSUS a un problème</a>.</p>
<p>Pour télécharger le script complet c&#8217;est ici:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2011/05/check-wsus-clients.ps1"><img class="aligncenter size-full wp-image-83" title="tool" src="http://www.ldap389.info/wp-content/uploads/2010/03/tool1.png" alt="" width="48" height="48" /></a></p>
<p>Il vous faudra modifier les variables suivantes:</p>
<ul>
<li><em>$wsusserver</em>: Nom de votre serveur WSUS.</li>
<li><em>$base</em>: DistingushedName de la base de vôtre recherche sur l&#8217;annuaire AD.</li>
</ul>
<p>&nbsp;</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Powershell%3A+WSUS+r%C3%A9aliser+un+inventaire+de+conformit%C3%A9+http%3A%2F%2Fis.gd%2FQ7XG7y" title="Post to Twitter"><img class="nothumb" src="http://www.ldap389.info/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.ldap389.info/2011/05/22/powershell-wsus-inventaire-client-version-os/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Powershell: Générer un certificat SAN pour IIS 7 avec un CA Entreprise</title>
		<link>http://www.ldap389.info/2011/04/19/powershell-generer-certificat-san-iis-7-ca-entreprise-pki/</link>
		<comments>http://www.ldap389.info/2011/04/19/powershell-generer-certificat-san-iis-7-ca-entreprise-pki/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 22:52:23 +0000</pubDate>
		<dc:creator>ldap389</dc:creator>
				<category><![CDATA[Public Key Infrastructure]]></category>
		<category><![CDATA[scripts]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[certutil]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[pki]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[winrm]]></category>

		<guid isPermaLink="false">http://www.ldap389.info/?p=1115</guid>
		<description><![CDATA[Nous allons voir dans ce post comment générer automatiquement un certificat SAN pour un serveur Web IIS 7.0 à partir d&#8217;une PKI d&#8217;entreprise, ce certificat va nous permettre d&#8217;avoir plusieurs URL en HTTPS sur un même serveur Web. Pour y parvenir nous allons notamment utiliser le PSRemoting apporté par WinRM ainsi que les CmdLets IIS. Nous [...]]]></description>
			<content:encoded><![CDATA[<p>Nous allons voir dans ce post comment générer automatiquement un <a href="http://www.delantek.com/san.html">certificat SAN</a> pour un serveur Web IIS 7.0 à partir d&#8217;une PKI d&#8217;entreprise, ce certificat va nous permettre d&#8217;avoir plusieurs URL en HTTPS sur un même serveur Web. Pour y parvenir nous allons notamment utiliser le <a href="http://technet.microsoft.com/fr-fr/library/dd819498.aspx">PSRemoting</a> apporté par WinRM ainsi que les <a href="http://technet.microsoft.com/en-us/library/ee790599.aspx">CmdLets IIS</a>.</p>
<p>Nous lançons notre script à partir d&#8217;une console d&#8217;administration et devons utiliser le PSRemoting pour créer le fichier <a href="http://en.wikipedia.org/wiki/Certificate_signing_request">CSR</a> sur le serveur IIS avant de l&#8217;envoyer à l&#8217;autorité de certification, puis une fois le certificat émis le récupérer dans le magasin local du serveur Web et configurer la partie IIS.<br />
<span id="more-1115"></span><br />
Tout d&#8217;abord voyons le modèle de certificat utilisé, il est nommé dans notre cas <em>2008-Webserver</em>:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2011/04/certtemplate1.jpg" rel="lightbox[1115]"><img class="aligncenter size-medium wp-image-1119" title="certtemplate" src="http://www.ldap389.info/wp-content/uploads/2011/04/certtemplate1-300x129.jpg" alt="" width="300" height="129" /></a></p>
<p>Une fois demandé le certificat devra être approuvé par le <em>CA Manager</em>, par ailleurs les informations du certificat seront contenues dans la requête (CSR). La clef privée à une longueur minimale de 2048 bits et n&#8217;est pas exportable. Le CSR sera généré avec <em><a href="http://technet.microsoft.com/fr-fr/library/cc736326(WS.10).aspx">certreq.exe</a></em> à partir d&#8217;un fichier <em>RequestPolicy.inf. </em>Dans ce fichier, nous déclarons le <em>Subject Alternate Name</em> de notre certificat (i.e. nos multiples URL), à des endroits bien précis du fichier <em>RequestPolicy.inf</em>:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2011/04/saninf.jpg" rel="lightbox[1115]"><img class="aligncenter size-medium wp-image-1118" title="saninf" src="http://www.ldap389.info/wp-content/uploads/2011/04/saninf-300x176.jpg" alt="" width="300" height="176" /></a></p>
<p>Comme l&#8217;indique la capture d&#8217;écran ci-dessus de cet article <a href="http://technet.microsoft.com/en-us/library/ff625722(WS.10).aspx#BKMK_Security">technet</a>, les SAN seront déclarés dans la section <em>Extension</em> du fichier. Attention sur un CA d&#8217;entreprise ne jamais permettre l&#8217;obtention de certificats SAN en éditant la section <em>RequestAttributes</em> du fichier <em>RequestPolicy.inf</em>, ceci pour des raisons de sécurité, cela n&#8217;est valable que pour un CA en standalone.</p>
<p>Voyons donc à quoi va ressembler notre fichier <em>RequestPolicy.inf:</em></p>
<blockquote><p>[Version]<br />
Signature=&#8221;$Windows NT$&#8221;</p>
<p>[NewRequest]<br />
Exportable = FALSE<br />
KeyLength = 204<br />
RequestType = CMC<br />
[RequestAttributes]<br />
CertificateTemplate= 2008-WEBSERVER</p>
<p>[Extensions]<br />
2.5.29.17 = &#8220;{text}&#8221;<br />
_continue_ = &#8220;dns=webURL1.ldap389.info&amp;&#8221;<br />
_continue_ = &#8220;dns=webURL2.ldap389.fr&amp;&#8221;<br />
_continue_ = &#8220;dns=webURL3.ldap389.info&amp;&#8221;</p></blockquote>
<p>Pour lancer la génération du CSR sur le serveur IIS ($webserver) avec la commande <em>certreq -new, </em>ceci à partir de notre console nous utilisons le CmdLet <a href="http://technet.microsoft.com/fr-fr/library/dd347578.aspx">Invoke-Command</a>. A propos du PSRemoting et WinRM je vous conseille la lecture des séries d&#8217;articles de <a href="http://www.ravichaganti.com/blog/?p=1305">Ravikanth Chaganti</a>.</p>
<p>Le fichier CSR ($iisreq) doit ensuite être soumis au CA ($CAPath):</p>

<div class="wp_syntax"><div class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #800080;">$array</span> <span style="color: pink;">=</span> <span style="color: pink;">@</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$CAPath</span><span style="color: pink;">,</span><span style="color: #800080;">$iisreq</span><span style="color: #000000;">&#41;</span>
<span style="color: #800080;">$Requestforsigning</span> <span style="color: pink;">=</span> invoke<span style="color: pink;">-</span>command <span style="color: #800080;">$webserver</span> <span style="color: #000000;">&#123;</span><span style="color: #0000FF;">param</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$argarray</span><span style="color: #000000;">&#41;</span>;certreq.exe <span style="color: pink;">-</span>config <span style="color: #800080;">$argarray</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span> <span style="color: pink;">-</span>submit <span style="color: #800080;">$argarray</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">1</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#125;</span> <span style="color: #008080; font-style: italic;">-ArgumentList</span> <span style="color: #800080;">$array</span><span style="color: pink;">,</span><span style="color: #800080;">$null</span>
<span style="color: #800080;">$reqt</span> <span style="color: pink;">=</span> <span style="color: #800080;">$Requestforsigning</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span>.replace<span style="color: #000000;">&#40;</span><span style="color: #800000;">'RequestId: '</span><span style="color: pink;">,</span><span style="color: #800000;">''</span><span style="color: #000000;">&#41;</span></pre></div></div>

<p>L&#8217;ID de la requête est alors récupéré dans la variable <em>$reqt</em>. Il devra ensuite être validé sur la console d&#8217;administration par un CA Manager (vous <img src='http://www.ldap389.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ), à l&#8217;aide de la commande <em>certutil -resubmit $reqt.</em></p>
<p>Reste ensuite à récupérer le certificat sur le serveur IIS et à l&#8217;intégrer dans le magasin local de l&#8217;ordinateur, toujours avec le CmdLet Invoke-Command:</p>

<div class="wp_syntax"><div class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #800080;">$array</span> <span style="color: pink;">=</span> <span style="color: pink;">@</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$reqt</span><span style="color: pink;">,</span><span style="color: #800080;">$iiscrt</span><span style="color: pink;">,</span><span style="color: #800080;">$CAPath</span><span style="color: #000000;">&#41;</span>
invoke<span style="color: pink;">-</span>command <span style="color: #800080;">$webserver</span> <span style="color: pink;">-</span>scriptblock <span style="color: #000000;">&#123;</span>
 <span style="color: #0000FF;">param</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$argarray</span><span style="color: #000000;">&#41;</span>
 certreq <span style="color: pink;">-</span>config <span style="color: #800080;">$argarray</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">2</span><span style="color: #000000;">&#93;</span> <span style="color: pink;">-</span>retrieve <span style="color: #800080;">$argarray</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span> <span style="color: #800080;">$argarray</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">1</span><span style="color: #000000;">&#93;</span>
 certreq <span style="color: pink;">-</span>accept <span style="color: #800080;">$argarray</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">1</span><span style="color: #000000;">&#93;</span>
<span style="color: #000000;">&#125;</span> <span style="color: #008080; font-style: italic;">-ArgumentList</span> <span style="color: #800080;">$array</span><span style="color: pink;">,</span>$null</pre></div></div>

<p>Notre certificat SAN est alors importé dans le magasin local de notre serveur IIS:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2011/04/store.jpg" rel="lightbox[1115]"><img class="aligncenter size-medium wp-image-1124" title="store" src="http://www.ldap389.info/wp-content/uploads/2011/04/store-300x155.jpg" alt="" width="300" height="155" /></a></p>
<p>Ne reste plus qu&#8217;à configurer IIS, pour cela nous allons utiliser les <em><a href="http://technet.microsoft.com/en-us/library/ee790599.aspx">WebAdministration</a></em> CmdLets qui sont installées sur le serveur et suivre les instructions données dans ce <a href="http://stam.blogs.com/8bits/2010/09/how-to-create-a-self-signed-ssl-certificate-with-powershell.html">post</a>. Il nous faut donc tout d&#8217;abord récupérer le <a href="http://ig2600.blogspot.com/2010/01/how-do-you-thumbprint-certificate.html">thumbprint</a> du certificat à partir de notre console avec la commande <em><a href="http://blogs.technet.com/b/pki/archive/2008/10/03/disposition-values-for-certutil-view-restrict-and-some-creative-samples.aspx">certutil -view</a></em>:</p>

<div class="wp_syntax"><div class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #800080;">$thumbprint</span> <span style="color: pink;">=</span> <span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span>certutil <span style="color: #008080; font-style: italic;">-view</span> <span style="color: pink;">-</span>restrict <span style="color: #800000;">&quot;RequestID=$reqt&quot;</span> <span style="color: pink;">-</span>out CertificateHash csv<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">1</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span>.replace<span style="color: #000000;">&#40;</span><span style="color: #800000;">' '</span><span style="color: pink;">,</span><span style="color: #800000;">''</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>.replace<span style="color: #000000;">&#40;</span><span style="color: #800000;">'&quot;'</span><span style="color: pink;">,</span><span style="color: #800000;">''</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>.ToUpper<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span></pre></div></div>

<p>Puis lancer les commandes suivantes sur notre serveur IIS:</p>

<div class="wp_syntax"><div class="code"><pre class="powershell" style="font-family:monospace;">import<span style="color: pink;">-</span>module WebAdministration
New<span style="color: pink;">-</span>WebBinding <span style="color: #008080; font-style: italic;">-Name</span> <span style="color: #800000;">&quot;Default Web Site&quot;</span> <span style="color: pink;">-</span>IP <span style="color: #800000;">&quot;*&quot;</span> <span style="color: pink;">-</span>Port <span style="color: #804000;">443</span> <span style="color: pink;">-</span>Protocol https
<span style="color: #008080; font-weight: bold;">cd</span> IIS:\SslBindings
<span style="color: #008080; font-weight: bold;">Get-Item</span> cert:\LocalMachine\MY\<span style="color: #800080;">$thumbprint</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">new-item</span> 0.0.0.0<span style="color: pink;">!</span><span style="color: #804000;">443</span></pre></div></div>

<p>En utilisant toujours Invoke-Command (alias: icm). Voilà, votre IIS est configuré et vous pouvez appeler les URL désirées en HTTPS:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2011/04/iis.jpg" rel="lightbox[1115]"><img class="aligncenter size-medium wp-image-1125" title="iis" src="http://www.ldap389.info/wp-content/uploads/2011/04/iis-300x135.jpg" alt="" width="300" height="135" /></a></p>
<p>Pour télécharger le script complet c&#8217;est ici:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2011/04/IIS7San.ps1"><img class="aligncenter size-full wp-image-83" title="tool" src="http://www.ldap389.info/wp-content/uploads/2010/03/tool1.png" alt="" width="48" height="48" /></a></p>
<p>Ne vous reste plus qu&#8217;à changer les variables suivantes:</p>
<ul>
<li>$CAPath: Chemin de votre CA, sous la forme %FQDN_Serveur_CA%\%Nom_CA%</li>
<li>$webURL1, $webURL2, $webURL3: Les URLs à mettre dans le SAN, attention adapter le script pour un nombre d&#8217;URLs différent.</li>
<li>$CertTemplate: Nom du modèle de certificat utilisé.</li>
<li>$webserver: Nom du serveur IIS 7.</li>
</ul>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Powershell%3A+G%C3%A9n%C3%A9rer+un+certificat+SAN+pour+IIS+7+avec+un+CA+Entreprise+http%3A%2F%2Fis.gd%2FVesmga" title="Post to Twitter"><img class="nothumb" src="http://www.ldap389.info/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.ldap389.info/2011/04/19/powershell-generer-certificat-san-iis-7-ca-entreprise-pki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Powershell: Editer permissions sur une GPO</title>
		<link>http://www.ldap389.info/2010/11/26/powershell-editer-permission-gpo-sddl/</link>
		<comments>http://www.ldap389.info/2010/11/26/powershell-editer-permission-gpo-sddl/#comments</comments>
		<pubDate>Fri, 26 Nov 2010 00:54:50 +0000</pubDate>
		<dc:creator>ldap389</dc:creator>
				<category><![CDATA[gpo]]></category>
		<category><![CDATA[scripts]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[gpmc]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[sddl]]></category>
		<category><![CDATA[sysvol]]></category>

		<guid isPermaLink="false">http://www.ldap389.info/?p=812</guid>
		<description><![CDATA[Afin de changer les permissions sur une GPO vous pouvez utiliser le CmdLet Set-GPPermissions disponible avec les RSAT (import-module grouppolicy). Ce CmdLet ne permet pas de mettre des permissions du type &#8220;deny&#8221; ou de remplacer directement des permissions. Nous allons voir comment remplacer des permissions à l&#8217;aide du Security Descriptor Definition Language qui est utilisé [...]]]></description>
			<content:encoded><![CDATA[<p>Afin de changer les permissions sur une GPO vous pouvez utiliser le CmdLet <a href="http://technet.microsoft.com/en-us/library/ee461038.aspx">Set-GPPermissions</a> disponible avec les RSAT (<strong>import-module grouppolicy</strong>). Ce CmdLet ne permet pas de mettre des permissions du type &#8220;deny&#8221; ou de remplacer directement des permissions. Nous allons voir comment remplacer des permissions à l&#8217;aide du <a href="http://msdn.microsoft.com/en-us/library/aa379567(VS.85).aspx">Security Descriptor Definition Language</a> qui est utilisé pour éditer les permissions de tous types d&#8217;objets (système de fichiers, objets AD&#8230;). Pour mieux appréhender ce langage et un outil pour lire le contenu d&#8217;une chaine SDDL je vous conseille cet <a href="http://blogs.dirteam.com/blogs/jorge/archive/2008/03/26/parsing-sddl-strings.aspx">article</a>.</p>
<p>L&#8217;opération de remplacement de permission sur une GPO peut servir quand un administrateur d&#8217;une OU créé une GPO, il en est alors propriétaire et ne donne pas les droits en contrôle total au groupe d&#8217;administration auquel il appartient. Sur notre domaine composé de deux sites, un par OU, nous avons deux types de GPOs:<span id="more-812"></span></p>
<ul>
<li>Les GPOs nommés &#8220;GLOBAL-*&#8221; créés par les administrateurs du domaine, et communes au SITE1 et au SITE2, elles ne sont pas modifiables par les administrateurs de site:</li>
</ul>
<p style="text-align: center;"><a href="http://www.ldap389.info/wp-content/uploads/2010/11/GLOBALGPO.jpg" rel="lightbox[812]"><img class="size-medium wp-image-818  aligncenter" title="DOMAIN_GPO" src="http://www.ldap389.info/wp-content/uploads/2010/11/GLOBALGPO-300x120.jpg" alt="" width="300" height="120" /></a></p>
<ul>
<li>Les GPOs nommés &#8220;SITEx-*&#8221; créés par les administrateurs de l&#8217;OU SITE1 ou SITE2, lors de leur création par l&#8217;administrateur de site c&#8217;est le compte utilisateur de ce dernier (par ex: <em>Site1-UserAdmin1</em> pour le SITE1) qui a les permissions sur la GPO:</li>
</ul>
<p style="text-align: center;"><a href="http://www.ldap389.info/wp-content/uploads/2010/11/SITE1GPO-NOK.jpg" rel="lightbox[812]"><img class="size-medium wp-image-819    aligncenter" title="OU-GPO-NOK" src="http://www.ldap389.info/wp-content/uploads/2010/11/SITE1GPO-NOK-300x130.jpg" alt="" width="300" height="130" /></a></p>
<p>Il faut alors remplacer les permissions de l&#8217;utilisateur <em>Site1-UserAdmin1</em> avec le groupe<em> SITE1-ADM</em> pour que tous les administrateurs puissent modifier la GPO:</p>
<p style="text-align: center;"><a href="http://www.ldap389.info/wp-content/uploads/2010/11/SITE1GPO-OK.jpg" rel="lightbox[812]"><img class="size-medium wp-image-820    aligncenter" title="SITE-GPO-OK" src="http://www.ldap389.info/wp-content/uploads/2010/11/SITE1GPO-OK-300x126.jpg" alt="" width="300" height="126" /></a></p>
<p>Le pack PowerShell utilisé sera Active Roles Management Shell for AD de <a href="http://www.quest.com/powershell/activeroles-server.aspx">Quest</a>, le but du script est de remplacer les permissions des GPOs nommés &#8220;SITE1-*&#8221; si le groupe<em> SITE1-ADM</em> n&#8217;a pas de droits d&#8217;administration sur ces dernières (critère utilisé: peut effacer la GPO).</p>
<p>Une fois les GPOs nommés &#8220;SITE1-*&#8221; trouvées nous utilisons le CmdLet <a href="http://wiki.powergui.org/index.php/Get-QADPermission">Get-QADPermission</a> pour lire les permissions sur celles ci. Si le groupe <em>SITE1-ADM</em> n&#8217;a pas de droits d&#8217;administration sur une GPO, alors nous cherchons le compte ($AdminAccount) qui a les droits &#8220;effacer&#8221; sur celle ci à l&#8217;aide de la commande:</p>

<div class="wp_syntax"><div class="code"><pre class="powershell" style="font-family:monospace;">Get<span style="color: pink;">-</span>QADPermission <span style="color: #800080;">$gpo</span>  <span style="color: pink;">|</span>  <span style="color: #008080; font-weight: bold;">foreach-object</span> <span style="color: #000000;">&#123;</span><span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span> <span style="color: #000080;">$_</span>.AccountName <span style="color: #FF0000;">-like</span> <span style="color: #800080;">$domain</span> <span style="color: pink;">+</span> <span style="color: #800000;">'\*'</span> <span style="color: #000000;">&#41;</span> <span style="color: #FF0000;">-and</span> <span style="color: #000000;">&#40;</span><span style="color: #000080;">$_</span>.Rights <span style="color: #FF0000;">-like</span> <span style="color: #800000;">'*delete*'</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span><span style="color: #800080;">$AdminAccount</span> <span style="color: pink;">=</span> <span style="color: #000080;">$_</span>.AccountName<span style="color: #000000;">&#125;</span><span style="color: #000000;">&#125;</span></pre></div></div>

<p>Une fois le compte $AdminAccount trouvé il nous faut récupérer son SID ($oldsid) et exporter les permissions de la GPO au format SDDL, ceci grâce au CmdLet <a href="http://wiki.powergui.org/index.php/Get-QADObjectSecurity">Get-QADObjectSecurity</a>. Puis il faut remplacer dans la chaîne SDDL le SID du compte administrateur<em> Site1-UserAdmin1</em> ($oldsid) par le SID du groupe d&#8217;administration <em>SITE1-ADM</em> ($newsid), enfin il nous faut injecter les nouvelles permissions dans la GPO grâce aux commandes suivantes, trouvées sur un post de <a href="http://bsonposh.com/archives/505">BSonPoSH</a>:</p>

<div class="wp_syntax"><div class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #800080;">$sddlgpc2</span> <span style="color: pink;">=</span> <span style="color: #800080;">$sddlgpc</span>.replace<span style="color: #000000;">&#40;</span><span style="color: #800080;">$oldsid</span><span style="color: pink;">,</span><span style="color: #800080;">$newsid</span><span style="color: #000000;">&#41;</span>
<span style="color: #800080;">$DE</span> <span style="color: pink;">=</span> <span style="color: #000000;">&#91;</span>ADSI<span style="color: #000000;">&#93;</span><span style="color: #800000;">&quot;LDAP://$gpodn&quot;</span>
<span style="color: #800080;">$DE</span>.psbase.ObjectSecurity.SetSecurityDescriptorSddlForm<span style="color: #000000;">&#40;</span><span style="color: #800080;">$sddlgpc2</span><span style="color: #000000;">&#41;</span>
<span style="color: #800080;">$DE</span>.psbase.commitchanges<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span></pre></div></div>

<p>A ce stade là vous avez édité la sécurité sur une seule partie de la GPO: Le <a href="http://searchwindowsserver.techtarget.com/tip/Understanding-the-GPC-for-Group-Policy">Group Policy Container</a>. Si vous allez sur la GPO dans GPMC vous aurez le message d&#8217;erreur suivant:</p>
<p style="text-align: center;"><a href="http://www.ldap389.info/wp-content/uploads/2010/11/ERROR-GPMC1.jpg" rel="lightbox[812]"><img class="size-medium wp-image-823  aligncenter" title="ERROR-GPMC" src="http://www.ldap389.info/wp-content/uploads/2010/11/ERROR-GPMC1-300x144.jpg" alt="" width="300" height="144" /></a></p>
<p>Le remplacement de permissions est à faire aussi sur la partie SYSVOL de la GPO (répertoire identifié par son GUID) à savoir le <a href="http://searchwindowsserver.techtarget.com/tip/Knowing-key-settings-in-Group-Policy-Template-speeds-problem-resolution">Group Policy Template</a>. Cela se fait à l&#8217;aide du CmdLet <a href="http://technet.microsoft.com/en-gb/library/dd315261.aspx">Set-acl</a> et la fonction <em>SetSecurityDescriptorSddlForm</em> comme décrit dans cet <a href="http://mow001.blogspot.com/2006/05/powershell-import-and-export.html">article</a>.</p>
<p>Vous pouvez télécharger le script ici:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2010/11/REPLACE_SDDL_GPO.ps1"><img class="aligncenter size-full wp-image-83" title="tool" src="http://www.ldap389.info/wp-content/uploads/2010/03/tool1.png" alt="" width="48" height="48" /></a></p>
<p>Il vous faudra remplacer les éléments suivants:</p>
<ul>
<li>$domain: Nom NetBios du domaine.</li>
<li>$domainFQDN: FQDN du domaine.</li>
<li>$siteadmgrp: Groupe d&#8217;administration du site.</li>
<li>$gpoprefix: Préfixe du nom des GPOs gérées par les administrateurs de site.</li>
</ul>
<p>Lancer le script <strong>REPLACE_SDDL_GPO.ps1</strong>, vous serez prompté avant le remplacement de la permission, le nom de la GPO et des comptes AD concernés sera affiché:</p>
<p style="text-align: center;"><a href="http://www.ldap389.info/wp-content/uploads/2010/11/REPLACE_SDDL_GPO.jpg" rel="lightbox[812]"><img class="size-medium wp-image-826  aligncenter" title="REPLACE_SDDL_GPO" src="http://www.ldap389.info/wp-content/uploads/2010/11/REPLACE_SDDL_GPO-300x48.jpg" alt="" width="300" height="48" /></a></p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Powershell%3A+Editer+permissions+sur+une+GPO+http%3A%2F%2Fis.gd%2FNm6NLH" title="Post to Twitter"><img class="nothumb" src="http://www.ldap389.info/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.ldap389.info/2010/11/26/powershell-editer-permission-gpo-sddl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Certificats contrôleurs de domaine: Template Kerberos Authentication</title>
		<link>http://www.ldap389.info/2010/09/02/powershell-certificat-controleur-domaine-template-kerberos-authentication-modele/</link>
		<comments>http://www.ldap389.info/2010/09/02/powershell-certificat-controleur-domaine-template-kerberos-authentication-modele/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 11:00:10 +0000</pubDate>
		<dc:creator>ldap389</dc:creator>
				<category><![CDATA[Public Key Infrastructure]]></category>
		<category><![CDATA[scripts]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[certutil]]></category>
		<category><![CDATA[pki]]></category>
		<category><![CDATA[Powershell]]></category>

		<guid isPermaLink="false">http://www.ldap389.info/?p=690</guid>
		<description><![CDATA[Suite à la mise en place d&#8217;une autorité de certification Windows 2008, nous avons à notre disposition un nouveau modèle de certificats pour les contrôleurs de domaine nommé Kerberos Authentication. Ce modèle remplace le précédent: Domain Controller Authentication. Pour avoir plus d&#8217;informations concernant les différents templates de certificats je vous conseille de consulter ce lien. [...]]]></description>
			<content:encoded><![CDATA[<p>Suite à la mise en place d&#8217;une autorité de certification Windows 2008, nous avons à notre disposition un nouveau modèle de certificats pour les contrôleurs de domaine nommé <em>Kerberos Authentication</em>. Ce modèle remplace le précédent: <em>Domain Controller Authentication</em>. Pour avoir plus d&#8217;informations concernant les différents templates de certificats je vous conseille de consulter ce <a href="http://technet.microsoft.com/en-us/library/cc730826%28WS.10%29.aspx">lien</a>.</p>
<p>Le template <em>Kerberos Authentication</em> peut être installé pour remplacer le modèle <em>Domain Controller Authentication</em> à partir d&#8217;un DC sous Windows 2003 SP2. Ci dessous un tableau comparatif entre l&#8217;ancien et le nouveau modèle:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="205" valign="top"></td>
<td width="205" valign="top">Domain Controller Authentication</td>
<td width="205" valign="top">Kerberos Authentication</td>
</tr>
<tr>
<td width="205" valign="top">Key Usage</td>
<td width="205" valign="top">Client Authentication</p>
<p>Server Authentication</p>
<p>Smart Card Logon</td>
<td width="205" valign="top">Client Authentication</p>
<p>Server Authentication</p>
<p>Smart Card Logon</p>
<p><strong>KDC Authentication.</strong></td>
</tr>
<tr>
<td width="205" valign="top">Subject Alternate Name</td>
<td width="205" valign="top">DNS Name : FQDN <strong>du contrôleur</strong> de domaine.</td>
<td width="205" valign="top">DNS Name : FQDN <strong>du domaine</strong>.</p>
<p>DNS Name : Nom NetBios <strong>du domaine.</strong></td>
</tr>
</tbody>
</table>
<p><span id="more-690"></span><br />
Pour plus d&#8217;informations concernant l&#8217;utilisation de la clef <em>KDC Authentication</em> <em> </em>qui permet d&#8217;assurer que vos utilisateurs de cartes à puce s&#8217;authentifient auprès d&#8217;un contrôleur de domaine valide  vous pouvez lire ce document : <a href="http://www.microsoft.com/downloads/details.aspx?familyid=F23757C9-AC76-4F74-8738-3F9A8B7417F4&amp;displaylang=en">Enabling Strict KDC Validation in Windows Kerberos</a>.</p>
<p>Le fait d&#8217;avoir le nom du domaine dans le <em>Subject Alternate Name</em> du certificat et non seulement le nom du contrôleur de domaine permet à un DC de prouver qu&#8217;il appartient bien au domaine mentionné dans le <em>Subject Alternate Name</em>. Par ailleurs cette information doit être contenue dans le<em> </em>certificat afin d&#8217;activer la <em>Strict KDC Validation.</em></p>
<p>Nous allons décrire comment distribuer les nouveaux certificats de type  <em>Kerberos Authentication</em> sur vos contrôleurs de domaine et révoquer les anciens certificats de type <em>Domain Controller Authentication </em>une fois que ceux ci ne servent plus. Nous distribuons les certificats aux DCs en utilisant l&#8217;<a href="http://technet.microsoft.com/en-us/library/cc778954%28WS.10%29.aspx"><em>autoenrollment</em></a> <em> </em> qui est à configurer via GPO et en paramétrant correctement les modèles de certificats pour contrôleurs de domaine.</p>
<p>Pour indiquer au nouveau template de remplacer l&#8217;ancien il vous suffit de démarrer la console <em>certtmpl.msc</em> et d&#8217;éditer le template <em>Kerberos Authentication </em>afin d&#8217;indiquer qu&#8217;il écrase (&#8220;<em>supersedes</em>&#8220;) le modèle <em>Domain Controller Authentication. </em>Voir paragraphe &#8220;Superseding Certificate Templates&#8221; de ce <a href="http://technet.microsoft.com/en-us/library/cc759203%28WS.10%29.aspx">lien</a>.</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2010/08/superseded-template.jpg" rel="lightbox[690]"><img class="aligncenter size-medium wp-image-691" title="superseded-template" src="http://www.ldap389.info/wp-content/uploads/2010/08/superseded-template-300x190.jpg" alt="" width="300" height="190" /></a></p>
<p>Une fois que le template est <a href="http://technet.microsoft.com/en-us/library/cc773385%28WS.10%29.aspx">bien configuré</a> pour l&#8217;autoenrollment, le nouveau certificat va se déployer automatiquement, au besoin lancer la commande <strong>certutil -pulse</strong> sur les DCs pour accélérer le processus.</p>
<p><em><a href="http://www.ldap389.info/wp-content/uploads/2010/09/install_certificate.jpg" rel="lightbox[690]"><img class="aligncenter size-medium wp-image-694" title="install_certificate" src="http://www.ldap389.info/wp-content/uploads/2010/09/install_certificate-300x230.jpg" alt="" width="300" height="230" /></a></em></p>
<p>Le certificat du contrôleur de domaine est alors automatiquement remplacé dans le magasin local de certificats, lors de l&#8217;installation du nouveau certificat les événements de la source  <em>AutoEnrollment </em>vous indiquent que le certificat avec le modèle<em> Kerberos Authentication </em>est installé.</p>
<p>Avec <a href="http://www.quest.com/powershell/activeroles-server.aspx">ActiveRoles Management Shell for Active Directory v1.4</a> de Quest, vous pouvez en powershell gérer les certificats grâce au CmdLets de &#8220;<a href="http://wiki.powergui.org/index.php/QAD_cmdlets_reference#Certificate_and_Public_Key_Infrastructure_.28PKI.29_management"><em>Certificate and PKI management</em></a>&#8220;. Nous allons tout d&#8217;abord vérifier le bon déploiement des nouveaux modèles de certificats sur nos DCs avec la commande suivante:</p>

<div class="wp_syntax"><div class="code"><pre class="powershell" style="font-family:monospace;">Get<span style="color: pink;">-</span>QADComputer <span style="color: pink;">-</span>computerRole <span style="color: #800000;">'DomainController'</span> <span style="color: pink;">|</span> Get<span style="color: pink;">-</span>QADCertificate <span style="color: pink;">-</span>Revoked:<span style="color: #800080;">$false</span> <span style="color: pink;">-</span>template:<span style="color: #800000;">'*kerberos authentication*'</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">format-table</span> template<span style="color: pink;">,</span>IssuedTo <span style="color: #008080; font-style: italic;">-autosize</span></pre></div></div>

<p>Si tout vos DCs ont bien autoenrollé le nouveau certificat, et que vous avez validé leur bon fonctionnement, vous pouvez désactiver l&#8217;ancien modèle <em>Domain Controller Authentication </em>avec la console <em>certsrv.msc</em> <em> </em><em> </em>afin qu&#8217;aucun nouveau certificat avec ce modèle ne soit délivré. Finalement il ne vous reste plus qu&#8217;à révoquer les anciens certificats  ayant pour modèle <em>Domain Controller Authentication </em><em> </em>sur tous vos contrôleurs de domaine<em>. </em></p>
<p>Pour cela nous allons combiner les CmdLets de Quest et la commande <a href="http://technet.microsoft.com/en-us/library/cc739815%28WS.10%29.aspx#BKMK_cmd"><strong>Certutil -revoke</strong></a>, il suffit donc de récupérer le numéro de série des certificats ayant pour template <em>Domain Controller Authentication </em>liés à nos objets AD contrôleurs de domaine et indiquer le code correspondant à la raison de la révocation: A savoir <strong>4</strong> pour <em>Superseded</em>.</p>

<div class="wp_syntax"><div class="code"><pre class="powershell" style="font-family:monospace;">Get<span style="color: pink;">-</span>QADComputer <span style="color: pink;">-</span>computerRole <span style="color: #800000;">'DomainController'</span> <span style="color: pink;">|</span> Get<span style="color: pink;">-</span>QADCertificate <span style="color: pink;">-</span>Revoked:<span style="color: #800080;">$false</span> <span style="color: pink;">-</span>template:<span style="color: pink;">*</span>domain controller authentication<span style="color: pink;">*</span> <span style="color: pink;">|</span> <span style="color: #0000FF;">foreach</span> <span style="color: #000000;">&#123;</span>certutil <span style="color: pink;">-</span>config <span style="color: pink;">%</span>SRV_CA_FQDN<span style="color: pink;">%</span>\<span style="color: pink;">%</span>CA_Common_Name<span style="color: pink;">%</span> <span style="color: pink;">-</span>revoke <span style="color: #000080;">$_</span>.SerialNumber <span style="color: #804000;">4</span><span style="color: #000000;">&#125;</span></pre></div></div>

<p>Les variables suivantes sont à adapter:</p>
<ul>
<li>%SRV_CA_FQDN%: FQDN du serveur délivrant les certificats.</li>
<li>%CA_Common_Name%: Nom du CA.</li>
</ul>
<p>En combinant l&#8217;outil <a href="http://technet.microsoft.com/en-us/library/cc772898%28WS.10%29.aspx">Certutil</a> et les nouvelles fonctionnalités de gestion de certificats apportées par les Quest AD CmdLets v1.4, nous pouvons automatiser une partie des tâches d&#8217;administration liées à votre PKI.</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Certificats+contr%C3%B4leurs+de+domaine%3A+Template+Kerberos+Authentication+http%3A%2F%2Fis.gd%2FC47OXw" title="Post to Twitter"><img class="nothumb" src="http://www.ldap389.info/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.ldap389.info/2010/09/02/powershell-certificat-controleur-domaine-template-kerberos-authentication-modele/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GPO Filtrage WMI: Contournement KB2286198</title>
		<link>http://www.ldap389.info/2010/08/06/gpo-filtrage-wmi-false-kb2286198/</link>
		<comments>http://www.ldap389.info/2010/08/06/gpo-filtrage-wmi-false-kb2286198/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 22:27:00 +0000</pubDate>
		<dc:creator>ldap389</dc:creator>
				<category><![CDATA[gpo]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[adm]]></category>
		<category><![CDATA[gpmc]]></category>
		<category><![CDATA[gpp]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[rsop]]></category>
		<category><![CDATA[wmi]]></category>

		<guid isPermaLink="false">http://www.ldap389.info/?p=660</guid>
		<description><![CDATA[Comme vous le savez déjà surement les OS Windows 2000 et XP SP2 ne sont plus supportés par Microsoft depuis le 13/07/2010. En conséquence les patchs de sécurité MS sortis depuis cette date ne sont plus applicables sur ces versions d&#8217;OS. Une faille de sécurité critique MS10-046 a été corrigé via le patch de sécurité [...]]]></description>
			<content:encoded><![CDATA[<p>Comme vous le savez déjà surement les OS Windows 2000 et XP SP2 ne sont <a href="http://blogs.technet.com/b/askperf/archive/2010/07/13/support-changes-for-windows-2000-windows-xp-sp2-and-windows-vista.aspx">plus supportés par Microsoft</a> depuis le 13/07/2010. En conséquence les patchs de sécurité MS sortis depuis cette date ne sont plus applicables sur ces versions d&#8217;OS. Une faille de sécurité critique <a href="http://www.microsoft.com/france/technet/security/Bulletin/MS10-046.mspx">MS10-046</a> a été corrigé via le patch de sécurité <a href="http://support.microsoft.com/kb/2286198">KB2286198</a>, son pré-requis pour les versions <em>workstation</em> est donc Windows XP SP3 et Windows 2003 SP2 pour les versions <em>server</em>. Cette KB nous explique tout de même comment se protéger en utilisant une solution de contournement, celle-ci consiste en l&#8217;édition de deux clefs de registre et la désactivation d&#8217;un service.</p>
<p>Cette solution de contournement est donc applicable sur vos postes qui ne sont pas encore à jour et qui ne peuvent recevoir le patch de sécurité fournit par MS. Son gros désavantage est la disparition des images d&#8217;icônes sur certains fichiers *<em>.lnk</em>. Il est donc très vivement conseillé de mettre à jour vos systèmes d&#8217;exploitation avec le bon Service Pack pour ne pas avoir à en arriver la. Si ce n&#8217;est pas réalisable dans des délais raisonnables nous allons voir comment déployer cette solution de contournement via GPO. Ce sujet a déjà été traité dans cet <a href="http://www.grouppolicy.biz/2010/08/how-to-workaround-kb2286198-shortcut-icon-security-issues-with-group-policy/">article</a> du Group Policy Center, il nous indique comment activer ou désactiver la solution de contournement sous Windows 2008 via les<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=42e30e3f-6f01-4610-9d6e-f6e0fb7a0790&amp;DisplayLang=en"> préférences</a> de stratégies de groupe. Nous allons dans ce post le compléter en indiquant comment se servir du filtrage WMI pour cibler le comportement de la GPO, à savoir activer la solution de contournement pour les postes qui n&#8217;ont pas le patch de sécurité d&#8217;installé et le désactiver sur les ordinateurs ayant la KB2286198 d&#8217;installée. Puis comment réaliser la même chose sans les GPO de préférences, avec un AD sous Windows 2003.</p>
<p><span id="more-660"></span>Nous allons tout d&#8217;abord voir comment activer le workaround en utilisant la méthode du<a href="http://www.grouppolicy.biz/2010/08/how-to-workaround-kb2286198-shortcut-icon-security-issues-with-group-policy/"> Group Policy Center </a>mais en ne ciblant que les postes qui n&#8217;ont pas le patch de sécurité d&#8217;installé. Afin de profiter des préférences de stratégie de groupe vous devez au minima avoir un DC sous Windows 2008 et appliquer <a href="http://support.microsoft.com/kb/943729">cette KB</a> sur tous vos clients, attention à ne pas oublier l&#8217;installation de XMLLite pour Windows 2003 et XP. Afin de ne cibler que les postes qui n&#8217;ont pas la KB2296198 d&#8217;installée nous allons utiliser le <em><a href="http://technet.microsoft.com/en-us/library/cc733022.aspx">Item-Level targeting</a></em> et filtrer via une requête WMI l&#8217;existence de nôtre KB. La grosse évolution est que avec un AD sous Windows 2003 nous ne pouvions réaliser un filtrage WMI que si le résultat retourné était TRUE, grâce au <a href="http://technet.microsoft.com/en-us/library/cc753660.aspx"><em>Targeting Collection</em></a> nous pouvons réaliser le filtre suivant: Si la requête WMI retourne un résultat FALSE (i.e. KB non présente) alors j&#8217;applique l&#8217;élément de préférence de stratégie de groupe (Item options IS NOT):</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2010/08/wmiquery2008-1.jpg" rel="lightbox[660]"><img class="aligncenter size-medium wp-image-662" title="wmiquery2008-1" src="http://www.ldap389.info/wp-content/uploads/2010/08/wmiquery2008-1-300x223.jpg" alt="" width="300" height="223" /></a></p>
<p>La requête WMI permettant de savoir si la KB est installée se réalise en parcourant la classe <em>Win32_QuickFixEngineering</em> et en filtrant sur le HotFixID KB2286198:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2010/08/wmiquery2008-2.jpg" rel="lightbox[660]"><img class="aligncenter size-medium wp-image-663" title="wmiquery2008-2" src="http://www.ldap389.info/wp-content/uploads/2010/08/wmiquery2008-2-300x180.jpg" alt="" width="300" height="180" /></a></p>
<p>En appliquant ces éléments de filtrage à l&#8217;édition des deux clefs de registre et la désactivation du service WebClient indiqués dans le post du <a href="http://www.grouppolicy.biz/2010/08/how-to-workaround-kb2286198-shortcut-icon-security-issues-with-group-policy/">Group Policy Center</a> vous ne ciblerez l&#8217;activation du workaround que pour les postes qui n&#8217;ont pas le patch de sécurité. Cette nouveauté concernant le filtrage WMI (i.e. gérer la condition FALSE) n&#8217;est valable que pour les préférences de stratégies de groupe, les autres paramètres de GPOs sont soumis aux mêmes restrictions que sous Windows 2003: Le filtrage se fait sur la valeur TRUE renvoyée par la requête.</p>
<p>Pour désactiver la solution de contournement il vous suffit d&#8217;utiliser la même requête, en utilisant l&#8217;option par défaut du <em>Targeting Editor</em> à savoir filtrer si la condition est TRUE (Item options IS).</p>
<p>Maintenant nous allons voir le pire cas de figure: Vous désirez activer cette solution de contournement via GPO mais vous ne disposez pas des préférences de stratégie de groupe (AD 2003) et vous avez encore sur votre parc des clients avec un OS Windows 2000 (!):</p>
<p>Dans ce cas la GPO avec filtre WMI classique est appliqué si la requête renvoie TRUE, or on ne veut appliquer le workaround que si la KB n&#8217;est pas présente, donc renvoie FALSE&#8230; Nous allons donc créer deux GPOs et jouer sur l&#8217;ordre d&#8217;application de celles ci:</p>
<ul>
<li>Une première GPO (<em>KB2286198-WOKAROUND-AD2003-Enable</em>) qui applique le workaround à tous les postes (pas de filtrage) qui désactive le service WebClient et édite les valeurs <em>default</em> de clefs de registre <em>HKCR\lnkfile\shellex\IconHandler</em> et <em>HKCR\piffile\shellex\IconHandler</em> à vide. Cette GPO va s&#8217;appliquer en premier sur le poste et aura donc une priorité inférieure à la seconde GPO.</li>
<li>Une seconde GPO (<em>KB2286198-WOKAROUND-AD2003-Disable</em>) qui désactive le workaround pour les postes qui répondent TRUE à la requête WMI indiquant que le poste est patché. Celle ci active le service WebClient (valeur par défaut) et édite les valeurs de clefs de registre à leur valeur par défaut ({00021401-0000-0000-C000-000000000046}). Cette GPO, ne s&#8217;appliquant qu&#8217;aux postes patchés, va désactiver le workaround en s&#8217;appliquant après la première GPO et a donc une priorité supérieure.</li>
</ul>
<p><a href="http://www.ldap389.info/wp-content/uploads/2010/08/ordreGPO2003.jpg" rel="lightbox[660]"><img class="aligncenter size-medium wp-image-665" title="ordreGPO2003" src="http://www.ldap389.info/wp-content/uploads/2010/08/ordreGPO2003-300x40.jpg" alt="" width="300" height="40" /></a></p>
<p>Afin de pousser les valeurs de registre via GPO nous allons générer deux fichiers .ADM à l&#8217;aide de reg2adm de <a href="http://yizhar.mvps.org/">Yizhar Hurwitz</a>, vous trouverez un tutoriel <a href="http://www.virtualizationadmin.com/articles-tutorials/terminal-services/general/group-policy-support-custom-applications-environment.html">ici</a>. Pour télécharger les modèles d&#8217;administration pour nos deux GPOs c&#8217;est ici:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2010/07/ADM-KB2286198.zip"><img class="aligncenter size-full wp-image-83" title="tool" src="http://www.ldap389.info/wp-content/uploads/2010/03/tool1.png" alt="" width="48" height="48" /></a></p>
<p>Le filtre WMI à appliquer sur la seconde GPO est toujours le même:</p>
<blockquote><p>SELECT * FROM Win32_QuickFixEngineering WHERE HOTFixID = &#8216;KB2286198&#8242;</p></blockquote>
<p>Le problème est qu&#8217;un OS Windows 2000 qui se voit appliquer une GPO avec filtrage WMI <a href="http://technet.microsoft.com/en-us/library/cc758471%28WS.10%29.aspx">ignore le filtre</a> et applique toujours la GPO. Donc <em>KB2286198-WOKAROUND-AD2003-Disable </em>sera toujours appliquée sur cet OS, or ce n&#8217;est pas le comportement que nous souhaitons car le patch de sécurité n&#8217;est pas disponible sur cette version&#8230;</p>
<p>Nous allons donc contourner le problème en recensant toutes nos machines Windows 2000 et en les mettant dans un groupe de sécurité <em>W2K-WORKSTATIONS</em>, pour cela utiliser la commande PowerShell des <a href="http://www.quest.com/powershell/activeroles-server.aspx">Quest AD CMDlets</a> suivante:</p>

<div class="wp_syntax"><div class="code"><pre class="powershell" style="font-family:monospace;">get<span style="color: pink;">-</span>QADComputer <span style="color: pink;">-</span>OSName <span style="color: #800000;">'Windows 2000*'</span> <span style="color: pink;">-</span>ldapFilter <span style="color: #800000;">'(!(userAccountControl:1.2.840.113556.1.4.803:=2))'</span> <span style="color: pink;">-</span>Sizelimit <span style="color: #804000;">10000</span> <span style="color: pink;">|</span> Add<span style="color: pink;">-</span>QADMemberof <span style="color: pink;">-</span><span style="color: #008080; font-weight: bold;">Group</span> <span style="color: #800000;">'ldap389\W2K-WORKSTATIONS'</span></pre></div></div>

<p>Nous appliquerons ensuite un filtrage de sécurité sur <em>KB2286198-WOKAROUND-AD2003-Disable </em>indiquant de ne pas appliquer la GPO pour le groupe <em>W2K-WORKSTATIONS.</em></p>
<p>La GPO <em>KB2286198-WOKAROUND-AD2003-Enable </em>est donc la suivante:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2010/08/wmi-GPO2-2003.jpg" rel="lightbox[660]"><img class="aligncenter size-medium wp-image-666" title="wmi-GPO2-2003" src="http://www.ldap389.info/wp-content/uploads/2010/08/wmi-GPO2-2003-300x282.jpg" alt="" width="300" height="282" /></a></p>
<p>Et la GPO <em>KB2286198-WOKAROUND-AD2003-Disable </em>avec une priorité supérieure à la première GPO qui possède un filtrage WMI et un filtrage par groupe:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2010/08/wmi-GPO1-2003.jpg" rel="lightbox[660]"><img class="aligncenter size-medium wp-image-667" title="wmi-GPO1-2003" src="http://www.ldap389.info/wp-content/uploads/2010/08/wmi-GPO1-2003-300x162.jpg" alt="" width="300" height="162" /></a></p>
<p>Voici donc le résultat d&#8217;une commande <a href="http://support.microsoft.com/kb/323276">rsop.msc</a> et l&#8217;état des icônes du menu démarrer sur un poste protégé avec la KB2286198, donc sur lequel le workaround n&#8217;est pas appliqué puis sur un poste non patché sur lequel la solution de contournement est appliquée:</p>
<p><a href="http://www.ldap389.info/wp-content/uploads/2010/08/rsop2003.jpg" rel="lightbox[660]"><img class="aligncenter size-medium wp-image-669" title="rsop2003" src="http://www.ldap389.info/wp-content/uploads/2010/08/rsop2003-300x256.jpg" alt="" width="300" height="256" /></a></p>
<p>En jouant sur l&#8217;ordre d&#8217;application des GPOs nous arrivons à nos fins, cependant cette méthode relève un peu du bricolage&#8230; En conclusion: Maintenez à jour vos versions d&#8217;OS et de Service Packs. Il n&#8217;est pas dit quand dans le futur des solutions de contournement soient disponibles pour combler une faille de sécurité.</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=GPO+Filtrage+WMI%3A+Contournement+KB2286198+http%3A%2F%2Fis.gd%2FcJYRIa" title="Post to Twitter"><img class="nothumb" src="http://www.ldap389.info/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.ldap389.info/2010/08/06/gpo-filtrage-wmi-false-kb2286198/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

