Le blog technique

Toutes les astuces #tech des collaborateurs de PI Services.

#openblogPI

Retrouvez les articles à la une

Powershell – Utiliser ValidateScript pour valider une adresse IP en parametre

ValidateScript est un mot clé dans la declaration de paramètres d’un script ou d’une fonction, permettant de valider la valeur d’un paramètre en excutant un bloc de script qui va tester la valeur passée en paramètre. NB: il complète le mot clé ValidatePattern utilisé lui pour valider le paramètre a l’aide d’une expression regulière.

L’exemple ci-dessous est celui de la validation qu’une addresse IP donnée en paramètre est bien au format IPv4. Un message customisé est renvoyé.

 

[CmdletBinding()]
param(

[Parameter(Mandatory=$true,HelpMessage="IP cible")]
          [ValidateScript({
                           $startchar = "^"  # CARACTERE DE DEBUT DE REGEX
                           $endchar = "$"    # CARACTERE DE FIN DE REGEX
                           $ZeroOrOneTime = '?' # CHARACTERE 0 OU 1 FOIS
                           $byte = "(?:25[0-5]|2[0-4][0-9]|[01]$ZeroOrOneTime[0-9][0-9]$ZeroOrOneTime)" # REGEX CORRESPONDANT A UN NOMBRE D'UNE IP
                           $dot = '\.' # CARACTERE '.' 
                           $IPv4 = "$byte$dot$byte$dot$byte$dot$byte" # REGEX COMPLETE D'UNE IPv4
                           if($_ -match "$startchar$IPv4$endchar")
                                {
                                $true
                                } 
                                else 
                                {
                                write-host -B white -F red "$_ N'EST PAS UNE ADDRESSE IPV4 VALIDE. VEUILLEZ RENSEIGNER UNE ADRESSE AU FORMAT X.X.X.X (Ex: 192.168.0.1)"
                                EXIT 1
                                }
                          })]          
$TargetIP
)

Write-Host -F Green "$TargetIP EST UNE VALEUR CORRECTE"

 

Si la valeur renseignée est une adresse IPv4 correcte:

Si la valeur renseignée n’est pas une adresse IPv4 correcte:

 

Le scriptblock éxécuté par ValidateScript peut bien sur être reutilisé comme une fonction a part entière, en dehors du bloc de paramètres.

 

 

 

Intune : Purger les membres du groupe local Administrateurs et positionner les comptes définis par l’entreprise

Besoin :

Utiliser Intune pour purger tous les membres du groupe local Administrateurs et ajouter uniquement les comptes définis par l’entreprise.

Ceci est nécessaire quand les IT ajoutent des comptes locaux ou AD des utilisateurs dans le groupe local Administrateurs.

 

Solution :

Cela est possible en utilisant la partie « Account Protection » dans Endpoint Security de Intune.

Il faut créer une nouvelle politique « Local user group membership »

Ensuite il faut donner un nom à la nouvelle politique puis choisir le type d’action à exécuter afin de remplacer le contenu du groupe local Administrateurs par ce que l’entreprise souhaite.

Pour cela, il faut choisir les options ci-dessous dans l’onglet « Configuration settings » :

  • Local group : Administrators
  • Group and user action : Add (Replace)
  • User selection type : Manual
  • Selected users/groups : ajouter les SID, utilisateurs locaux ou les comptes Azure AD des utilisateurs souhaités

N.B : l’action « Add (Replace) » écrase tout le contenu du groupe y compris les SID ajoutés par défaut lors d’une jonction à Azure AD

  • Le SID du groupe (Builtin) Azure AD « Global Administrators »
  • Le SID du groupe (Builtin) Azure AD « Device Administrators »

Pour cela, il faut identifier ces SID depuis une machine existante joint à Azure AD pour les ajouter manuellement dans la nouvelle politique :

Une fois les SID identifiés et si l’entreprise exige par exemple l’ajout d’un compte Azure AD (corporate.Account@contoso.com) comme admin local de tous les devices, notre nouvelle politique aura la configuration ci-dessous :

Azure AD – Vérifier et corriger la synchronisation de l’expiration des mots de passe avec une authentification de type Password Hash Sync (PHS)

Password Hash Sync ou PHS est une des methodes d’authentification préconisée par Microsoft pour l’authentfication des utilisateurs dans un environnement hybride sur des services Azure.

Un environnement hybride dans le contexte de l’Active Directory est caractérisé par la co-éxistence d’une infrastructure Active Directory (AD) OnPremises et d’un tenant Azure AD. Ces deux milieux sont fortement liés à travers des solutions telles qu’Azure AD Connect ou ADFS.

PHS permet à un utilisateur dont la source de l’identité se trouve dans l’AD OnPremises de se connecter à un service Azure sans devoir requêter les contrôleurs de domaines (DC) OnPremises.

Par défaut, un utilisateur qui utilise l’authentification PHS a la synchronisation de l’expiration son mot de passe OnPremises décorrélé de son identité Azure AD. De plus dans ce cas de figure, le mot de passe de l’identité Azure AD n’expire jamais.

Concrétement, cela veut dire que lorsque le mot de passe OnPremises d’un utilisateur expire, si celui-ci ne se connecte qu’à des services Azure, il ne lui sera jamais demandé de changer de mot de passe.

 

Est-ce alarmant ?

Microsoft considère que l’expiration des mots de passe rend les futurs mots de passe prévisibles, car les utilisateurs ont tendance à ne changer que quelques caractères d’un mot de passe à l’autre.

Par exemple dans le portail admin.microsoft.com > Settings Org settings > Security & privacy > Password expiration policy

Le lien mène vers l’article Microsoft suivant : Password policy recommendations for Microsoft 365 passwords

Password expiration requirements do more harm than good, because these requirements make users select predictable passwords, composed of sequential words and numbers that are closely related to each other. In these cases, the next password can be predicted based on the previous password. Password expiration requirements offer no containment benefits because cybercriminals almost always use credentials as soon as they compromise them.

 

 

Il est néanmoins souhaitable que la non-expiration des mots de passe soit un choix conscient.

 

Synchroniser l’expiration des mots de passe OnPremises vers Azure AD

Etape 1 : activer la synchronisation des mots de passe OnPremises vers Azure AD

Les commandes suivantes peuvent être saisies avec compte Global Administrator du tenant. Le module MSOnline doit être installé sur l’ordinateur exécutant les commandes.

#Commande qui permet d'initier une connexion avec le tenant Office 365
Connect-MsolService

#Commande qui permet de récupérer le statut de synchronisation actuel de l'expiration des mots de passe
Get-MsolDirSyncFeatures -Feature EnforceCloudPasswordPolicyForPasswordSyncedUsers

#Si la valeur de l'attribut Enable est déjà en True, passer directement à l'étape 2

#Commande qui permet de synchroniser l'expiration des mots de passe de l'Active Directory OnPremises vers Azure AD
#Taper Yes quand la commande affichera Enable
Set-MsolDirSyncFeatures -Feature EnforceCloudPasswordPolicyForPasswordSyncedUsers

#La commande de Get précédente peut être entrée à nouveau pour vérifier que la commande de Set à fonctionnée
Get-MsolDirSyncFeatures -Feature EnforceCloudPasswordPolicyForPasswordSyncedUsers

 

Etape 2 : vérifier le statut des stratégies de mots de passe des utilisateurs Azure AD

La stratégie de mot passe d’un utilisateur Azure AD garde la valeur à DisablePasswordExpiration jusqu’au prochain changement de mot de passe.
Etant donné que si l’utilisateur ne se connecte jamais à un service OnPremises, il ne lui sera jamais demandé de changer de mot de passe, il faut pouvoir identifier les utilisateurs Azure AD dont le mot de passe n’expire pas et les forcer à changer leur mot de passe.
La configuration de l’étape 1 s’appliquera néanmoins à tous les utilisateurs créés après l’activation du paramètre.

La commande suivante permet de récupérer la stratégie des mots de passe de l’ensemble des utilisateurs Azure AD

Get-AzureADUser -All $true | Select-Object ObjectID, UserPrincipalName, AccountEnabled, PasswordPolicies

 

Etape 3 : forcer l’expiration des mots de passe des utilisateurs Azure AD

Une fois la liste des utilisateurs Azure AD, dont le mot de passe doit expirer, établie, la commande suivante peut être tapée pour chaque utilisateur.

#Remplacer [User] par la valeur de l'UPN ou de l'ObjectId de l'utilisateur dont le mot de passe doit expirer
Set-AzureADUser -ObjectId [User] -PasswordPolicies None


Lors de la prochaine connexion de l’utilisateur vers un service Azure ou Office 365, il lui sera demandé de changer son mot de passe.