Troubleshoot KMS activation

Pour rappel, une fois l’installation de l’hôte KMS effectué, il est nécessaire que 25 postes clients ou 5 postes serveurs le contactent pour qu’il commence à délivrer les licences pour des OS et 5 clients ou serveurs pour la suite Office.

Une clé 2016 est capable d’activer tous les OS précédents.

Toutefois, une clé Office 2010 n’activera que du 2010 et une 2013 que du 2013.

Il est donc nécessaire d’avoir 5 client pour office 2010 et 5 clients pour office 2013 pour pouvoir activer les 2 éditions alors que ce n’est pas le cas pour Windows.

Quelque commandes utiles pour faire du troubleshoot avec un hôte KMS

Pour avoir un affichage détaillé des licences

 slmgr /dlv all

2017-05-22_14h13_47.png

Pour avoir un affichage de la clé actuellement installée

 slmgr /dli

2017-05-22_14h14_29.png

Pour modifier une clé

slmgr /ipk cle

2017-08-10_15h50_41.png

Pour activer une clé

slmgr /ato

2017-08-10_15h50_22.png

Vérification des entrées DNS de serveur KMS

nslookup -type=srv _vlmcs._tcp
Publicités

Licences OEM MAK et KMS

Il existe différent type de licences :

  • OEM
  • MAK
  • KMS

Les licences OEM sont les licences qui sont rattachés au matériel sur lequel la licence est installée. C’est ce type de licence qui est présent lorsqu’on achète un pc dans le commerce. La licence n’est ni transférable ni utilisable sur un autre pc ou sur le même en cas de modification matérielle. L’empreinte de la licence est basé sur un certificat présent dans l’UEFI.

Les licences de types MAK présentent l’avantage de pouvoir être installées sur plusieurs PC. Dans le portail MSVLS il y a le nombre d’activation disponible par licence. Attention, si l’on formate puis installe l’OS sur la même machine, une nouvelle activation a lieu et donc le compteur d’activation est incrémenté.L’activation peut être réalisée via internet, téléphone ou VAMT.

Les licences de type KMS présentent l’avantage non seulement de pouvoir être installées sur plusieurs PC mais également d’avoir un nombre d’activation illimité. Cependant, lors de l’utilisation de clé KMS, il est nécessaire que le client puisse contacter le serveur KMS tous les 180 jours maximum. Le client va tenter de joindre un serveur tous les 7 jours, si il n’y parvient pas toutes les 2h puis une fois qu’il y parvient il retente 7 jours après.

2017-05-22_14h06_46.png

AD sites et services

Ce topic va permettre de comprendre l’intégralité de cette console avec les nombreuses options qu’elle comprend.

Pour rappel, il est recommandé que tous les DC puissent communiquer avec tous les DC.

Les réseaux

On déclare ici tous les réseaux utilisés par les clients.
Si jamais on déclare un réseau 10.0.0.0/8 pour le site Site1 et 10.1.0.0/16 pour le site Site2 alors tous les clients qui appartiennent à 10.1.0.0/16 iront s’authentifier sur les DC de Site2.

2017-05-23_13h45_43.png

2017-05-23_13h47_44.png

Les liens de site

On crée des liens de site pour définir l’intervalle de réplication et le coût que l’on associe au lien. Il est recommandé d’avoir une topologie en étoile. Le cout est utilisé en cas d’indisponibilité de tous les DC d’un site pour que les clients de ce site puissent contacter un DC d’un autre site. Le client calculera alors parmi toutes les possibilités de site qu’il à le chemin qui présente le cout le plus faible. Il est possible de définir un intervalle en minutes de réplication de 15min minimum à un multiple de 15. On peut également mettre en place un système de notification qui permet en cas de modification sur un DC de notifier immédiatement les autres qui contiennent un lien de site qu’une modification a eu lieu et qu’ils peuvent venir récupérer l’information. Pour cela, il faut renseigner la valeur 1 de l’attribut option sur le site link sous condition que les objets de connexion aient bien été généré automatiquement (via KCC) et non manuellement. La valeur 5 peut également être utilise pour que les données ne soient pas compressées avant la réplication.

