Hoe de wachtwoordvervaldatum van AD-gebruikersaccounts te controleren met PowerShell

Active Directory (AD) wordt door veel organisaties gebruikt voor gebruikersbeheer en authenticatiediensten. Het begrijpen van de wachtwoordvervaldatum van AD-gebruikersaccounts is belangrijk voor het handhaven van de veiligheid. Met PowerShell kan deze taak worden geautomatiseerd, waardoor het beheer eenvoudiger wordt. Dit artikel zal uitleggen hoe de wachtwoordvervaldatum van AD-gebruikersaccounts te controleren met PowerShell, stap voor stap.

Inhoudsopgave

Commando om wachtwoordverval te controleren

Om de wachtwoordvervaldatum van een Active Directory-gebruikersaccount te controleren, combineert u de PowerShell Get-ADUser-cmdlet met verschillende attributen. Hieronder staat het basiscommando om de wachtwoordvervaldatum voor een specifieke gebruiker te controleren.

# Check gebruikers wachtwoordverval
Get-ADUser -Identity "username" -Properties "PasswordLastSet", "PasswordNeverExpires" | Select-Object -Property Name, PasswordLastSet, PasswordNeverExpires, @{Name="PasswordExpires"; Expression={if ($_.PasswordNeverExpires -eq $false) { $_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays) } else {"Nooit Verloopt"}}}

Dit commando haalt de “PasswordLastSet” (de laatste keer dat het wachtwoord is ingesteld), of het wachtwoord is ingesteld om nooit te verlopen “PasswordNeverExpires”, en als het wachtwoord een verloopdatum heeft, berekent en toont wanneer die verloopdatum is.

Opmerkingen

  • De Get-ADUser cmdlet wordt gebruikt om gebruikersinformatie uit AD te halen.
  • Met de -Identity parameter specificeert u de doelgebruikersnaam.
  • Met de -Properties parameter geeft u aan welke attributen u wilt ophalen. Standaard worden niet alle attributen opgehaald.
  • Gebruik de Select-Object cmdlet om de informatie te kiezen die u wilt weergeven en voeg aangepaste eigenschappen toe.

Scriptvoorbeeld 1: Verlopen Gebruikers Lijsten

Een script om gebruikers te identificeren en te lijsten wiens wachtwoorden zijn verlopen onder alle Active Directory-gebruikers kan helpen om te voldoen aan de beveiligingsbeleidsregels van de organisatie en om accountbeheertaken te automatiseren.

Het volgende PowerShell-script detecteert gebruikers wiens wachtwoorden zijn verlopen door de huidige datum te vergelijken en produceert een lijst van deze gebruikers.

# Verlopen gebruikers lijsten
Import-Module ActiveDirectory
$vandaag = (Get-Date)
Get-ADUser -Filter * -Properties PasswordLastSet, PasswordNeverExpires | Where-Object {
    $_.PasswordNeverExpires -eq $false -and
    ($_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays)) -lt $vandaag
} | Select-Object Name, PasswordLastSet, @{Name="PasswordExpires"; Expression={$_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays)}}

Opmerkingen

  • Import-Module ActiveDirectory maakt Active Directory-gerelateerde cmdlets beschikbaar. Deze regel is altijd noodzakelijk voordat u AD-gerelateerde scripts uitvoert.
  • De Get-Date cmdlet wordt gebruikt om de huidige datum te krijgen, die dient als basis voor het bepalen van de wachtwoordvervaldatum.
  • Get-ADUser -Filter * richt zich op alle gebruikers in Active Directory.
  • De Where-Object cmdlet filtert gebruikers wiens wachtwoorden niet permanent geldig zijn en wiens wachtwoordinsteldatum plus de maximale geldige periode gedefinieerd door het wachtwoordbeleid van het domein voor de datum van vandaag ligt.
  • Gebruik de Select-Object cmdlet om alleen de noodzakelijke informatie te selecteren en voeg de aangepaste eigenschap PasswordExpires toe om de wachtwoordvervaldatum te berekenen en weer te geven.

Dit script maakt het gemakkelijker om verlopen gebruikers te beheren, bijdragend aan het handhaven van de veiligheid.

Scriptvoorbeeld 2: Automatische notificatie-e-mails voor verloop

Gebruikers binnen de organisatie op de hoogte stellen dat hun wachtwoord binnenkort verloopt, kan de gebruikerservaring verbeteren en de veiligheid verhogen. Het volgende PowerShell-script detecteert gebruikers wiens wachtwoorden binnen een gespecificeerd aantal dagen zullen verlopen en stuurt automatisch notificatie-e-mails naar deze gebruikers.

# Notificatie-e-mails versturen voor verloop
Import-Module ActiveDirectory
$notificatiePeriode = 14 # Aantal dagen voor het versturen van de notificatie
$smtpServer = "smtp.example.com" # SMTP-serveradres
$vanEmail = "admin@example.com" # E-mailadres van de afzender
$onderwerp = "Uw wachtwoord verloopt binnenkort" # E-mailonderwerp

$gebruikers = Get-ADUser -Filter * -Properties EmailAddress, PasswordLastSet, PasswordNeverExpires | Where-Object {
    $_.PasswordNeverExpires -eq $false -and
    ($_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays - $notificatiePeriode)) -lt (Get-Date)
}

foreach ($gebruiker in $gebruikers) {
    $naarEmail = $gebruiker.EmailAddress
    $inhoud = "Beste $($gebruiker.Name),\n\nUw wachtwoord verloopt in minder dan $notificatiePeriode dagen. Wijzig alstublieft zo snel mogelijk uw wachtwoord.\n\nMet vriendelijke groet,\nUw IT-team"
    Send-MailMessage -SmtpServer $smtpServer -From $vanEmail -To $naarEmail -Subject $onderwerp -Body $inhoud
}

Opmerkingen

  • Dit script gebruikt de variabele $notificatiePeriode om te definiëren wanneer te beginnen met het notificeren van gebruikers, ingesteld op 14 dagen van tevoren in dit voorbeeld.
  • De Get-ADUser cmdlet haalt gebruikersinformatie op inclusief de attributen EmailAddress, PasswordLastSet, en PasswordNeverExpires.
  • De Where-Object cmdlet filtert voor gebruikers wiens wachtwoordverval nadert.
  • De foreach-lus wordt gebruikt om een e-mail te sturen naar elke relevante gebruiker met de Send-MailMessage cmdlet.

Door dit script regelmatig uit te voeren, kunnen gebruikers passende actie ondernemen voordat hun wachtwoorden verlopen, waardoor de accountveiligheid wordt gehandhaafd en het aantal ondersteuningstickets wordt verminderd.

Scriptvoorbeeld 3: Automatisch uitschakelen van verlopen gebruikersaccounts

Als beveiligingsmaatregel kunnen gebruikersaccounts waarvan de wachtwoorden zijn verlopen automatisch uitschakelen het risico op ongeautoriseerde toegang verminderen. Het volgende PowerShell-script detecteert gebruikersaccounts met verlopen wachtwoorden en schakelt die accounts automatisch uit.

# Automatisch uitschakelen van verlopen gebruikers
Import-Module ActiveDirectory
$vandaag = (Get-Date)

$verlopenGebruikers = Get-ADUser -Filter * -Properties PasswordLastSet, PasswordNeverExpires | Where-Object {
    $_.PasswordNeverExpires -eq $false -and
    ($_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays)) -lt $vandaag
}

foreach ($gebruiker in $verlopenGebruikers) {
    # Gebruikersaccount uitschakelen
    Disable-ADAccount -Identity $gebruiker.SamAccountName
    Write-Output "Uitgeschakeld account: $($gebruiker.Name)"
}

