• Active Directory
    • AD Consulting
    • AD Design
      • Domain Name festlegen
      • Domain Struktur einrichten
      • Forest Struktur definieren
    • AD Management
    • AD Automation
      • Dynamic Access Control (DAC)
    • AD Federation Services
      • ADFS Betrieb
      • ADFS und Office365
      • ADFS und Cisco Unified Communications Manager
      • SAML und ADFS 2.0
  • Azure / M365
    • Azure AD
    • Microsoft 365 (O365)
  • Migration
    • Active Directory Migration
    • Exchange Migration
    • File Server Migration
    • Lotus Notes Migration
    • Novell Migration
  • Wissen
    • Alle Beiträge
    • Administration
    • PowerShell
    • Migration
    • Exchange
    • Tools
  • Kontakt
    • Wir über uns
    • Kontakt
  • EN
info@firstattribute.com
by FirstAttribute
Active Directory FAQActive Directory FAQ
  • Active Directory
    • AD Consulting
    • AD Design
      • Domain Name festlegen
      • Domain Struktur einrichten
      • Forest Struktur definieren
    • AD Management
    • AD Automation
      • Dynamic Access Control (DAC)
    • AD Federation Services
      • ADFS Betrieb
      • ADFS und Office365
      • ADFS und Cisco Unified Communications Manager
      • SAML und ADFS 2.0
  • Azure / M365
    • Azure AD
    • Microsoft 365 (O365)
  • Migration
    • Active Directory Migration
    • Exchange Migration
    • File Server Migration
    • Lotus Notes Migration
    • Novell Migration
  • Wissen
    • Alle Beiträge
    • Administration
    • PowerShell
    • Migration
    • Exchange
    • Tools
  • Kontakt
    • Wir über uns
    • Kontakt
  • EN

Passwortgenerierung nach Richtlinien-Änderung anpassen

Okt 8, 2021 (Letztes Update) | Posted by Susann Stenker Administration, PowerShell |

 

Passwortgenerierung nach Richtlinien-Änderung anpassen

Wie können wir die Passwortgenerierung nach einer Richtlinien-Änderung anpassen?

Um Anpassungen der Passwortgenerierung nach einer Richtlinien-Änderung zu verhindern, werden wir Ihnen nun zeigen, wie Sie Passwörter in Abhängigkeit der aktuellen Domain Password Policy erzeugen können.

Index

  • Auslesen der Passwort-Richtlinien einer Domäne
  • Eigenschaften der Password Policy
  • Auslesen der Password Policy mit PowerShell
  • Fazit

Wenn Sie Unterstützung zur Passwortgenerierung brauchen, können sie unseren Artikel Zufälliges Passwort nach eigenen Vorgaben generieren im ersten Schritt nachlesen.

Auslesen der Passwort-Richtlinien einer Domäne

Zuerst möchten wir die Passwort-Richtlinien der Domäne auslesen, über den Server Manager > Tools gibt es zwei Möglichkeiten, sich die Richtlinien anzuschauen:

Auslesen der Passwort-Richtlinien der Domäne - Richtlinien Passwortgenerierung

Über das Tool „Group Policy Management“ lässt sich unter der Domäne und der Default Domain Policy sämtliche Richtlinien anzeigen, darunter auch die Password Policy.

Default Domain Policy

Über „Local Security Policy“ lassen sich die Passwort-Richtlinien ebenfalls anzeigen, aber auch mit entsprechenden Berechtigungen ändern.

Local Security Policy

Eigenschaften der Password Policy

Die Password Policy besteht aus den folgenden Eigenschaften, welche wir konfigurieren können:

  • PasswordHistoryCount
  • MaxPasswordAge
  • MinPasswordAge
  • MinPasswordLength
  • ComplexityEnabled 
  • ReversibleEncryptionEnabled

Für diesen Artikel sind die Eigenschaften ComplexityEnabled und MinPasswordLength relevant. Im Tool Local Security Policy werden folgende Erklärungen dazu geliefert:

ComplexityEnabled: wenn aktiviert, 

  • dürfen die Passwörter nicht den samAccountName oder displayName enthalten 
  • müssen die Passwörter mindestens 6 Zeichen lang sein
  • müssen die Passwörter bestimmte Zeichen enthalten (jeweils mindestens ein Zeichen aus drei der vier Kategorien)
