J'ai un problème étrange lié aux tâches planifiées de base de Windows qui m'a déconcerté pendant quelques semaines maintenant. Ces tâches échouent à s'exécuter sur certains serveurs, mais fonctionnent sur d'autres qui fonctionnent sur différentes plates-formes matérielles/VMs. Initialement, c'était un problème que nous avons repéré profondément au sein de l'un de nos systèmes de production, mais j'ai réussi à le simplifier pour qu'il fonctionne avec des modifications minimales par rapport à la configuration standard. En fait, j'ai créé un fichier de commandes de 5 lignes pour apporter des modifications minimales à une installation propre afin de configurer cela, pour m'assurer que chaque machine de test est identique.
La configuration
- Toutes les machines exécutent des installations fraîches de Server 2016 avec les dernières mises à jour appliquées.
- Toutes les machines résident dans la même OU sur Active Directory et ont le même ensemble de règles appliquées
- Nous créons un utilisateur local avec un mot de passe répondant aux exigences de complexité fixées par le domaine, et nous le rendons membre du groupe Administrateurs locaux
- Nous accordons à ce compte utilisateur les droits de sécurité locaux 'Ouvrir une session en mode batch' et 'Ouvrir une session en tant que service'.
- Planifier une tâche de base, s'exécutant en tant qu'utilisateur, pour ouvrir 'notepad.exe'.
- La tâche doit être configurée pour s'exécuter que l'utilisateur soit connecté ou non, et le mot de passe doit être enregistré dans la tâche.
- Toutes les machines sont images à partir de la même séquence de tâches, par le même utilisateur Administrateur.
- Toutes les tâches sont créées par le même utilisateur administrateur.
Le matériel qui fonctionne
Nous avons construit des VM sur VMware, XenServer, et sur des serveurs physiques HP et d'autres modèles de serveurs Dell (Poweredge R730, R720, R430). La plupart d'entre elles utilisent des disques SAS à rotation de 10k/15k, bien qu'un des serveurs HP que j'ai construit utilise des SSD SATA en RAID 10 à titre de test.
Le matériel qui ne fonctionne pas
Nos nouveaux serveurs posent cependant problème. Il s'agit de nouveaux Dell Poweredge R540s. Ils disposent de contrôleurs RAID 1 BOSS intégrés (pratiquement des SSD RAID 1 M.2), avec des SSD SAS comme stockage rapide supplémentaire via un contrôleur PERC.
Le problème
Avec le matériel plus ancien, vous pouvez voir la tâche planifiée fonctionner si vous la déclenchez manuellement, bien entendu vous ne voyez pas notepad s'ouvrir si elle s'exécute en tant qu'un autre utilisateur.
Cependant, sur les Poweredge R540s, la tâche échoue à démarrer, donnant le code d'erreur 2147943726 (0x8007052e). Je crois qu'il s'agit d'une erreur de type 'nom d'utilisateur inconnu ou mot de passe incorrect', malgré des identifiants corrects, et le compte utilisateur ayant été créé récemment.
Ici, vous pouvez voir l'historique de la tâche montrant l'échec de la tâche
La tâche échoue à s'exécuter manuellement, et l'événement de sécurité suivant est enregistré dans le Journal des événements Sécurité:
Nom du journal : Sécurité
Source : Microsoft-Windows-Security-Auditing
Date : 12/10/2018 17:30:00
ID de l'événement : 4625
Catégorie de la tâche : Ouverture de session
Niveau : Information
Mots clés : Échec de l'audit
Utilisateur : N/A
Ordinateur :
Description :
Un compte n’a pas réussi à se connecter.
Objet :
ID de sécurité : SYSTÈME
Nom du compte : $
Domaine du compte :
ID de connexion : 0x3E7
Type de connexion : 4
Compte pour lequel la connexion a échoué :
ID de sécurité : SID NULL
Nom du compte : @@CyBAAA.....
Domaine du compte :
Informations sur l'échec :
Raison de l'échec : Nom d’utilisateur inconnu ou mot de passe incorrect.
Statut : 0xC000006D
Sous-Statut : 0xC0000064
Informations sur le processus :
ID du processus appelant : 0x590
Nom du processus appelant : C:\Windows\System32\svchost.exe
Informations sur le réseau :
Nom du poste de travail :
Adresse réseau source : -
Port source : -
Informations détaillées sur l'authentification :
Processus de connexion : Advapi
Package d'authentification : Négocier
Services transmis : -
Nom du package (NTLM uniquement) : -
Longueur de la clé : 0
Hier, j'ai reconstruit 2x R540s, 2x VM et 1x serveur HP, et seuls les R540s ont eu ce défaut. C'est prévisible - nous avons essayé de réimager toutes nos machines de test et à chaque fois le résultat est le même.
Autres résultats pertinents
Je peux faire fonctionner les R540s correctement s'ils sont directement intégrés dans l'OU 'ordinateurs' sur AD, ce qui signifie qu'ils ne reçoivent pas notre politique de Sécurité Baseline. Les tâches s'installent et s'exécutent parfaitement. Si je déplace ensuite l'objet de l'ordinateur dans la même OU que toutes les autres machines avec lesquelles nous faisons des tests, les tâches ne fonctionnent plus. Replacer l'objet hors de l'OU dans l'OU 'ordinateurs' ne fait pas fonctionner les tâches à nouveau. Manifestement, quelque chose est modifié, mais je ne vois pas quoi, et je ne sais pas pourquoi cela n'affecterait que les R540s de cette manière et pas les VMs ou d'autres modèles de matériel.
Nous avons exporté et comparé la politique de sécurité locale sur les machines fonctionnelles et non fonctionnelles pour rechercher des différences. Les différences qui existent sont mineures, et lorsque la série de règles de sécurité fonctionnelles est importée sur une machine défectueuse, elle reste défectueuse. De même, l'importation de la série de règles de sécurité d'une machine défectueuse sur une machine fonctionnelle ne casse pas la machine fonctionnelle.
Si je modifie la tâche planifiée de manière à cocher 'Ne pas stocker le mot de passe', la tâche s'exécute, mais cela ne fonctionnera pas pour nous en production car la tâche nécessite un accès à des ressources non locales.
Si je modifie la tâche planifiée pour qu'elle s'exécute dans le contexte de mon compte administrateur de domaine (en me donnant les droits 'Ouvrir une session en mode batch' et 'Ouvrir une session en tant que service'), elle fonctionne même si 'Ne pas stocker le mot de passe' n'est pas coché. Donc, quoi que ce soit qui casse, semble être lié uniquement aux comptes utilisateur locaux.
D'autres choses que j'ai essayées et qui n'ont pas fait de différence:
- Tâche exécutée avec les privilèges les plus élevés
- Utilisateur local configuré avec 'le mot de passe n'expire pas' activé/désactivé
- Force et longueur du mot de passe de l'utilisateur local augmentée/diminuée
- Je suis passé du type de tâche 'Vista/2008 (par défaut)' à '2016' sans changement.
- J'ai vu une suggestion de passer de 'ne pas démarrer une nouvelle instance' dans la configuration de la tâche, mais cela n'a pas aidé.
- J'ai construit une autre machine physique avec un stockage SSD rapide au cas où les machines seraient imagées trop rapidement, et qu'il y aurait un genre de problème de concurrence causé par un accès plus rapide au disque sur les R540s. Je ne pense pas que ce soit le cas.
- Les pilotes, le micrologiciel et le BIOS sont tous à jour sur les R540s à partir d'hier.
La conclusion
Je pense que quelque chose doit être modifié par notre stratégie de groupe qui empêche cela de fonctionner - probablement la sécurité baseline d'une manière ou d'une autre. Ce que je suis totalement incapable d'expliquer, cependant, c'est pourquoi cela semble ne casser que le fonctionnement des tâches planifiées sur un certain modèle de matériel, qui devrait avoir des configurations identiques aux machines fonctionnelles créées en même temps, de la même manière. Je ne vois pas ce qui pourrait causer cela.
Est-ce que quelqu'un sait si les tâches planifiées ou l'authentification de base utilisent de quelque manière les fonctionnalités matérielles? Le TPM a-t-il quelque chose à voir avec cela? Y a-t-il autre chose que je puisse faire pour remonter à la source de ce qui fait échouer le compte utilisateur au moment où la tâche s'exécute? J'ai épuisé mes idées.
Aussi, au cas où quelqu'un poserait la question, j'ai essayé de faire un 'runas' à partir de l'invite de commandes pour prouver que le compte utilisateur local que j'ai créé fonctionne et que le mot de passe que j'ai utilisé est correct.
Merci!
0 votes
Est-ce que le nom d'ordinateur\nom d'utilisateur dans l'entrée du journal d'événements de sécurité pour l'échec de connexion est correct?
0 votes
Salut @GregAskew, merci d'avoir répondu. Le journal de sécurité montre un 'Échec d'audit' pour la connexion à l'heure indiquée, avec un SID Null faisant référence plutôt qu'au compte spécifié dans la tâche. Je vais modifier ma question initiale avec les détails.
1 votes
Le préfixe "@@" est généralement associé aux comptes qui sont des informations d'identification de carte à puce. Le sous-statut 0xC0000064 signifie "nom d'utilisateur inexistant". Si vous exportez la tâche dans un fichier Xml, contient-il les informations d'identification correctes ? Comparez également avec la sortie de
schtasks.exe /v /fo CSV
.0 votes
Quel est le résultat de la commande :
REG QUERY "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v ScForceOption
0 votes
La sortie CSV de la tâche planifiée est identique lors de la comparaison de la sortie d'une machine fonctionnelle avec une machine non fonctionnelle (à l'exception du nom d'hôte). La sortie XML de la tâche exportée est la même, à l'exception du timestamp de création de la tâche auquel je m'attendais, ainsi que de la valeur SID de l'UserID. Je me demandais quelle était la signification du préfixe '@@', donc merci pour avoir expliqué celui-ci.
0 votes
La valeur SID de l'utilisateur dans le fichier Xml correspond-elle au SID du compte local pour la tâche?
0 votes
ScForceOption est actuellement à 0 sur toutes les machines. Le SID de l'utilisateur répertorié dans la tâche XML correspond à ce que je peux voir dans le registre à
HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList
. Je tiens à préciser que l'entrée dans 'profilelist' n'est pas créée tant que je n'exécute pas manuellement 'runas' pour lancer cmd.exe en tant qu'utilisateur de test. Peu importe si le profil existe ou non lors de l'exécution de la tâche.0 votes
Pas sûr pourquoi il ne prend pas le bon compte. Normalement, le SID apparaît dans le Xml si quelque chose a changé avec le compte, comme s'il avait été renommé, mais cela devrait toujours fonctionner. Vous voudrez peut-être essayer de remplacer le SID par le nom d'ordinateur\nom d'utilisateur, et vous assurer que l'élément LogonType contient le mot de passe.
0 votes
Si je change l'ID d'utilisateur dans le XML de la tâche de SID en nomordinateur\nomutilisateur et que je le réimporte, c'est toujours pareil. Lorsque je réexporte cette nouvelle tâche en tant que fichier XML, elle est revenue au SID.
0 votes
J'ai vérifié le matériel R540 problématique et je ne vois aucun signe de lecteurs de cartes à puce ou biométriques installés. Rien n'apparaît dans le gestionnaire de périphériques, et les services de cartes à puce sont tous désactivés comme ils le seraient sur un autre type de serveur. Je ne vois aucune différence dans la liste
HKLM\Software\Microsoft\Windows\CurrentVersion\Authentication\CurrentProviders
sur un serveur défectueux par rapport à un autre qui fonctionne. Avez-vous une idée pourquoi la tâche planifiée tenterait de s'exécuter en utilisant des informations d'identification de carte à puce alors que ce matériel n'existe évidemment pas? Y a-t-il autre chose que je puisse vérifier?1 votes
Il se peut que ce ne soit pas le cas, je remarquais simplement que @@ est parfois associé à un compte de carte à puce. Ce que vous pouvez faire, c'est provisionner un serveur dans le conteneur Ordinateurs, puis ajouter sélectivement les paramètres de sécurité/politique jusqu'à ce que le problème se produise. Par exemple, ajoutez la moitié des paramètres, et s'il ne se produit pas, ajoutez encore 25%, etc. jusqu'à ce que vous identifiiez le paramètre problématique.
0 votes
C'est une piste plausible, je pense. S'il y avait une sorte de différence matérielle qui permettait un type de biométrie, cela expliquerait pourquoi cela semble uniquement poser problème sur les Dell R540 et nulle part ailleurs. En creusant davantage, j'ai remarqué que le service "Biometric" sur les R540 démarre et s'exécute normalement, selon le journal d'événements des applications et des services. Cependant, sur tous les autres modèles/VM, il échoue à démarrer correctement pour une raison quelconque. J'ai actuellement quelques machines en cours de reconstruction, et je vais essayer d'appliquer des sous-ensembles de politiques pour voir si je peux affiner davantage mes recherches. Merci pour votre aide!
0 votes
J'ai maintenant réduit un peu plus la recherche. Il semble que les serveurs R540 étaient les seuls à avoir le Secure Boot activé dans le BIOS. Les autres anciens serveurs Dell ne l'avaient pas activé initialement, et les machines virtuelles ne le prenaient pas en charge. Une de nos politiques de groupe s'appliquait aux machines avec Secure Boot activé, mais échouait en réalité à s'appliquer sur les machines qui 'fonctionnaient'. Ainsi, les ordinateurs en panne fonctionnent 'comme prévu', et ceux qui fonctionnent sont 'en panne'. Typique. Quoi qu'il en soit, nous travaillons sur ce dilemme maintenant, et espérons trouver exactement quel élément nous pose problème.
0 votes
Ceci est un contenu tiers, à 99,99% certain. Vérifiez pour AV, garde de l'appareil, orchestrateur de politique, etc.