2017-05-23_14h11_53.png

2017-05-23_14h22_59.png

 

 

 

 

 

 

 

 

Au niveau des propriété d’IP, on à la case bridge all site link qui permet en cas d’abscence de lien de site entre 2 sites d’activer la transitivité. Si tous les DC sont routés, il faut le laisser coché d’autant plus que cela affecte le DFS.

2017-05-24_09h14_08.png

Tête de pont

Lors de la réplication inter-site, par défaut il n’y a pas de serveur de tête de pont donc un DC d’un site contactera un DC d’un autre site de manière aléatoire. Il est possible d’en définir un de façon à se que toutes les réplication intersites passent par ce DC puis qu’il notifie ensuite les autres DC de son site comme quoi une modification a bien eu lieu. Pour cela, il faut aller sur les propriétés du serveur

2017-05-24_09h17_44.png

Catalogue Global

Aujourd’hui, il est recommandé d’avoir tous les DC catalogue global car les liaison internet sont de bien meilleure qualité et d’un débit suffisant. Pour cela, il faut cocher la case ci dessous dans les propriétées du ntds setting du DC.

2017-05-24_09h19_35.png

 

 

 

 

 

AD DC locator et enregistrement SRV

Afin de pouvoir contacter un des DC appartenant à son site, le client effectue une requête ldap et DNS lors de sa jonction au domaine. Les fois suivantes, il commencera à l’étape 6 directement sauf si le client change de site auquel cas, le DC lui dire qu’il faut recommencer le processus pour se voir assigner le bon site.

DC Locator

  1. Lorsque le client démarre, il effectue une requête ldap
    _ldap._tcp._msdcs
  2. Le retour lui donne la liste de tous les DC du domaine
  3. Il effectue un ping ldap qui lui permet de connaitre quel est son site d’appartenance pour contacter ensuite un des DC en faisant parti.
  4. Il enregistre la valeur dans la clé
    Hklm\system\ccset\services\netlogon\parameters\dynamicsitename
    
  5. Une requête DNS vers _ldap._tcp._nomdusite._msdcs est effectuée
  6. Le client a maintenant la liste de tous les DC de son site.

Enregistrement SRV

Pour les enregistrement de type SRV, il est possible d’utiliser la notion de poids et priorité.

Lorsqu’on utilise les priorité, les enregistrement qui possèdent la priorité la plus faible sont ceux qui seront utilisés. Les autres ne seront utilisés qu’en cas d’indisponibilité des premiers. C’est donc un système exclusif. Le poids permet de dispatcher de façon à faire du round robin.

Ex :
Si on a 2 dc avec une priorité à 0 et 2 avec une priorité à 10 on ira toujours contacter ceux à 0.
Si on a 2 dc avec une priorité équivalente mais dc1 à un poids de 20 et dc2 un poids de 30 sur 50 requêtes il y en aura 20 pour dc1 et 30 pour dc2.

Protection contre WannaCrypt

Afin de se protéger contre cette nouvelle menace, il est indispensable d’avoir un système à jour. Le correctif officiel par microsoft est le MS17-10 mais étant donné que les mises à jours sont cumulatives, il est inclus dans le dernier cumulative update de mai

Windows 10 1703 :

http://www.catalog.update.microsoft.com/Search.aspx?q=KB4016871

Windows 10 1607/2016 :

http://www.catalog.update.microsoft.com/Search.aspx?q=KB4019472

Windows 10 1511 :

http://www.catalog.update.microsoft.com/Search.aspx?q=KB4019473

Windows 10 1507 :

http://www.catalog.update.microsoft.com/Search.aspx?q=KB4019474

Windows 8.1/2012r2 :

http://www.catalog.update.microsoft.com/Search.aspx?q=KB4019215

Windows 8 :

http://www.catalog.update.microsoft.com/Search.aspx?q=KB4019216