Eigenschaften der Password Policy - Passwort anpassen

MinPasswordLength: Mindestläge von Passwörtern

Minimum password length Properties - Richtlinien Passwortgenerierung

Mehr Informationen dazu unter: https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/hh994560(v=ws.10)

Der PasswordHistoryCount spielt ebenfalls eine Rolle, da bei der Generierung eines neuen Passwortes für einen Nutzer nicht überprüft werden kann, ob dieses Passwort schon einmal verwendet wurde (innerhalb der angegeben Anzahl von alten Passwörtern).

PasswordHistoryCount: Zahl der verwendeten Passwörter, die im AD gespeichert werden sollen. Sie dürfen vom Benutzer nicht wiederverwendet werden.)

Enforce password history Properties - Richtlinien Passwortgenerierung  anpassen

Mehr Informationen dazu unter: https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/hh994571(v=ws.10)

Auslesen der Password Policy mit PowerShell

Mit dem CmdLet Get-ADDefaultDomainPasswordPolicy lässt sich die Passwort-Richtlinie der Domäne ganz einfach auslesen.

Auslesen der Password Policy mit PowerShell  - Richtlinien Passwortgenerierung

Hier werden weitere Attribute wie LockoutDuration, LockoutObservationWindow und LockoutThreshold aufgelistet, welche im Tool Local Security Policy unter Account Lockout Policy zu finden sind.

Mit dem CmdLet Set-ADDefaultDomainPasswordPolicy lassen sich die verschiedenen Eigenschaften mit PowerShell ändern.

Generieren von Passwörtern anhand der Password Policy

Zunächst werden die relevanten Parameter ausgelesen:

1
2
3
$policy = Get-ADDefaultDomainPasswordPolicy
$complexity = $policy.ComplexityEnabled
$minLength = $policy.MinPasswordLength

Je nach eingestellter Komplexität werden die Generierungsalgorithmen angewandt, welche je nach Wunsch angepasst werden können. Wir zeigen hier ein mögliches Beispiel:

1
2
3
4
5
6
7
8
9
10
11
12
13
if($complexity){
     Write-Host("Komplexes Passwort wird generiert:") -ForegroundColor Yellow
# Komplexe Passwort-Generierung
$password = Get-RandomCharacters -length ($minLength - 3) -characters 'abcdefghijklmnopqrstuvwxyzß'        
$password += Get-RandomCharacters -length 1 -characters 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
$password += Get-RandomCharacters -length 1 -characters '1234567890'
$password += Get-RandomCharacters -length 1 -characters '!?:;,."§$%&/|\()[]{}<>@#*-=+~^_'
$password = Scramble-String $password
}else{
     Write-Host("Einfaches Passwort wird generiert:") -ForegroundColor Yellow
# Einfach Passwort-Generierung
$password = Get-RandomCharacters -length $minLength -characters 'abcdefghiklmnoprstuvwxyz'
}
Richtlinien Passwortgenerierung  anpassen
Auslesen der Password Policy mit PowerShell - Komplexes Passwort

Wie im Artikel „PowerShell – Zufälliges Passwort nach eigenen Vorgaben generieren“, werden folgende Funktionen dafür genutzt:

1
2
3
4
5
6
7
8
9
10
11
12
function Get-RandomCharacters($length, $characters) {
     $random = 1..$length | ForEach-Object { Get-Random -Maximum $characters.length }
     $private:ofs=""
     return [String]$characters[$random]
}
 
function Scramble-String([string]$inputString){    
     $characterArray = $inputString.ToCharArray()  
     $scrambledStringArray = $characterArray | Get-Random -Count $characterArray.Length    
     $outputString = -join $scrambledStringArray
     return $outputString
}

Da es sich bei uns um ein zufällig generiertes Passwort handelt, haben wir auf die Überprüfung, ob der samAccountName und displayName des Users im Passwort enthalten ist, verzichtet. Wird das Passwort allerdings manuell eingegeben, ist eine Überprüfung sinnvoll:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$samAccountName = "user.test"
$displayName = "Test User"
 
