Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
24 janvier 2021 7 24 /01 /janvier /2021 11:48

Bon, les mots de passes font parti de notre quotidien. Et même si maintenant il y a des technologies qui permettent de ne plus avoir de mot de passe, c'est loin d'être démocratisé.

Donc, il faut des mots de passes. Mais quoi comme mot de passe ?

Dans un environnement Microsoft, il y a 3 catégories (pour simplifier) de comptes qui doivent avoir des stratégies de mots de passe :

  • Un compte utilisateur
  • Un compte à pouvoir
  • Un compte de service

Bien sur, la liste ne représente pas l'ensemble des types de comptes qui peuvent exister. Mais ce sont 3 types de comptes que l'on retrouvent partout. 

Les mots de passes, doivent respecter une stratégie différente en fonction de ces types. Un compte utilisateur va avoir une stratégie moins forte qu'un compte admin par exemple.

Même si les stratégies sont bien faite, je vois trop souvent des mots de passe générique. Du style, je crée un mot de passe générique pour tous les comptes créés. Ce n'est pas top car une tel politique veut dire qu'il y a 90% de chance que les mots de passe administrateur locaux subissent le même sort !

La gestion des mots de passes des admin locaux, fera l'objet d'un article futur. Aujourd'hui, je vais m'attarder sur comment générer un mot de passe aléatoire via PowerShell. 

Pourquoi PowerShell ? Simplement que, pour moi, les créations de comptes, quel qu'il soit, doivent être scripté pour que toutes les créations soient identiques. Donc, la génération du mot de passe en fait partie !

Alors voici le code :

Add-Type -AssemblyName System.Web
[System.Web.Security.Membership]::GeneratePassword(25,6)

La 1ère ligne est a mettre au début du code pour charger le module 1 fois.

La 2ème ligne, génère le mot de passe. Il y a 2 paramètres à utiliser : 

  1. La longueur du mot de passe. Dans l'exemple, la longueur est de 25 caractères
  2. Le nombre de caractère non alphanumérique que vous voulez. Dans l'exemple, 6 caractères non alphanumérique seront présents

A noter que les caractères non alphanumérique ne s'ajoute pas à la longueur du mot de passe. Dans notre exemple, le mot de passe fera 25 caractères et contiendra 6 caractères spéciaux.

Egalement, vous ne pouvez pas mettre un nombre plus important de caractères spéciaux que la longueur du mot de passe !!!

Autre point important, la génération du mot de passe ne contient pas forcément de chiffre ! Mais vous aurez (je ne suis pas tomber sur un cas contraire) une minuscule et une majuscule. Ajoutez des caractères spéciaux, et vous aurez 3 des 4 critères de complexité requis.

Voici des exemples :

[System.Web.Security.Membership]::GeneratePassword(5,1)
e%Ns!

[System.Web.Security.Membership]::GeneratePassword(5,5)
/{/=+

[System.Web.Security.Membership]::GeneratePassword(25,6)
j@C>]0;N0h4[UFGUe|1|yz!#X

[System.Web.Security.Membership]::GeneratePassword(25,6)
TWtoJc>$cSgxU[.oY}#J]sy=G
 

Voici l'erreur que vous aurez si vous demandez un mot de passe dont le nombre de caractères spéciaux est supérieur à la longueur du mot de passe :

[System.Web.Security.Membership]::GeneratePassword(5,6)
Exception lors de l'appel de «GeneratePassword» avec «2» argument(s): «La valeur spécifiée dans le paramètre 'numberOfNonAlphanumericCharacters' doit se trouver dans une plage comprise entre zéro et la valeur spécifiée dans 
le paramètre de longueur du mot de passe.»
Au caractère Ligne:1 : 1
+ [System.Web.Security.Membership]::GeneratePassword(5,6)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ArgumentException

Partager cet article
Repost0

commentaires