Script Powershell : âge des mots de passe dans l’AD

Changer régulièrement les mots de passe est une pratique essentielle pour assurer la sécurité des comptes en ligne. Malheureusement, beaucoup d’utilisateurs ne prennent pas cette précaution, ce qui peut les exposer à des risques importants. Dans cet article, nous allons voir pourquoi il est important de changer les mots de passe et comment le faire de manière sécurisée.

Pourquoi changer les mots de passe ?

Il y a plusieurs raisons pour lesquelles il est important de changer les mots de passe régulièrement :

  • Premièrement, les mots de passe sont souvent le premier rempart contre les attaques en ligne. Si un mot de passe est compromis, il peut être utilisé pour accéder à un compte et en prendre le contrôle. En changeant régulièrement les mots de passe, on empêche les attaquants d’utiliser un mot de passe volé pour accéder à un compte.
  • Deuxièmement, les mots de passe peuvent être devinés ou crackés. Les utilisateurs ont tendance à choisir des mots de passe faciles à retenir, mais aussi faciles à deviner pour les attaquants. Les attaquants peuvent également utiliser des outils pour cracker les mots de passe, en testant des millions de combinaisons différentes jusqu’à ce qu’ils trouvent le bon. En changeant régulièrement les mots de passe, on empêche les attaquants de deviner ou de cracker nos mots de passe.
  • Troisièmement, les mots de passe peuvent être partagés ou divulgués involontairement. Les utilisateurs peuvent partager leur mot de passe avec d’autres personnes, ou le divulguer involontairement en le notant sur un post-it collé sur leur écran par exemple. En changeant régulièrement les mots de passe, on empêche les personnes ayant accès à nos mots de passe de les utiliser pour accéder à nos comptes.

Comment changer les mots de passe de manière sécurisée ?

Voici quelques conseils pour changer les mots de passe de manière sécurisée :

  • Choisissez des mots de passe forts. Un mot de passe fort est difficile à deviner ou à cracker, et doit comporter au moins 12 caractères avec une combinaison de lettres, de chiffres et de caractères spéciaux. Évitez les mots de passe faciles à deviner, tels que votre nom, votre date de naissance
  • utilisez un gestionnaire de mots de passe. Un gestionnaire de mots de passe est un outil qui vous permet de stocker et de gérer vos mots de passe de manière sécurisée. Il vous permet de générer des mots de passe forts et de les utiliser de manière automatisée sur les différents sites et applications que vous utilisez. Cela vous évite de devoir mémoriser chaque mot de passe et de pouvoir changer régulièrement vos mots de passe sans avoir à les retenir.
  • Changez les mots de passe régulièrement. Il est recommandé de changer les mots de passe tous les 3 à 6 mois pour maximiser la sécurité. Si vous utilisez un gestionnaire de mots de passe, vous pouvez configurer des alertes pour vous rappeler de changer vos mots de passe à intervalle régulier.

Script pour savoir qui n’a pas changé son mot de passe depuis X mois

Ce script commence par importer le module ActiveDirectory, qui permet d’interagir avec l’Active Directory à partir de PowerShell. Il définit ensuite une limite d’âge de mot de passe en jours, puis récupère la liste des utilisateurs de l’Active Directory et leur date de dernier changement de mot de passe.

Ensuite, le script parcourt chaque utilisateur et calcule l’âge de leur mot de passe en jours. Si l’âge du mot de passe est supérieur à la limite définie, le script affiche le nom d’utilisateur et l’âge du mot de passe.

Ce script peut être modifié pour afficher d’autres informations sur les utilisateurs, ou pour effectuer d’autres actions, comme envoyer un e-mail aux utilisateurs concernés pour les avertir qu’ils doivent changer leur mot de passe.

# Importer le module Active Directory
Import-Module ActiveDirectory

# Définir la limite d'âge du mot de passe en jours
$PasswordAgeLimit = 90

# Obtenir la date du jour
$CurrentDate = Get-Date

# Récupérer la liste des utilisateurs de l'Active Directory
$Users = Get-ADUser -Filter * -Properties PasswordLastSet

# Parcourir chaque utilisateur et vérifier l'âge de leur mot de passe
foreach ($User in $Users) {
    # Calculer l'âge du mot de passe en jours
    $PasswordAge = ($CurrentDate - $User.PasswordLastSet).Days

    # Vérifier si l'âge du mot de passe est supérieur à la limite
    if ($PasswordAge -gt $PasswordAgeLimit) {
        # Afficher le nom d'utilisateur et l'âge du mot de passe
        Write-Output "Username: $($User.SamAccountName)"
        Write-Output "Password age: $PasswordAge days"
    }
}

Script permettant d’envoyer un mail aux utilisateurs n’ayant pas modifié leur mot de passe