if (($samAccountName) -and ($password -match $samAccountName)) {
Write-Host("Passwort enthält samAccountName des Users") -ForegroundColor Red
}
 
if ($displayName) {
   $parts = $displayName.Split(",.-,_ #`t")    
foreach ($part in $parts) {        
if (($part) -and ($password -match $part)) {            
Write-Host("Passwort enthält Teile des displayName des Users")</code> -ForegroundColor Red
          break
            }
       }
}
Richtlinien Passwortgenerierung  anpassen - User Test

Da eine Überprüfung der Password History nicht möglich ist, sollten die Exceptions beim Setzen des Passwortes am User abgefangen werden. So können Sie gegebenenfalls ein neues Passwort generieren.

1
2
3
4
5
6
7
8
9
10
11
try{
       # …Code…
}
catch [Microsoft.ActiveDirectory.Management.ADPasswordComplexityException]{
         $strException = $_.Exception.Message
         Write-Host("Passwort entsprich nicht den Richtlinien; Fehler: " + $strException) -ForegroundColor Red
}
catch{
         $strException = $_.Exception.Message
         Write-Host("Fehler: " + $strException) -ForegroundColor Red
}
Auslesen der Password Policy mit PowerShell - Passwort Test

Zum Schluss nun das komplette Skript:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function Get-RandomCharacters($length, $characters) {
     $random = 1..$length | ForEach-Object { Get-Random -Maximum $characters.length }
     $private:ofs=""
     return [String]$characters[$random]
}
 
function Scramble-String([string]$inputString){    
     $characterArray = $inputString.ToCharArray()  
     $scrambledStringArray = $characterArray | Get-Random -Count $characterArray.Length    
     $outputString = -join $scrambledStringArray
     return $outputString
}
 
$policy = Get-ADDefaultDomainPasswordPolicy
$complexity = $policy.ComplexityEnabled
$minLength = $policy.MinPasswordLength
try{
    if($complexity){
   Write-Host("Komplexes Passwort wird generiert:") -ForegroundColor Yellow    
# Komplexe Passwort-Generierung    
$password = Get-RandomCharacters -length ($minLength - 3) </code>-characters 'abcdefghijklmnopqrstuvwxyzß'
    $password += Get-RandomCharacters -length 1 -characters 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    $password += Get-RandomCharacters -length 1 -characters '1234567890' <code>  
$password += Get-RandomCharacters -length 1</code> -characters '!?:;,."§$%&amp;/|()[]{}&lt;&gt;@#*-=+~^_' <code>   </code> <code>$password = Scramble-String $password
}else{
  
Write-Host("Einfaches Passwort wird generiert:") -ForegroundColor Yellow    
# Einfach Passwort-Generierung    
$password = Get-RandomCharacters -length $minLength </code>-characters 'abcdefghiklmnoprstuvwxyz'
}
 
Set-ADAccountPassword -Identity $samAccountName -Reset
    -NewPassword (ConvertTo-SecureString -AsPlainText –String $password -Force)
}
catch [Microsoft.ActiveDirectory.Management.ADPasswordComplexityException]{
     $strException = $_.Exception.Message
     Write-Host("Passwort entsprich nicht den Richtlinien; Fehler: " + $strException)
     -ForegroundColor Red
}
catch{
     $strException = $_.Exception.Message
     Write-Host("Fehler: " + $strException) -ForegroundColor Red
}

Fazit

Im Artikel „PowerShell – Zufälliges Passwort nach eigenen Vorgaben generieren“ wurde eine Möglichkeit vorgestellt, Passwörter mit PowerShell zu erstellen. Dieses Skript kann, wie beschrieben, auch im IDM-Portal genutzt werden. Sollte sich nun die Passwort-Richtlinie im Unternehmen ändern, muss dieses Skript nicht unbedingt angepasst werden, wenn von vornherein die Password Policy der Domäne beachtet wird. Die Passwörter werden dann immer anhand der aktuellen Richtlinie generiert.

Für Nicht-IT Mitarbeiter die administrieren, bedeutet dies keine Veränderung. Erstellt die Personalabteilung beispielsweise einen neuen Benutzer im AD, so wird automatisch das geänderte Skript für die Passwortgenerierung geladen.

