<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Microsoft on Zwindler's Reflection</title><link>https://blog.zwindler.fr/tags/microsoft/</link><description>Recent content in Microsoft on Zwindler's Reflection</description><generator>Hugo -- gohugo.io</generator><language>fr-fr</language><copyright>Licensed under CC BY-SA 4.0</copyright><lastBuildDate>Sat, 30 Jul 2022 12:00:00 +0000</lastBuildDate><atom:link href="https://blog.zwindler.fr/tags/microsoft/index.xml" rel="self" type="application/rss+xml"/><item><title>Comment veulent-ils que nous mettions à jour huit cents serveurs toutes les semaines !?</title><link>https://blog.zwindler.fr/2022/07/30/comment-veulent-ils-que-nous-mettions-a-jour/</link><pubDate>Sat, 30 Jul 2022 12:00:00 +0000</pubDate><guid>https://blog.zwindler.fr/2022/07/30/comment-veulent-ils-que-nous-mettions-a-jour/</guid><description>&lt;img src="https://blog.zwindler.fr/2022/07/manutan.webp" alt="Featured image of post Comment veulent-ils que nous mettions à jour huit cents serveurs toutes les semaines !?" /&gt;&lt;p&gt;C&amp;rsquo;est avec cet extrait d&amp;rsquo;un article de #LeMagIT que j&amp;rsquo;ai lancé (un peu malgré moi) un gros débat sur Twitter 🐦.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/07/lemagit.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;(Et il y a encore plus grave dans l&amp;rsquo;article, j&amp;rsquo;ai rajouté une note, plus loin)&lt;/p&gt;
&lt;p&gt;Pour vous résumer la chose, j&amp;rsquo;ai lu un témoignage de Manutan qui a subit une cyberattaque en février 2021.&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://www.lemagit.fr/etude/Recit-comment-Manutan-sest-sorti-de-la-cyberattaque-du-21-fevrier" target="_blank" rel="noopener"
&gt;Le Mag IT - Récit : comment Manutan s’est sorti de la cyberattaque du 21 février&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Le directeur des opérations IT du groupe explique que Microsoft n&amp;rsquo;a pas voulu les aider (enfin si, mais pas gratuitement et pas au pied levé 😏) car ils ne mettaient pas à jour leurs serveurs.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Comment veulent-ils que nous mettions à jour huit cents serveurs toutes les semaines !?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Je tombe de ma chaise 🪑&lt;/p&gt;
&lt;p&gt;Quelques réponses que j&amp;rsquo;ai reçu à la suite de ça :&lt;/p&gt;
&lt;h2 id="tout-les-kevin-je-sais-tout-qui-pense-que-cest-vraiment-possible-dupdate-800-machine-toute-les-semaines"&gt;&amp;ldquo;tout les Kevin je sais tout qui pense que c’est vraiment possible d’update 800 machine toute les semaines&amp;rdquo;
&lt;/h2&gt;&lt;p&gt;(oui quelqu&amp;rsquo;un m&amp;rsquo;a répondu ça)&lt;/p&gt;
&lt;p&gt;Loin de moi l&amp;rsquo;idée de nier la difficulté de maintenir un parc de serveurs dans un environnement industriel + Windows (je connais, je l&amp;rsquo;ai déjà fait).&lt;/p&gt;
&lt;p&gt;Et bien entendu qu&amp;rsquo;il faut rester humble : même avec la meilleure des sécurités, une attaque reste toujours possible pour un criminel suffisamment motivé.&lt;/p&gt;
&lt;p&gt;Mais quand même ! Que quelqu&amp;rsquo;un ose écrire, sans rougir, après attaque au cryptolocker, qu&amp;rsquo;ils ne mettent pas à jour leur parc, car c&amp;rsquo;est trop compliqué ???&lt;/p&gt;
&lt;p&gt;Avec toutes les cyber attaques qui pleuvent depuis des années ? Avec tous les messages martellés par ANSSI, la gendarmerie et le gouvernement ?&lt;/p&gt;
&lt;h2 id="cest-chaud-surtout-sil-y-a-des-applications-spécifiques-avec-des-technos-différentes"&gt;&amp;ldquo;cest chaud… surtout s’il y a des applications spécifiques avec des technos différentes…&amp;rdquo;
&lt;/h2&gt;&lt;p&gt;Que certains systèmes industriels soient mal conçus, peu maintenus par l&amp;rsquo;éditeur, impossible à mettre à jour sans interruption, ce sont des faits.&lt;/p&gt;
&lt;p&gt;Pour autant, ça ne veut pas dire que c&amp;rsquo;est acceptable, hein ?&lt;/p&gt;
&lt;p&gt;A nous, professionnels de l&amp;rsquo;IT de peser sur les décideurs pour éviter d&amp;rsquo;en arriver là ! La maintenabilité et les logiciels à sources ouvertes devraient être dans la liste des critères pour choisir une solution logicielle / industrielle, quelle qu&amp;rsquo;elle soit.&lt;/p&gt;
&lt;h2 id="une-plate-forme-de-qa-iso-prod-avec-des-tests-automatisé-de-non-régression-est-vu-comme-une-charge-et-non-pas-comme-mandatory-"&gt;&amp;ldquo;Une plate-forme de QA Iso prod avec des tests automatisé de non régression est vu comme une charge et non pas comme mandatory. 🤷‍♂️&amp;rdquo;
&lt;/h2&gt;&lt;p&gt;Les outils/moyens pour automatiser les mises à jours ET les tests de régression existent (même sous Windows 😏). Encore faut-il y mettre les moyens (financiers, humains) et former les opérationnels ! Pas toujours facile à faire entendre à un ComEx, mais c&amp;rsquo;est là aussi le rôle et la responsabilité du DSI / RSSI. Ca me parait un peu facile de s&amp;rsquo;en défausser par la suite.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;humain est aussi capital et souvent sous-estimé par rapport à l&amp;rsquo;outillage (acheter un EDR ou faire un audit de sécu oneshot, c&amp;rsquo;est rassurant, mais est ce suffisant ???).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/07/lemagit2.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;[EDIT] J&amp;rsquo;avais mal compris ce passage. Mais en fait, ils avaient les outils pour détecter l&amp;rsquo;intrusion (qui a duré 3 mois avant le lancement du cryptolocker) mais &lt;strong&gt;personne n&amp;rsquo;a regardé les alertes&lt;/strong&gt; ! Clairement là c&amp;rsquo;est super grave.&lt;/p&gt;
&lt;h2 id="si-encore-il-ny-avait-que-les-serveurs-industriels-passons"&gt;Si encore il n&amp;rsquo;y avait que les serveurs industriels, passons
&lt;/h2&gt;&lt;p&gt;Quand vraiment il n&amp;rsquo;y a pas de solutions (ou un passif trop important), il faut isoler les systèmes problématiques. Réseaux séparés (physiques ou logiques), pas d&amp;rsquo;accès à Internet, surveillance accrue&amp;hellip; Je connais des industriels qui y arrivent très bien, ce n&amp;rsquo;est pas impossible.&lt;/p&gt;
&lt;p&gt;Mais pour finir, sur les 800 serveurs touchés chez Manutan, il n&amp;rsquo;y avait pas QUE des serveurs industriels.&lt;/p&gt;
&lt;p&gt;Tout y est passé : AD, messagerie, bureautiques, espaces de stockages partagés. Des systèmes &amp;ldquo;standards&amp;rdquo; qui &lt;strong&gt;eux&lt;/strong&gt; auraient &lt;strong&gt;dû&lt;/strong&gt; être à jour, car il n&amp;rsquo;y a pas de difficulté technique particulière sur ces genres de briques techniques&amp;hellip;&lt;/p&gt;
&lt;h2 id="derniers-mots"&gt;Derniers mots
&lt;/h2&gt;&lt;p&gt;On peut quand même reconnaitre à Manutan d&amp;rsquo;avoir eu les bons réflexes post incident : faire les morts auprès des cybercriminels, chercher de l&amp;rsquo;aide, ne pas payer la rançon, restaurer les systèmes de manière méthodique.&lt;/p&gt;
&lt;p&gt;Ils ont visiblement été bien accompagnés par leur partenaire.&lt;/p&gt;
&lt;p&gt;Enfin, on peut surtout saluer la transparence de ce REX.&lt;/p&gt;
&lt;p&gt;Bravo pour tout ça.&lt;/p&gt;
&lt;p&gt;Mais clairement, il nous reste encore beaucoup de chemin à parcourir et on va avoir besoin d&amp;rsquo;encore beaucoup de pédagogie pour sécuriser nos SI&amp;hellip;&lt;/p&gt;
&lt;h2 id="liens"&gt;Liens
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.lemagit.fr/etude/Recit-comment-Manutan-sest-sorti-de-la-cyberattaque-du-21-fevrier" target="_blank" rel="noopener"
&gt;Le Mag IT - Récit : comment Manutan s’est sorti de la cyberattaque du 21 février&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mon thread Twitter (lien mort, j&amp;rsquo;ai quitté Twitter)&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.linkedin.com/posts/denis-germain_lemagit-cyberattaque-microsoft-activity-6959123398283169792-WeMR?utm_source=linkedin_share&amp;amp;utm_medium=member_desktop_web" target="_blank" rel="noopener"
&gt;La même chose sur LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Sécuriser l’émission de vos certificats avec un CAA (Azure)</title><link>https://blog.zwindler.fr/2018/06/12/securiser-lemission-de-vos-certificats-azure-avec-un-caa/</link><pubDate>Tue, 12 Jun 2018 11:45:10 +0000</pubDate><guid>https://blog.zwindler.fr/2018/06/12/securiser-lemission-de-vos-certificats-azure-avec-un-caa/</guid><description>&lt;img src="https://blog.zwindler.fr/2018/06/azure.webp" alt="Featured image of post Sécuriser l’émission de vos certificats avec un CAA (Azure)" /&gt;&lt;h2 id="caa--azure-"&gt;CAA ? Azure ?!?
&lt;/h2&gt;&lt;p&gt;Et oui, je travaille sur Azure ! Je crois bien que c’est le premier article que je vais faire à ce sujet donc je commence par quelque chose de léger, créer un CAA.&lt;/p&gt;
&lt;p&gt;Au-delà de toute considération purement dogmatique, le cloud de Microsoft fait quand même partie des plus grands, avec une richesse fonctionnelle et une API aussi riche que ce qu’on trouve chez les autres. J’aurai l’occasion de faire d’autres articles sur Azure car j’utilise énormément les modules Ansible développés par les équipes de Microsoft (qui s’appuient sur l’API d’Azure).&lt;/p&gt;
&lt;h2 id="et-donc-le-caa-"&gt;Et donc, le CAA ?
&lt;/h2&gt;&lt;p&gt;Mais cet article parle de CAA. Pour ceux qui ne connaitraient pas, un CAA est un « nouveau » (2017) type d’enregistrement DNS :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;La CAA est une mesure de sécurité qui permet aux propriétaires d’un nom de domaine de préciser dans leur DNS (Domain Name System) les autorités de certification (AC) qui sont autorisées à émettre des certificats pour leur nom de domaine.&lt;/p&gt;
&lt;p&gt;Global Sign (lien mort, pas disponible sur Internet Archive)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Concrètement, si je possède un domaine avec un grand nombre de sites web signés, que je n’utilise qu’une ou deux (ou un nombre fini) autorités de certifications, je peux maintenant spécifier lesquelles (parmi la centaine des AC existantes) sont autorisées à émettre un certificat pour mon domaine. Cela permettra d’éviter que des personnes mal intentionnées génèrent un certificat pour une URL dans un de vos sous domaines.&lt;/p&gt;
&lt;h2 id="comment-ça-fonctionne-"&gt;Comment ça fonctionne ?
&lt;/h2&gt;&lt;p&gt;Il existe donc un nouveau type d’entrée dans votre DNS qui devrait ressembler à ça :&lt;/p&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;
Name
&lt;/th&gt;
&lt;th&gt;
Type
&lt;/th&gt;
&lt;th&gt;
Value
&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td rowspan="2"&gt;
zwindler.fr.
&lt;/td&gt;
&lt;td rowspan="2"&gt;
CAA
&lt;/td&gt;
&lt;td rowspan="1"&gt;
0 issue « letsencrypt.org »
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td rowspan="1"&gt;
0 iodef « mailto:zwindler@zwindler.fr »
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Pour l’entrée zwindler.fr., j’ai donc un CAA qui dispose de 2 variables (issue et iodef) :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La première indiquant que seul letsencrypt.org peut générer des certificats pour mon domaine. On peut en avoir plusieurs si on a plusieurs autorités de certification.&lt;/li&gt;
&lt;li&gt;La seconde indiquant qu’il faut m’envoyer un email si jamais quelqu’un qui n’a pas les droits essaye de générer un certificat.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;A noter :&lt;/strong&gt; iodef n’est pas respecté par toutes les autorités de certifications, donc vous n’aurez potentiellement pas d&amp;rsquo;emails en cas de tentative de génération de certificat chez une AC non autorisé.&lt;/p&gt;
&lt;h2 id="ok-comment-je-créé-un-caa-"&gt;Ok, comment je créé un CAA ?
&lt;/h2&gt;&lt;p&gt;Normalement, c’est trivial. Il s’agit d’un enregistrement DNS comme un autre. Par exemple chez OVH, vous pouvez directement le créer depuis l’interface :&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2018/06/caa01.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="et-sur-azure-"&gt;Et sur Azure ?
&lt;/h2&gt;&lt;p&gt;Il faut bien que ce soit rigolo. Dans le portail d’Azure, il n’est pas possible de créer (ni même de voir !!!) les champs de types CAA, pourtant disponibles depuis mi 2017.&lt;/p&gt;
&lt;p&gt;La seule solution est d’utiliser l’API REST, la CLI azure, ou Powershell :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.microsoft.com/en-us/cli/azure/network/dns/record-set/caa?view=azure-cli-latest" target="_blank" rel="noopener"
&gt;Page de documentation azure cli&lt;/a&gt; (record-set)&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.microsoft.com/fr-fr/azure/dns/dns-operations-recordsets" target="_blank" rel="noopener"
&gt;Gérer les enregistrements DNS avec Powershell&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="avec-azure-cli"&gt;Avec Azure cli
&lt;/h2&gt;&lt;p&gt;Du coup je suis parti de la doc pour faire ça :&lt;/p&gt;
&lt;p&gt;En partant du principe que vous avez un compte sur Azure, que vous gérez les DNS de la zone &lt;strong&gt;zwindler.fr&lt;/strong&gt; depuis Azure DNS (dans un resource group appelé &lt;strong&gt;dns-rg&lt;/strong&gt;), voilà ce qu’il faut faire pour créer une protection pour le sous domaine *&lt;strong&gt;.test.zwindler.fr&lt;/strong&gt;.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;az network dns record-set caa add-record --resource-group dns-rg --zone-name zwindler.fr --record-set-name test --flags 0 --tag &amp;#34;issue&amp;#34; --value &amp;#34;letsencrypt.org&amp;#34;
az network dns record-set caa add-record --resource-group dns-rg --zone-name zwindler.fr --record-set-name test --flags 0 --tag &amp;#34;iodef&amp;#34; --value &amp;#34;zwindl3r@zwindler.fr&amp;#34;
az network dns record-set caa list --resource-group dns-rg --zone-name zwindler.fr
{
&amp;#34;caaRecords&amp;#34;: [
{
&amp;#34;flags&amp;#34;: 0,
&amp;#34;tag&amp;#34;: &amp;#34;iodef&amp;#34;,
&amp;#34;value&amp;#34;: &amp;#34;zwindl3r@zwindler.fr&amp;#34;
},
{
&amp;#34;flags&amp;#34;: 0,
&amp;#34;tag&amp;#34;: &amp;#34;issue&amp;#34;,
&amp;#34;value&amp;#34;: &amp;#34;letsencrypt.org&amp;#34;
}
],
&amp;#34;etag&amp;#34;: &amp;#34;aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaa&amp;#34;,
&amp;#34;fqdn&amp;#34;: &amp;#34;test.zwindler.fr.&amp;#34;,
&amp;#34;id&amp;#34;: &amp;#34;/subscriptions/aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaa/resourceGroups/dns-rg/providers/Microsoft.Network/dnszones/zwindler.fr/CAA/test&amp;#34;,
&amp;#34;metadata&amp;#34;: null,
&amp;#34;name&amp;#34;: &amp;#34;test&amp;#34;,
&amp;#34;resourceGroup&amp;#34;: &amp;#34;dns-rg&amp;#34;,
&amp;#34;ttl&amp;#34;: 3600,
&amp;#34;type&amp;#34;: &amp;#34;Microsoft.Network/dnszones/CAA&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="et-si-je-veux-le-domaine-entier-"&gt;Et si je veux le domaine entier ?
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Et là c’est la blague !&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Si vous créez un record-set « &lt;em&gt;test&lt;/em&gt;« , il va vous créer un CAA pour &lt;em&gt;test&lt;/em&gt;.zwindler.fr (voire le champ &lt;strong&gt;fqdn&lt;/strong&gt; dans la réponse du list). Vous n’avez pas la main sur le &lt;strong&gt;fqdn&lt;/strong&gt; directement (que ce soit en création ou en mise à jour), il est créé à partir du nom.&lt;/p&gt;
&lt;p&gt;Or, vous avez très probablement envie de protéger &lt;strong&gt;zwindler.fr&lt;/strong&gt;, pas seulement &lt;strong&gt;test.zwindler.fr&lt;/strong&gt;, car ça n’aurait pas vraiment de sens (on rappelle que le but de la manœuvre et d&amp;rsquo;empêcher des gens de générer des certificats pour des sous domaine de votre domaine) sinon.&lt;/p&gt;
&lt;p&gt;Créer une liste exhaustive de tous les sous domaines possibles me semble complexe ;-).&lt;/p&gt;
&lt;p&gt;L’astuce, que vous ne trouverez pas dans la documentation (en tout cas dans les pages que j’ai lues), est de créer un recordset avec comme nom « @ » (j’avais testé, vide, « * », « . », mais pas « @ »&amp;hellip;).&lt;/p&gt;
&lt;p&gt;Et là, un recordset sera créé pour l’ensemble de votre zone DNS (&lt;strong&gt;zwindler.fr&lt;/strong&gt; dans mon exemple).&lt;/p&gt;
&lt;p&gt;Magie-magie&amp;hellip;&lt;/p&gt;
&lt;h2 id="liens-utiles"&gt;Liens utiles
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.ssllabs.com/ssltest/" target="_blank" rel="noopener"
&gt;Un site pour tester son site en HTTPS (Qualys)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://sslmate.com/caa/" target="_blank" rel="noopener"
&gt;Un site pour générer les CAA records (SSLmate)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Administrer des serveurs Windows avec Ansible</title><link>https://blog.zwindler.fr/2016/11/15/administrer-des-serveurs-windows-avec-ansible/</link><pubDate>Tue, 15 Nov 2016 13:00:11 +0000</pubDate><guid>https://blog.zwindler.fr/2016/11/15/administrer-des-serveurs-windows-avec-ansible/</guid><description>&lt;img src="https://blog.zwindler.fr/2016/09/ansible-windows.webp" alt="Featured image of post Administrer des serveurs Windows avec Ansible" /&gt;&lt;h2 id="ansible-sur-windows"&gt;Ansible sur Windows
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;Depuis que j’ai découvert Ansible, ma vie d’Ops a changée.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Tout doit pouvoir être géré par Ansible. Tous les playbooks doivent être &lt;strong&gt;idempotent&lt;/strong&gt; (je reviendrais la dessus très probablement). Et du coup, ça vaut aussi pour les serveurs Windows qu’il nous reste !&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/11/73068978.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Il n’existe pas encore de version compatible Windows pour l’exécution locale des playbooks. Cependant, il existe tout de même des modules pour administrer via &lt;em&gt;PowerShell remoting&lt;/em&gt; des serveur Windows.&lt;/p&gt;
&lt;p&gt;La liste des modules pour Windows est disponible &lt;a class="link" href="https://docs.ansible.com/ansible/2.9/modules/list_of_windows_modules.html#windows-modules" target="_blank" rel="noopener"
&gt;sur cette page&lt;/a&gt;. La plupart ne sont pas intégrés au cœur d’Ansible mais font partis des &lt;em&gt;extra-modules&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id="prérequis-côté-serveur"&gt;Prérequis côté serveur
&lt;/h2&gt;&lt;h3 id="configuration-de-base-connexion-distante-avec-des-comptes-locaux"&gt;Configuration de base (connexion distante avec des comptes locaux)
&lt;/h3&gt;&lt;p&gt;Il est nécessaire d’installer un module Python permettant la connexion aux Windows via PowerShell sur le serveur Linux qui servira a exécuter les playbooks.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;pip install &amp;#34;pywinrm&amp;gt;=0.1.1&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="configuration-kerberos-connexion-distante-avec-des-comptes-de-domaine-ad"&gt;Configuration Kerberos (connexion distante avec des comptes de domaine AD)
&lt;/h3&gt;&lt;p&gt;La configuration de base ne permet pas d’utiliser des comptes de domaine. Dans un environnement d’entreprise, la plupart des serveurs Windows sont intégrés à un domaine Active Directory.&lt;/p&gt;
&lt;p&gt;Il est donc intéressant d’installer les clients kerberos qui permettront au serveur Linux avec Ansible de s’authentifier sur un domaine AD.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;yum -y install python-devel krb5-devel krb5-libs krb5-workstation
pip install kerberos
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;On peut ensuite configurer le fichier &lt;strong&gt;/etc/krb5.conf&lt;/strong&gt; en fonction du contexte. Voici les variables à renseigner :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[...]
[realms]
ZWINDLER.INFO = {
kdc = dc01.zwindler.info
kdc = dc02.zwindler.info
kdc = dc03.zwindler.info
}
[domain_realm]
.zwindler.info = ZWINDLER.INFO
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;On peut tester que la configuration fonctionne avec la commande &lt;strong&gt;kinit&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kinit zwindler@ZWINDLER.INFO
Password for zwindler@ZWINDLER.INFO:
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;ATTENTION : Il faut obligatoirement donner le nom du domaine en majuscules, et indiquer le nom complet du domaine et pas le nom Netbios. Ca vaut pour le fichier de configuration krb5.conf ET lors de l’appel de la commande kinit.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;La commande ne doit pas retourner d’erreur et on peut vérifier que tout fonctionne avec la commande &lt;strong&gt;klist&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;klist
Default principal: zwindler@ZWINDLER.INFO
Valid starting Expires Service principal
23/08/2016 15:15:33 24/08/2016 01:15:33 krbtgt/ZWINDLER.INFO@ZWINDLER.INFO
renew until 30/08/2016 15:15:30
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="ajout-dun-serveur-windows"&gt;Ajout d’un serveur Windows
&lt;/h3&gt;&lt;h4 id="méthode-1--compte-local-variables-de-connexion-dans-un-fichier-chiffré"&gt;Méthode 1 : Compte local, variables de connexion dans un fichier chiffré
&lt;/h4&gt;&lt;p&gt;A la différence d’Ansible sous Linux où l’authentification peut se faire sans mot de passe à l’aide de certificats, sous Windows, il sera nécessaire de stocker à un moment donné le mot de passe d’un compte qui pourra se connecter sur les serveurs Windows.&lt;/p&gt;
&lt;p&gt;On ajoute d’abord les serveurs windows dans le fichiers hosts dans un groupe séparé&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[zwindler_windows_prod]
antivirus
wsus
[zwindler_prod:children]
zwindler_ansible_prod
zwindler_linux_prod
zwindler_windows_prod
[zwindler_windows:children]
zwindler_windows_prod
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;On sécurise l’accès au fichier des variables qui contiendra les comptes d’accès aux machines Windows avec l’utilitaire &lt;strong&gt;ansible-vault&lt;/strong&gt;. Le fichier ne pourra alors être lu/édité qu’avec le mot de passe.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;ansible-vault create group_vars/zwindler_windows.yml
New Vault password:
cat group_vars/zwindler_windows.yml
$ANSIBLE_VAULT;1.1;AES256
11111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111
1111
ansible-vault edit group_vars/zwindler_windows.yml
Vault password:
---
ansible_user: local_admin
ansible_password: xxxxxxxx
ansible_port: 5986
ansible_connection: winrm
#Decommenter si vous utiliser Python 2.7.9+ et des certificats WinRM autosignes (defaut)
#ansible_winrm_server_cert_validation: ignore
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Comme les serveurs qui ont été ajoutés dans le groupe &lt;em&gt;zwindler_windows_prod&lt;/em&gt; héritent des variables définies pour &lt;em&gt;zwindler_windows&lt;/em&gt; dans &lt;em&gt;group_vars/zwindler_windows.yml&lt;/em&gt;, Ansible les utilisera pour s’y connecter.&lt;/p&gt;
&lt;h4 id="méthode-2--utiliser-kinit-pour-la-connexion"&gt;Méthode 2 : utiliser kinit pour la connexion
&lt;/h4&gt;&lt;p&gt;Plutôt que d’utiliser un compte local et stocker le mot de passe dans des variables (de préférence chiffré donc) mais quand même devoir taper le mode de passe du vault à chaque fois, il est possible d’utiliser le binaire &lt;strong&gt;kinit&lt;/strong&gt; pour gérer l’authentification AD via un ticket Kerberos.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# kinit domain_admin@ZWINDLER.INFO
Password for domain_admin@ZWINDLER.INFO:
# klist
Ticket cache: KEYRING:persistent:0:krb_ccache_B82OOxI
Default principal: domain_admin@ZWINDLER.INFO
Valid starting Expires Service principal
23/08/2016 16:37:37 24/08/2016 02:37:37 krbtgt/ZWINDLER.INFO@ZWINDLER.INFO
renew until 30/08/2016 16:36:57
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Cependant ce n’est pas suffisant. Pour que l’authentification Kerberos soit tentée par Ansible, il est tout même nécessaire que les variables &lt;strong&gt;ansible_user&lt;/strong&gt;, &lt;strong&gt;ansible_port&lt;/strong&gt; et &lt;strong&gt;ansible_connection&lt;/strong&gt; soient renseignées (bizarrement&amp;hellip;).&lt;/p&gt;
&lt;p&gt;On doit dont créer un fichier de variable similaire à celui de la méthode précédente, mais sans pour autant nécessiter de le chiffrer puisqu’on ne stockera pas le mot de passe.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;vi group_vars/zwindler_windows.yml
---
ansible_user: auth@by.kerberos
ansible_port: 5986
ansible_connection: winrm
#Decommenter si vous utiliser Python 2.7.9+ et des certificats WinRM autosignes (defaut)
#ansible_winrm_server_cert_validation: ignore
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A noter, la valeur &lt;strong&gt;ansible_user&lt;/strong&gt; n’est pas du tout utilisée. C’est écrit sur le site d’Ansible :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ansible will first attempt Kerberos authentication. This method uses the principal you are authenticated to Kerberos with on the control machine and not ‘ansible_user’.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="prérequis-côté-client"&gt;Prérequis côté client
&lt;/h2&gt;&lt;p&gt;Pour pouvoir se connecter il est également nécessaire de réaliser des modifications sur les serveurs que l’on souhaite administrer avec Ansible.&lt;/p&gt;
&lt;p&gt;La commande &lt;strong&gt;win_ping&lt;/strong&gt; permet de vérifier la connectivité avec les serveurs Windows. Ici la commande échoue car l’exécution de commande PowerShell à distance nécessite l’autorisation explicite sur l’ensemble des serveurs concernés.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;ansible wsus03 -m win_ping --ask-vault-pass
Vault password:
wsus03 | UNREACHABLE! =&amp;gt; {
&amp;#34;changed&amp;#34;: false,
&amp;#34;msg&amp;#34;: &amp;#34;kerberos: 500 WinRMTransport. [Errno 111] Connection refused, ssl: 500 WinRMTransport. [Errno 111] Connection refused&amp;#34;,
&amp;#34;unreachable&amp;#34;: true
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;De plus, les serveurs dont le pare-feu est activés doivent laisser passer les connexions vers le port 5986 défini dans le fichier &lt;em&gt;group_vars/zwindler_windows.yml&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="powershell-3-pour-windows-2008"&gt;Powershell 3 (pour Windows 2008)
&lt;/h3&gt;&lt;p&gt;Sur les serveurs antérieurs à Windows 2012, seul Powershell 2 est installé et c’est Powershell 3 qu’il faut !&lt;/p&gt;
&lt;p&gt;Ansible fournit un script pour aider à l’installation si la machine a accès à Internet&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;powershell https://raw.githubusercontent.com/cchurch/ansible/devel/examples/scripts/upgrade_to_ps3.ps1
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="optionnel-ajouter-une-exception-au-pare-feu-pour-le-port-5986"&gt;(Optionnel) ajouter une exception au pare-feu pour le port 5986
&lt;/h3&gt;&lt;p&gt;Cette exception n’est plus nécessaire car le script Ansible qui suit l’ajoute de lui même. Cependant si vous souhaitez gérer cela vous même, voici quoi faire.&lt;/p&gt;
&lt;p&gt;Se connecter sur le serveur, puis lancer un prompt Powershell avec les droits administrateurs&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/ansible_windows_firewall1.png"
loading="lazy"
&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;netsh advfirewall firewall add rule name=&amp;#34;WinRM pour Ansible&amp;#34; dir=in localport=5986 protocol=TCP action=allow
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/09/ansible_windows_firewall2.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h3 id="autoriser-ansible-à-réaliser-des-actions-à-distance-winrm"&gt;Autoriser Ansible à réaliser des actions à distance (WinRM)
&lt;/h3&gt;&lt;p&gt;Récupérer le script disponible sur la branch « devel » et l’exécuter sur le serveur en question via un prompt Powershell administrateur.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/ansible/ansible-documentation/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1" target="_blank" rel="noopener"
&gt;github.com/ansible/ansible-documentation/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/09/ansible_windows_winrm.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Autoriser l’exécution de script Powershell si nécessaire.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Set-ExecutionPolicy Unrestricted
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="tests-et-troubleshooting"&gt;Tests et troubleshooting
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;ansible wsus03 -m win_ping --ask-vault-pass
Vault password:
wsus03 | SUCCESS =&amp;gt; {
&amp;#34;changed&amp;#34;: false,
&amp;#34;ping&amp;#34;: &amp;#34;pong&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Dans le cas où on souhaite réinitialiser les tickets kerberos pour valider le bon fonctionnement, on peut utiliser les commandes &lt;strong&gt;klist&lt;/strong&gt; et &lt;strong&gt;kdestroy&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;klist
Ticket cache: KEYRING:persistent:0:krb_ccache_B82OOxI
Default principal: domain_admin@ZWINDLER.INFO
Valid starting Expires Service principal
23/08/2016 16:38:45 24/08/2016 02:37:37 HTTP/wsus03.zwindler.info@ZWINDLER.INFO
renew until 30/08/2016 16:36:57
23/08/2016 16:37:37 24/08/2016 02:37:37 krbtgt/ZWINDLER.INFO@ZWINDLER.INFO
renew until 30/08/2016 16:36:57
kdestroy -A
klist
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Have fun !&lt;/p&gt;
&lt;h2 id="sources"&gt;Sources
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="http://www.it-connect.fr/debutez-avec-ansible-et-gerez-vos-serveurs-windows/" target="_blank" rel="noopener"
&gt;www.it-connect.fr/debutez-avec-ansible-et-gerez-vos-serveurs-windows/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.ansible.com/ansible/2.9/modules/list_of_windows_modules.html#windows-modules" target="_blank" rel="noopener"
&gt;docs.ansible.com/ansible/2.9/modules/list_of_windows_modules.html#windows-modules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.ansible.com/ansible/devel/os_guide/intro_windows.html" target="_blank" rel="noopener"
&gt;docs.ansible.com/ansible/devel/os_guide/intro_windows.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>[En bref] Désactiver IPv6 sur les Windows Server</title><link>https://blog.zwindler.fr/2015/11/14/reminder-desactiver-ipv6-sur-les-windows-server/</link><pubDate>Sat, 14 Nov 2015 11:30:12 +0000</pubDate><guid>https://blog.zwindler.fr/2015/11/14/reminder-desactiver-ipv6-sur-les-windows-server/</guid><description>&lt;img src="https://blog.zwindler.fr/2015/11/wikipedia_slash8.webp" alt="Featured image of post [En bref] Désactiver IPv6 sur les Windows Server" /&gt;&lt;p&gt;IPv6, c’est un standard qui devrait être correctement supporté aujourd’hui, et par tout le monde. On devrait même aller jusqu’à dire qu’on devrait &lt;a class="link" href="https://fr.wikipedia.org/wiki/%C3%89puisement_des_adresses_IPv4" target="_blank" rel="noopener"
&gt;arrêter d’utiliser IPv4 aujourd’hui&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Mais franchement, il faut le reconnaitre, attribuer des adresses sur 128 bits (donc 32 caractères héxa), c’est une vraie tannée pour les administrateurs systèmes (même si il y a des astuces pour réduire la taille des adresses) !&lt;/p&gt;
&lt;p&gt;Alors c’est vrai, c’est mal (car non pérenne), mais certains sont donc tentés de ne pas utiliser IPv6, voire même désactiver complément la fonctionnalité. &lt;strong&gt;&lt;em&gt;[Edit] Ça peut surtout bloquer certains composants et/ou provoquer des effets de bords difficilement décelables&amp;hellip; Autant vous le dire tout de suite, Microsoft n’approuve pas.[/Edit]&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="le-cas-windows-server"&gt;Le cas Windows Server
&lt;/h2&gt;&lt;p&gt;Même si vous n’utiliser pas IPv6, les serveurs ont souvent sur leur carte le double adressage. Ce n’est pas gênant tant que vous ne l’utilisez pas &amp;hellip; sauf pour les Windows Server en domaine Active Directory.&lt;/p&gt;
&lt;p&gt;Pour simplifier l’administration des DNS, les serveurs Windows dans un domaine sont automatiquement enregistrés dans le DNS fournit par les serveurs DC. Même les adresses IPv6. et des fois, ça provoque des effets de bord quand l’IPv6 répond en premier.&lt;/p&gt;
&lt;h2 id="comme-le-désactiver-"&gt;Comme le  désactiver ?
&lt;/h2&gt;&lt;p&gt;On peut donc honteusement vouloir désactiver IPv6, pour se simplifier la vie et éviter de polluer son DNS Active Directory. Mais &amp;hellip; décocher la case dans l’interface d’administration des connexions réseau &amp;hellip; ne sert à rien !&lt;/p&gt;
&lt;p&gt;La seule façon de le faire, c’est de modifier le registre avec regedit (en tant qu’administrateur bien entendu).&lt;/p&gt;
&lt;p&gt;Naviguer dans HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6\Parameters&lt;/p&gt;
&lt;p&gt;Avec un [clic droit], ajouter une nouvelle clé &lt;strong&gt;DisabledComponents&lt;/strong&gt; en type &lt;strong&gt;DWORD (32-bit)&lt;/strong&gt; et lui donner la valeur &lt;del&gt;0xFFFFFFFF (voir commentaires)&lt;/del&gt; 0xFF.&lt;/p&gt;
&lt;p&gt;[MAJ du 25/01]Ou alors vous pouvez créer un fichier « .reg » à exécuter sur la machine :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters]
&amp;#34;DisabledComponents&amp;#34;=dword:000000ff
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;[/MAJ]&lt;/p&gt;
&lt;p&gt;Au reboot, IPv6 sera totalement désactivé sur le serveur.&lt;/p&gt;
&lt;h2 id="aller-plus-loin"&gt;Aller plus loin
&lt;/h2&gt;&lt;p&gt;Si vous ne voulez pas le faire à la mimine, que vous avez un accès simple vers Internet et que vous n’avez pas peur de faire confiance aveuglément à Microsoft, le &lt;a class="link" href="https://support.microsoft.com/fr-fr/kb/929852" target="_blank" rel="noopener"
&gt;KB de Microsoft sur le sujet&lt;/a&gt; donne des boutons de paramétrages « one click » pour désactiver ou réactiver simplement IPv4 et/ou IPv6.&lt;/p&gt;</description></item></channel></rss>