Opmerkingen

  • Import-Module ActiveDirectory importeert de Active Directory-module, waardoor het gebruik van AD-gerelateerde cmdlets mogelijk is.
  • De Get-ADUser cmdlet haalt alle gebruikersinformatie op en gebruikt Where-Object om te filteren op gebruikers met verlopen wachtwoorden.
  • Binnen de foreach-lus wordt de Disable-ADAccount cmdlet gebruikt om de accounts van gebruikers wiens wachtwoorden zijn verlopen uit te schakelen.
  • Het script geeft uitvoer naar de console wanneer een gebruikersaccount wordt uitgeschakeld.

Dit script is bijzonder nuttig voor accountbeheer in grote organisaties, door te automatiseren in overeenstemming met beveiligingsbeleid en de administratieve werklast te verminderen. Het script regelmatig uitvoeren zorgt ervoor dat accounts met verlopen wachtwoorden worden uitgeschakeld, waardoor de systeemveiligheid wordt verbeterd.

Beveiligingsoverwegingen

Bij het automatiseren van wachtwoordbeleid en gebruikersaccountbeheer moeten verschillende beveiligingsoverwegingen in gedachten worden gehouden. Let op de volgende punten bij het implementeren en bedienen van deze scripts.

  1. Pas het principe van minimale rechten toe: Het account dat het script uitvoert, moet de minimaal noodzakelijke rechten worden verleend. Bijvoorbeeld, als alleen het lezen van gebruikerswachtwoordinformatie nodig is, moeten alleen-lezen rechten worden toegewezen, en alleen de noodzakelijke rechten voor het uitschakelen van accounts moeten worden verleend voor die bewerkingen.
  2. Beveiligde scriptopslag: Aangezien scripts mogelijk gevoelige informatie of commando’s bevatten die het systeem wijzigen, moeten ze veilig worden opgeslagen om te beschermen tegen ongeautoriseerde toegang.
  3. Loggen en monitoren: Wijzigingen aangebracht door scripts moeten goed worden gelogd en gemonitord. Dit maakt snelle reactie op onverwacht gedrag of beveiligingsincidenten mogelijk.
  4. Onderhoud van notificatiemechanismen: Vooral voor scripts die gebruikers waarschuwen voor naderende wachtwoordverval of automatisch accounts uitschakelen, is het raadzaam om mechanismen te hebben om beheerders of gebruikers te waarschuwen wanneer acties worden ondernomen.
  5. Regelmatige herziening en update: Scripts moeten regelmatig worden herzien en zo nodig worden bijgewerkt, in reactie op veranderingen in organisatiebeleid of updates aan de Active Directory-omgeving.

Door deze beveiligingsoverwegingen in acht te nemen, kunnen de door deze scripts gefaciliteerde geautomatiseerde processen efficiënt functioneren terwijl ze in overeenstemming blijven met de beveiligingsnormen van de organisatie.

Conclusie

Het gebruik van PowerShell voor het controleren en beheren van de wachtwoordverval van Active Directory-gebruikersaccounts is essentieel voor het handhaven van de beveiliging van de organisatie. Door de in dit artikel geïntroduceerde scripts te gebruiken, kan efficiënte monitoring van AD-gebruikersaccountwachtwoordverval, notificatie vóór verloop en automatische accountuitschakeling op basis van beveiligingsbeleid worden bereikt.

Het is belangrijk dat deze geautomatiseerde processen de beveiligingsbeleidsregels van de organisatie ondersteunen en verbeteren. Echter, automatisering moet vergezeld gaan van de toepassing van het principe van minimale rechten, veilige scriptopslag, passende loggen en monitoren, onderhoud van notificatiemechanismen en regelmatige herziening en bijwerking, onder andere beveiligingsoverwegingen.

Uiteindelijk kan door deze beste praktijken en automatiseringsscripts op de juiste manier te combineren, het beheer van de Active Directory-omgeving efficiënter en veiliger worden.

Inhoudsopgave