Windows 7/2008r2 :

http://www.catalog.update.microsoft.com/Search.aspx?q=KB4019264

Windows XP/Vista/8/2003/2008 :

http://www.catalog.update.microsoft.com/Search.aspx?q=kb4012598

AD Les rôles FSMO et leur fonction

Dans l’AD, il existe 5 rôles FSMO:

  • Maitre de schèma
  • Maitre d’attribution des noms de domaine
  • Maitre RID
  • Emulateur PDC
  • Maitre d’infrastructure

Le maitre de schèma et le maitre d’attribution des noms de domaines sont des rôles qui sont uniques dans une forêt alors que les 3 autres sont présents dans chaque domaine.

Il est recommandé de mettre tous les rôles FSMO sur le serveur le plus récent.

Lorsqu’un DC démarre, il établie une synchronisation initiale afin de répliquer tous les changements qui ont été effectués depuis son arrêt et s’assurer que la liste des propriétaires des roles FSMO est à jour en lisant l’attribut fsmoroleowner.

Si un serveur hébergeant un ou plusieurs rôle FSMO est indisponible pendant une longue période, on peut alors récupérer les rôles qu’il hébergeait via la commande ci dessous mais on ne doit plus remettre en ligne l’ancien DC.

Move-ADDirectoryServerOperationMasterRole -Identity "Target-DC" -OperationMasterRole SchemaMaster,RIDMaster,InfrastructureMaster,DomainNamingMaster,PDCEmulator –Force

Le maître de schéma

Il stocke toutes les classes et attributs de classes que l’on peut définir pour chaque objet. C’est le squelette de l’AD. Il peut être visible en enregistrant la dll schmmgmt via la commande

regsvr32 schmmgmt.dll

Puis ouvrant une MMC et charger la console schèma.

Pour connaitre la version du schèma, on peut utiliser la commande suivante

Get-ADObject (Get-ADRootDSE).schemaNamingContext -Property objectVersion

2017-05-09_17h32_09.png

87 = Windows Server 2012 R2
69 = Windows Server 2012 R2
56 = Windows Server 2012
47 = Windows Server 2008 R2
44 = Windows Server 2008
31 = Windows Server 2003 R2
30 = Windows Server 2003

Dans ADSI edit on peut voir l’attribut fsmoroleowner dans la partition de schéma via les propriétés du container schéma

2017-05-10_22h27_36.png

Si le role est injoignable, il est impossible de mettre à jour le schéma

Le maitre d’attribution des noms de domaine

Il permet de pouvoir gérer l’ajout ou la suppression de domaine au sein de la forêt. Il met à jour les crossref de la forêt qui contiennent les informations sur les noms de domaines déjà présent afin de s’assurer de leur unicité.

On peut alors se connecter via ADSI edit sur la partition de configuration pour voir la liste

2017-05-09_17h35_58.png

On peut aussi voir ces informations via ntdsutil

ntdsutil
activate instance ntds
partition management
connections
connect to server dc1
quit
list

2017-05-09_17h46_31.png

Dans ADSI edit on peut voir l’attribut fsmoroleowner dans la partition de configuration via les propriétés du container Partitions dans configuration

2017-05-10_22h29_41.png

Si le rôle est injoignable, il est impossible d’ajouter ou supprimer un nouveau domaine (AD ou DNS).

Maitre RID

Il distribue un pool de 500 identifiants à chaque DC pour la création d’objets avec un SID unique. Il est possible d’augmenter la taille du pool distribué à 15 000 maximum si l’OS est 2012 en modifiant la clé de registre suivante

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\RID Values\RID Block Size

Une fois que 50% du pool est utilisé, un nouveau pool est fourni. Si jamais le RID n’est pas joignable, on a alors un event lorsque 90% du pool est délivré.En élevant le niveau fonctionnel à 2012 on peut alors avoir une limite atteignant 2 milliards et non plus 1 identificateurs RID.

Pour connaitre l’état du pool RID global et sur un DC on peut effectuer la commande

 dcdiag /test:ridmanager /v