Ce script commence par importer le module ActiveDirectory, qui permet d’interagir avec l’Active Directory à partir de PowerShell. Il définit ensuite un limite d’âge de mot de passe en jours et les paramètres de l’e-mail à envoyer (expéditeur, destinataire, sujet et corps du message).

Ensuite, le script récupère la liste des utilisateurs de l’Active Directory et leur date de dernier changement de mot de passe. Pour chaque utilisateur, le script calcule l’âge de leur mot de passe en jours, et vérifie si celui-ci est supérieur à la limite définie. Si c’est le cas, le script envoie un e-mail à l’utilisateur pour les avertir qu’ils doivent changer leur mot de passe.

# Importer le module Active Directory
Import-Module ActiveDirectory

# Definir l'age maximum du mot de passe
$PasswordAgeLimit = 180

# Définir l'expéditeur et le destinataire de l'e-mail
$Sender = "admin@example.com"
$Recipient = "user@example.com"

# Définir le seujet et le corps du mail
$Subject = "Important : Changer votre mot de passe"
$Body = "Bonjour,

Votre mot de passe est obsolète et doit être changé. Veuillez vous connecter
à votre compte et changer votre mot de passe dès que possible.

Meilleures salutations,

L équipe informatique"

# Récupérer la date et l'heure actuelles
$CurrentDate = Get-Date

# Récupérer la liste des utilisateurs de l'Active Directory
$Users = Get-ADUser -Filter * -Properties PasswordLastSet

# Parcourir chaque utilisateur et vérifier l'âge de leur mot de passe
foreach ($User in $Users) {
    # Calculer l'age du mot de passe
    $PasswordAge = ($CurrentDate - $User.PasswordLastSet).Days

    # Vérifier si l'âge du mot de passe est supérieur à la limite
    if ($PasswordAge -gt $PasswordAgeLimit) {
        # envoyer l'email aux utilisateurs
        Send-MailMessage -From $Sender -To $Recipient -Subject $Subject -Body $Body
    }
}

Forcer la réinitialisation des mots de passe des utilisateurs de l’AD

Ce script commence par importer le module ActiveDirectory, qui permet d’interagir avec l’Active Directory à partir de PowerShell. Il définit ensuite un limite d’âge de mot de passe en jours et la date d’expiration du mot de passe (30 jours après l’exécution du script).

Ensuite, le script récupère la list of users de l’Active Directory et leur date de dernier changement de mot de passe. Pour chaque utilisateur, le script calcule l’âge de leur mot de passe en jours, et vérifie si celui-ci est supérieur à la limite définie. Si c’est le cas, le script force l’expiration du mot de passe de l’utilisateur en définissant la date d’expiration du compte à la date précédemment définie.

# Importer le module Active Directory
Import-Module ActiveDirectory

# Définir la limite d'âge du mot de passe en jours
$PasswordAgeLimit = 180

# Définir la date d'expiration du mot de passe"
$ExpirationDate = (Get-Date).AddDays(30)

# Récupérer la date et l'heure actuelles
$CurrentDate = Get-Date

# Récupérer la liste des utilisateurs de l'Active Directory
$Users = Get-ADUser -Filter * -Properties PasswordLastSet

# Calculer l'âge du mot de passe en jours
foreach ($User in $Users) {
   
    $PasswordAge = ($CurrentDate - $User.PasswordLastSet).Days

    # Vérifier si l'âge du mot de passe est supérieur à la limite
    if ($PasswordAge -gt $PasswordAgeLimit) {
        # Définir la date d'expiration du mot de passe pour l'utilisateur
        Set-ADUser -Identity $User -PasswordNeverExpires $false -AccountExpirationDate $ExpirationDate
    }
}

Gérer les mots de passe via une PSO

Le code ci-dessous utilise le module PSO, qui doit être installé avant d’exécuter le script. La fonction eval_password() est utilisée pour évaluer chaque mot de passe généré par l’algorithme PSO en fonction des critères définis. L’algorithme PSO est initialisé avec un certain nombre de particules (c’est-à-dire, les solutions potentielles générées par l’algorithme) et les dimensions du mot de passe (c’est-à-dire, la longueur du mot de passe). Enfin, l’algorithme est exécuté en appelant la méthode run(), qui retourne le mot de passe optimal trouvé.

# Importe les modules nécessaires
from pso import PSO

# Définit la fonction objectif
def eval_password(password):
    # Définissez ici les critères que le mot de passe doit remplir
    # Par exemple, vérifier la longueur, la présence de chiffres et de lettres majuscules et minuscules, etc.
    # Calculez un score en fonction des critères remplis et retournez-le

# Initialise l'algorithme PSO
pso = PSO(n_particles=100, dimensions=8, eval_function=eval_password)

# Exécute l'algorithme pour trouver le mot de passe optimal
best_password = pso.run()

# Imprime le mot de passe optimal trouvé
print(best_password)

Tu pourrais aussi être intéressé par ces articles :

Laisse moi un commentaire !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *