Auteur de questions
Start-Process avec Credentials admin de domaine ne fonctionne pas

Question
-
Bonjour,
Je rencontre un petit souci.
Je fais actuellement un script de afin de créer de utilisateurs Active Directory. Ce script est exécuté depuis un formulaire PHP dans lequel 2 champs permettent de mettre son nom d'utilisateur et son mot de passe d'un compte admin du domaine.
Ces identifiants sont ensuite récupérés en PowerShell afin de créer un process avec des accès admin du domaine pour exécuter tout le script. J'ai besoin de ça car le script se connecte à d'autres machines à distance, fait des modifs... Bref, pas le choix.
Pour cela, j'utilise Start-Process de la manière suivante :
$pw= ConvertTo-SecureString $Password -AsPlainText -Force $pp = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList "MonDomaine\$Username",$pw Start-Process powershell -Credential $pp -ArgumentList '-noprofile', "-command &{Start-Process powershell -ArgumentList '-noexit','-noprofile','-File','$script','$arguments' -verb runas}"
$script et $arguments sont le fichier de script et les paramètres (p.ex C:\file.ps1 -param1 'hello' -param2 'world')
Sauf qu'au final, quand il se connecte sur les autres serveurs, il me met "Accès refusé", comme si le shell avait pas les accès. Pourtant après un test avec ce code (retourne "true" s'il est admin)
$identity = [Security.Principal.WindowsIdentity]::GetCurrent() $principal = New-Object Security.Principal.WindowsPrincipal $identity echo $principal.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
Il me dit qu'il est admin.... Serait-ce un admin local seulement ?
Merci d'avance
Dimi'
Toutes les réponses
-
a tu vérifier les stratégies d'exécutions powershell sur le serveurs distant ? "get-ExecutionPolicy -list"
-
Attention : Security.Principal.WindowsBuiltinRole, vous checkez la condition "admin locale" pas admin du domaine.
D'autre part, donner un compte "domain admins" à un script PHP est très risqué (récupération du hash de pass d'un compte à fort privilège, injection de code, etc.). Pour créer un user vous pouvez utiliser un compte lambda et lui déléguer l'autorisation de créer un compte.
-
Bonjour a tous,
je viens compléter l'idée de Loïc Veirman et 6ratgus.
- Votre serveur distant doit autoriser l’exécution de script provenant d'autre ordinateur.
- Est-ce-que le PSRemoting est activé sur le serveur distant?
La Sécurité est importante, je vous recommanderai de bien prendre en compte le remarque de Loïc Veirman.
Exécuter la commande:
Enable-PSRemoting
sur le serveur distant.
Pour plus d'infos consulter Enable-PSRemoting
Une fois la commande exécuter je vous recommanderai aussi d'utiliser la commande
invoke-command
Pour plus d'infos consulter invoke-command
C'est aussi mieux de l'executer comme suite
powershell -ExecutionPolicy Bypass -File monscript.ps1
Merci, a+
S'il vous plaît n'oubliez pas de =Marquer comme réponse= les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution. Héritier KANDOLO. http://www.rootandadmin.com/
- Modifié Heritier Kandolo mercredi 18 octobre 2017 07:11
-
-
Salut Loïc,
Merci de l'info.
Pour le compte lambda, ça pourrait être une bonne idée en effet. Il faudrait juste que je lui donne les bons droits, comme créer des dossiers sur des serveurs distants, créer les DFS et partages, créer l'utilisateur Exchange, bref y'a quelques actions qui sont effectuées.
Mais quoi qu'il arrive, il prend pas les accès admin du domaine.
J'ai utilisé cette commande :
([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent())
et il me parle de "AUTORITE NT\Système", du coup c'est peut-être normal qu'il n'arrive pas à se connecter aux autres serveurs...
++
-
Salut Heritier,
Merci de tes compléments.
Le script fonctionne quand je le lance à la main, depuis ma session admin. Du coup c'est pas la connexion aux autres serveurs qui pose problème, mais bien l'utilisateur qu'utilise PHP.
Je vais approfondir le côté sécurité, merci !
++
Dimi'- Modifié Dimitri Mahon mercredi 18 octobre 2017 09:21
-
Salut Loïc,
Merci de l'info.
Pour le compte lambda, ça pourrait être une bonne idée en effet. Il faudrait juste que je lui donne les bons droits, comme créer des dossiers sur des serveurs distants, créer les DFS et partages, créer l'utilisateur Exchange, bref y'a quelques actions qui sont effectuées.
Mais quoi qu'il arrive, il prend pas les accès admin du domaine.
J'ai utilisé cette commande :
([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent())
et il me parle de "AUTORITE NT\Système", du coup c'est peut-être normal qu'il n'arrive pas à se connecter aux autres serveurs...
++