On parle bien de SID et non pas de GUID. Un SID existe pour chaque objet pour lequel on peut positionner des ACL alors qu’un GUID existe pour toutes les objets de la forêt.

Pour rappel, voici comment est composé un SID

S-1-5-21-1689113290-2860478624-2481122698-500

NT Authority
Identifiant du domaine
RID

Il y a des RID réservés

500 – Administrator
501 – Guest
502 – krbtgt
512 – Domain Admins
513 – Domain Users
514 – Domain Guests
515 – Domain Computers
516 – Domain Controllers
544 – Built-in Administrators
545 – Built-in Users
546 – Built-in Guests

Dans ADSI edit on peut voir l’attribut fsmoroleowner dans la partition de domaine via les propriétés de l’objet RID Manager$ dans le container system

2017-05-10_22h30_47.png

Si le rôle est injoignable et que le pool est épuisé par un DC, il ne pourra plus créer de nouveaux objets.

Emulateur PDC

Il est en charge :
changements de mot de passe et vérouillage des comptes
source de temps qui fait autorité
clonage des DC

Un enregistrement SRV est présent dans le DNS pour permettre à tous les membres du domaine de le localiser à l’emplacement suivant

_ldap._tcp.pdc._msdcs.Nomdedomaine 

Lorsqu’on ouvre une GPMC, c’est le serveur par défaut.

Tous les DC synchronisent leur horloge sur le PDC afin d’assurer que tous les membres de la forêt possèdent la même heure.
Lorsqu’on souhaite procéder au clonage d’un DC, il doit être en ligne et joignable par le DC cloné.
Lorsqu’un mot de passe est modifié, le DC qui a authentifié le client va prévenir le PDC pour qu’il mette à jour le mot de passe dans sa base. Si jamais un utilisateur se connecte sur un autre DC qui n’a pas encore répliqué le changement de mot de passe, vu qu’il n’y aura pas de correspondance entre le mot de passe saisi et celui présent dans la base du DC, le DC transfère la demande au PDC qui annoncera que le mot de passe a été changé et que celui saisie est correct. Le DC mettra alors à jour le nouveau mot de passe dans sa base immédiatement indépendament du cycle de réplication.

Dans ADSI edit on peut voir l’attribut fsmoroleowner dans la partition de domaine via les propriétés du container dc=domain,dc=com

2017-05-10_22h33_55.png

Si jamais l’émulateur PDC n’est pas en ligne on peut avoir des problèmes de mises à jour de mot de passe, de synchronisation horraire, d’ajout de racine DFS, de clonnage de DC.

Maitre d’infrastructure

Il permet de faire la relation entre un groupe du domaine et ses membres d’un domaine différent. En effet, si le DC n’est pas GC la base ntds.dit n’est pas capable de récupérer l’information et va donc stocker le DN, sid et guid de cet objet fantôme. Lorsque des modifications sont apportées sur cet objets, c’est le maître d’infrastructure qui est chargé de mettre à jour les modifications.

Le rôle maître d’infrastructure ne peut pas être mis sur un DC qui est également catalogue global carsi le catalogue global est présent, il ne peut pas créer d’objet fantômes…

Il existe cependant des exceptions à cette incompatibilité :

  • Dans une forêt monodomaine
  • Dans une forêt multidomaines si tous les DC sont GC

Aujourd’hui, avec la bande passante des liaisons WAN, il est recommandé d’avoir tous les DC GC. De ce fait, le rôle maitre d’infrastructure n’a plus d’importance.

Si la corbeille est activé, chaque DC est responsable de la mise à jour des références des objets et donc le maître d’infrastructure peut être positionné sur n’importe quel DC.

Dans ADSI edit on peut voir l’attribut fsmoroleowner dans la partition de domaine via les propriétés de l’objet infrastructure dans le container dc=domain,dc=com

2017-05-10_22h36_14.png

 

Si le rôle maitre infrastructure n’est pas disponible, les mises à jours des objets sont différés jusqu’à ce qu’il redevienne disponible.

 

 

AD mise à jour du schéma

Lors de la mise en place de certains service de type Exchange, SCCM ou bien d’une migration AD vers un OS plus récent, il est nécessaire de mettre à jour son schéma AD.

Cas d’une mise à jour de schéma

Il n’est plus nécessaire d’isoler le maitre de schéma et désactiver les réplications aujourd’hui. Microsoft recommande plutôt d’utiliser son PRA dans un environnement isolé pour pouvoir tester que la mise à jour du schéma ne provoque pas de problèmes et n’est pas incompatible avec les applications utilisées.

Une fois la mise à jour du schéma, pour s’assurer qu’elle est opérationnelle la lecture des fichiers de logs n’est pas suffisante. Il faut également instancier un objet en modifiant un des nouveaux attributs crées.

Cas d’ajout d’un attribut personnalisé

Lorsqu’on désire ajouter un attribut personnalisé, voici la marche à suivre :

  1. Enregistrer la dll permetant d’accéder à la console du schéma
    regsvr32 schmgmt.dll

    2017-05-08_20h44_36.png

  2. On ouvre la console MMC de schéma
    2017-05-08_20h46_16.png
  3. Création d’un nouvel attribut avec un OID unique. Pour cela soit on le paye via des société qui proposent ce genre de service, soit on utilise le script disponible ici sans garantie https://gallery.technet.microsoft.com/scriptcenter/56b78004-40d0-41cf-b95e-6e795b2e8a06
    contenant le code présent en fin d’article2017-05-08_20h58_41.png
  4. Script pour la génération aléatoire d’un OID
    ' oidgen.vbs 
     
    ' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED  
    ' OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR  
    ' FITNESS FOR A PARTICULAR PURPOSE. 
    ' 
    ' Copyright (c) Microsoft Corporation. All rights reserved 
    ' 
    ' This script is not supported under any Microsoft standard support program or service.  
    ' The script is provided AS IS without warranty of any kind. Microsoft further disclaims all 
    ' implied warranties including, without limitation, any implied warranties of merchantability 
    ' or of fitness for a particular purpose. The entire risk arising out of the use or performance 
    ' of the scripts and documentation remains with you. In no event shall Microsoft, its authors, 
    ' or anyone else involved in the creation, production, or delivery of the script be liable for  
    ' any damages whatsoever (including, without limitation, damages for loss of business profits,  
    ' business interruption, loss of business information, or other pecuniary loss) arising out of  
    ' the use of or inability to use the script or documentation, even if Microsoft has been advised  
    ' of the possibility of such damages. 
    ' ---------------------------------------------------------------------- 
    Function GenerateOID() 
        'Initializing Variables 
        Dim guidString, oidPrefix 
        Dim guidPart0, guidPart1, guidPart2, guidPart3, guidPart4, guidPart5, guidPart6 
        Dim oidPart0, oidPart1, oidPart2, oidPart3, oidPart4, oidPart5, oidPart6 
        On Error Resume Next 
        'Generate GUID 
        Set TypeLib = CreateObject("Scriptlet.TypeLib") 
        guidString = TypeLib.Guid 
        'If no network card is available on the machine then generating GUID can result with an error. 
        If Err.Number  0 Then 
            Wscript.Echo "ERROR: Guid could not be generated, please ensure machine has a network card." 
            Err.Clear 
            WScript.Quit 
        End If 
        'Stop Error Resume Next 
        On Error GoTo 0 
        'The Microsoft OID Prefix used for the automated OID Generator 
        oidPrefix = "1.2.840.113556.1.8000.2554" 
        'Split GUID into 6 hexadecimal numbers 
        guidPart0 = Trim(Mid(guidString, 24)) 
        guidPart1 = Trim(Mid(guidString, 64)) 
        guidPart2 = Trim(Mid(guidString, 114)) 
        guidPart3 = Trim(Mid(guidString, 164)) 
        guidPart4 = Trim(Mid(guidString, 214)) 
        guidPart5 = Trim(Mid(guidString, 266)) 
        guidPart6 = Trim(Mid(guidString, 326)) 
        'Convert the hexadecimal to decimal 
        oidPart0 = CLng("&H" & guidPart0) 
        oidPart1 = CLng("&H" & guidPart1) 
        oidPart2 = CLng("&H" & guidPart2) 
        oidPart3 = CLng("&H" & guidPart3) 
        oidPart4 = CLng("&H" & guidPart4) 
        oidPart5 = CLng("&H" & guidPart5) 
        oidPart6 = CLng("&H" & guidPart6) 
        'Concatenate all the generated OIDs together with the assigned Microsoft prefix and return 
        GenerateOID = oidPrefix & "." & oidPart0 & "." & oidPart1 & "." & oidPart2 & "." & oidPart3 & _ 
            "." & oidPart4 & "." & oidPart5 & "." & oidPart6 
    End Function 
    'Output the resulted OID with best practice info 
    Wscript.Echo "Your root OID is: " & VBCRLF & GenerateOID & VBCRLF & VBCRLF & VBCRLF & _ 
        "This prefix should be used to name your schema attributes and classes. For example: " & _ 
        "if your prefix is ""Microsoft"", you should name schema elements like ""microsoft-Employee-ShoeSize"". " & _ 
        "For more information on the prefix, view the Schema Naming Rules in the server " & _  
        "Application Specification (http://www.microsoft.com/windowsserver2003/partners/isvs/appspec.mspx)." & _ 
        VBCRLF & VBCRLF & _ 
        "You can create subsequent OIDs for new schema classes and attributes by appending a .X to the OID where X may " & _ 
        "be any number that you choose.  A common schema extension scheme generally uses the following structure:" & VBCRLF & _ 
        "If your assigned OID was: 1.2.840.113556.1.8000.2554.999999" & VBCRLF & VBCRLF & _ 
        "then classes could be under: 1.2.840.113556.1.8000.2554.999999.1 " & VBCRLF & _  
        "which makes the first class OID: 1.2.840.113556.1.8000.2554.999999.1.1" & VBCRLF & _ 
        "the second class OID: 1.2.840.113556.1.8000.2554.999999.1.2     etc..." & VBCRLF & VBCRLF & _ 
        "Using this example attributes could be under: 1.2.840.113556.1.8000.2554.999999.2 " & VBCRLF & _ 
        "which makes the first attribute OID: 1.2.840.113556.1.8000.2554.999999.2.1 " & VBCRLF & _ 
        "the second attribute OID: 1.2.840.113556.1.8000.2554.999999.2.2     etc..." & VBCRLF & VBCRLF & _ 
         "Here are some other useful links regarding AD schema:" & VBCRLF & _ 
        "Understanding AD Schema" & VBCRLF & _ 
        "http://technet2.microsoft.com/WindowsServer/en/Library/b7b5b74f-e6df-42f6-a928-e52979a512011033.mspx " & _ 
        VBCRLF & VBCRLF & _ 
        "Developer documentation on AD Schema:" & VBCRLF & _ 
        "http://msdn2.microsoft.com/en-us/library/ms675085.aspx " & VBCRLF & VBCRLF & _ 
        "Extending the Schema" & VBCRLF & _ 
        "http://msdn2.microsoft.com/en-us/library/ms676900.aspx " & VBCRLF & VBCRLF & _ 
        "Step-by-Step Guide to Using Active Directory Schema and Display Specifiers " & VBCRLF & _ 
        "http://www.microsoft.com/technet/prodtechnol/windows2000serv/technologies/activedirectory/howto/adschema.mspx " & _ 
        VBCRLF & VBCRLF & _ 
        "Troubleshooting AD Schema " & VBCR & _ 
        "http://technet2.microsoft.com/WindowsServer/en/Library/6008f7bf-80de-4fc0-ae3e-51eda0d7ab651033.mspx  " & _ 
        VBCRLF & VBCRLF