Zum Inhalt springen

Inaktive Active Directory Benutzer finden und deaktivieren

Symbolbild Team

Seit längerem inaktive Active Directory Benutzer finden, per Mail melden und optional sofort deaktivieren.

Warum?

Aus Sicherheitsgründen ist es nicht ratsam, wenn nicht mehr benötigte Benutzerkonten weiterhin verwendet werden können. Nicht länger benötigte Benutzerkonten sollten schnellstmöglich deaktiviert werden. Ehemalige und aktuelle MitarbeiterInnen oder Hacker könnten sonst die Benutzerkonten unerlaubt verwenden und damit auf Daten innerhalb der Active Directory Domäne zugreifen, diese ändern oder sogar löschen.

PowerShell-Script

Mit dem folgenden PowerShell-Script werden Benutzer die sich seit 30 Tagen nicht angemeldet haben (Active Directory Attribute „LastLogonDate“) ermittelt, an eine Mailadresse gemeldet und bei Bedarf auch gleich deaktiviert ($deaktivieren = $true). Im Idealfall wird das PowerShell-Script regelmäßig über die Windows Aufgabenplanung ausgeführt. Auf dem ausführenden System müssen Domänen-Administrator-Rechte und die Active Directory PowerShell Commandlets vorhanden sein. Außerdem müssen natürlich vorher die Optionen an die vorhandene Active Directory Domäne und den jeweiligen Bedürfnissen angepasst werden:

######################  Optionen ######################
$domainSearchBase = "OU=Benutzer,DC=domain,DC=at" # Active Directory Distinguished Name (DN)
$limitTage = -30      # Benutzer hat sich länger als X Tagen nicht eingeloggt (negativ)
$deaktivieren = $true # $true deaktiviert Benutzer, $false erzeugt nur das Info-Mail
$mailTo = "mailTo@domain.at";
$mailFrom = "mailFrom@domain.at";
$mailSubject = "Inaktive AD-Benutzer";
$mailSMTP = "smtp.domain.at";
$mailHtmlHeader = @"
<style>
TABLE {border-width: 1px; border-style: solid; border-color: black; border-collapse: collapse;}
TH {text-align:left;}
TD {border-width: 1px; padding: 3px; border-style: solid; border-color: black; text-align:left;}
H2 {font-size:16px;}
</style>
"@
#######################################################

# Datum berechnen und inaktive Benutzer ermitteln
$dateLimit = (Get-Date).addDays($limitTage)
$adBenutzer = Get-ADUser -SearchBase $domainSearchBase -Properties LastLogonDate -Filter {LastLogonDate -lt $dateLimit -and Enabled -eq $true -and sAMAccountName -ne "administrator"}
$inaktiveBenutzer = $adBenutzer | Sort LastLogonDate | select Name,LastlogonDate
$mailBenutzerListe = $inaktiveBenutzer | ConvertTo-Html -Property Name, LastLogonDate -Head $mailHtmlHeader

# Benutzer deaktivieren
if($deaktivieren -eq $true){
    $adBenutzer | Disable-ADAccount
}

# Mail
$body = "Benutzer die seit " + $dateLimit.ToString("dd.MM.yyyy HH:mm") + " nicht angemeldet waren:<br><br>" + $mailBenutzerListe | Out-String
Send-MailMessage -To $mailTo -From $mailFrom -Subject $mailSubject -SmtpServer $mailSMTP -Body $body -BodyAsHtml -encoding ([System.Text.Encoding]::UTF8)Code-Sprache: PHP (php)

Get-ADuser auf Microsoft.com

Mehr Sicherheitstipps

IT-Security-Basics für Unternehmen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

zwanzig − zwanzig =