Unterstützung benötigt?

Gerne stellen wir Ihnen unsere Leistungen und Lösungen in einem persönlichen Gespräch vor und würden uns über Ihre Kontaktaufnahme sehr freuen!

Artikel weiterempfehlen:
  • teilen
  • tweeten
  • sharen
  • xingen
  • mailen
Artikel erstellt am: 09.04.2021
Tags: Exchange-OrdnerExchange-PostfachGet-MailboxPowerShell
3

You also might be interested in

Powershell-zufaelliges-passwort

PowerShell – Zufälliges Passwort nach eigenen Vorgaben generieren

Mai 18, 2016

Passwörter sind immer Diskussionsthema in der IT-Sicherheit. Wie sind die[...]

Azure Active Directory PowerShell Version 2

Azure Active Directory PowerShell Version 2

Aug 29, 2017

Microsoft hat die PowerShell cmdlets zur Verwaltung des AzureAD aktualisiert.[...]

PowerShell 5.0

PowerShell 5.0 Write-Information und der neue Information Stream

Mrz 14, 2017

  Mit Windows 10 und Server 2016 kommt automatisch auch[...]

Leave a Reply

<p>Danke für Ihre Anregungen, Fragen und Hinweise.<br/>Infos zum <a href="https://www.active-directory-faq.dekontakt/">Datenschutz</a></p>
Cancel Reply

FirstWare IDM-Portal im Test: IT-Administrator 08-2022

 

ADFAQ-FirstAttribute

Wer schreibt ?

Team der FirstAttribute AG

Consultants und Entwickler der FirstAttribute arbeiten seit mehr als 20 Jahren in IAM- und Cloud-Transition-Projekten.
Zusammen verfügen Sie über einen wertvollen Erfahrungsschatz im Bereich Active Directory und Azure AD und teilen diesen auf Active Directory FAQ.

Neueste Artikel

  • Kontakte aus Outlook exportieren
  • 8 Tipps für mehr Sicherheit in Active Directory und Backups von AD
  • Azure AD Custom Security Attributes ermöglichen flexible Berechtigungsstrukturen
  • Dateiberechtigungen in MS Teams und SharePoint Online verwalten – So funktioniert es
  • AD-Gruppen in Microsoft Teams verwenden – Dynamische Gruppen in der Praxis

Unsere IAM-Lösungen

Ihre IAM-Lösung: FirstWare IDM-Portal

 

my-IAM für Cloud Identity Management in Microsoft Teams

Kontakt aufnehmen

Sie haben eine Frage oder Anmerkung? Schicken Sie uns schnell eine Nachricht.

Nachricht senden
Jetzt AD Tasks vereinfachen und delegieren: FirstWare IDM-Portal

Folgen Sie uns

Kontakt

  • FirstAttribute AG
  • Am Büchele 18, 86928 Hofstetten, Germany
  • +49 89 215 442 400
  • https://www.firstattribute.com

Schlagwörter

.Net ACL Active Directory AD LDS AD Objekt Azure AD Berechtigung Cloud cmdlets Delegation Domain Controller dynamicgroup dynamische Gruppen Exchange Exchange-Ordner Exchange-Postfach Exchange Migration Federation FirstWare Get-Mailbox Global Catalog Group Policy Gruppen Gruppenmitgliedschaft IDM-Portal LDAP m365 Microsoft Azure Migration New-ADUser Novell NTFS Office 365 PowerShell QMM QMM AD QMM Exchange Quest Migration Manager Schema Set-ADUser SID SID History Update Windows 10 Windows Server 2012 R2

Neueste Kommentare

  • activedirectoryfaq.com sharepoint login - infoslist bei Windows 365 und Azure AD verstehen in Theorie und Praxis
  • Domäne Letzte Anmeldung - ObenGesichert.com bei LastLogon vs. LastLogonTimestamp
  • Teams Code Zur Anmeldung - ObenGesichert.com bei Authentifizierung für MS Teams in hybriden Netzwerken
Login
Impressum
Datenschutzerklärung

© 2023 · Active-Directory-FAQ by firstattribute.com

Prev Next