• 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

PowerShell – Zufälliges Passwort nach eigenen Vorgaben generieren

Feb 21, 2019 (Letztes Update) | Posted by Steve König PowerShell |

 

PowerShell – Zufälliges Passwort nach eigenen Vorgaben generieren

Passwörter sind immer Diskussionsthema in der IT-Sicherheit. Wie sind die Richtlinien? Welche Zeichen müssen enthalten sein? Wie oft muss es gewechselt werden? Wie sieht der Prozess bei vergessenem Passwort aus?

PowerShell eignet sich hervorragend, wenn es darum geht, ein zufälliges Passwort zu generieren.
Ein solches Skript kann z.B. für die AD Benutzerverwaltung genutzt werden.

Inhaltsverzeichnis

  • 1 Warum Passwörter generieren?
  • 2 Schritt 1: Zufällige Zeichen
  • 3 Schritt 2: Zufällige Reihenfolge
  • 4 Standard AD Benutzerverwaltung: Das Skript im IDM-Portal
    • 4.1 Benutzerverwaltung mit Skript anpassen
    • 4.2 Skriptänderung und delegierte Administration
  • 5 Vollständiges Skript: Zufälliges Passwort mit PowerShell

Warum Passwörter generieren?

Fast immer benötigt man ein Initial-Passwort. Ob nun für neue Benutzer im Netzwerk oder für das Zurücksetzen eines vergessenen Passworts muss dem Nutzer ein zufällig generiertes Passwort gegeben werden, mit dem dieser sich temporär einloggen kann.

Das ist oft leichter gesagt als getan, denn es kann meistens nicht einfach irgendein Passwort sein, sondern muss den festgelegten Richtlinien der Domäne entsprechen. Hat man dafür keine entsprechende Anwendung, die nach den Regeln ein Passwort generiert, sieht es schlecht aus. Es geht aber auch einfach selbst zu lösen: Nämlich mit PowerShell. Mit einem entsprechenden Skript lassen sich Passwörter einfach und vor allem sicher automatisiert erzeugen.

In diesem Beitrag möchte ich Ihnen ein Skript zeigen, mit dem Sie nicht nur entsprechend Ihren Sicherheitsrichtlinien einfach Passwörter erzeugen können, sondern das die Art der Erzeugung bei Änderung dieser Richtlinien auch ganz einfach anpassen können.

Das Passwort generieren wir in zwei Schritten.

Schritt 1: Zufällige Zeichen

Zuerst generieren wird einen String, in dem die nach unserer Definition benötigten Zeichen enthalten sind – natürlich zufällig ausgewählt. Um das so generisch wie möglich zu halten, brauchen wir dafür nur eine Funktion, der wir sagen, wie viele Zeichen wir benötigen und aus welchem Satz an Zeichen diese zufällig ausgewählt werden soll.

Diese Funktion sieht folgendermaßen aus:

PowerShell
1
2
3
4
5
function Get-RandomCharacters($length, $characters) {
    $random = 1..$length | ForEach-Object { Get-Random -Maximum $characters.length }
    $private:ofs=""
    return [String]$characters[$random]
}

Die Funktion wählt solange zufällig einen Index aus dem übergebenen String, bis die festgelegte Anzahl erreicht ist. Anschließend werden die Zeichen des Eingabe-Strings an diesen Indizes als Gesamt-String wieder zurückgegeben (ohne Leerzeichen dazwischen).

Jetzt können wir uns mit dieser Funktion einen zufälligen Passwort-String zusammenbauen. Je nachdem, wie unsere Regeln lauten, rufen wir die Funktion mit einem bestimmten Zeichensatz und einer bestimmten Länge auf und fügen das Ergebnis zu einem Gesamt-String zusammen.

Unsere Passwort-Richtlinie könnte bspw. so lauten:

  • Min. 8 Zeichen
  • Davon min. 1 Großbuchstabe
  • Davon min. 1 Zahl
  • Davon min. 1 Sonderzeichen
  • Rest Kleinbuchstaben

Dementsprechend bauen wir unseren String auf:

PowerShell
1
2
3
4
$password = Get-RandomCharacters -length 5 -characters 'abcdefghiklmnoprstuvwxyz'
$password += Get-RandomCharacters -length 1 -characters 'ABCDEFGHKLMNOPRSTUVWXYZ'
$password += Get-RandomCharacters -length 1 -characters '1234567890'
$password += Get-RandomCharacters -length 1 -characters '!"§$%&/()=?}][{@#*+'

Schritt 2: Zufällige Reihenfolge

Nun könnte man dies bereits als Passwort verwenden. Das Problem ist natürlich, dass jedes so generierte Password zwar zufällige Zeichen hat, jedoch die Zeichen immer an derselben Stelle des Strings stehen. In diesem Fall wären es also immer 5 Kleinbuchstaben, 1 Großbuchstabe, 1 Zahl und schließlich 1 Sonderzeichen. Erkennt ein potentieller Angreifer dieses Muster, würde ihm das einen Brute-Force-Angriff erleichtern. Deswegen sollten wir noch dafür sorgen, dass wir die Zeichen des Passworts noch einmal „durchmischen“.

Dafür brauchen wir eine weitere Funktion.
Diese nimmt unser Passwort entgegen und vertauscht die Reihenfolge der Zeichen:

PowerShell
1
2
3
4
5
6
function Scramble-String([string]$inputString){    
    $characterArray = $inputString.ToCharArray()  
    $scrambledStringArray = $characterArray | Get-Random -Count $characterArray.Length    
    $outputString = -join $scrambledStringArray
    return $outputString
}

Die Funktion macht nichts weiter, als das Passwort in CharacterArray umzuwandeln, die Zeichen auszulesen und sie in einer zufälligen Reihenfolge in ein neues CharacterArray zu schreiben. Mit einem einfachen Join wird das Array schließlich wieder in einen String verwandelt und schon haben wir unser zufällig generiertes Passwort. Lässt man sich die Strings jeweils nach dem Ausführen der Funktionen ausgeben, kann man gut sehen, wie das Skript arbeitet:

Ergebnis Passwort Generierung

Standard AD Benutzerverwaltung: Das Skript im IDM-Portal

Das Skript findet in dieser oder ähnlicher Form oft Einsatz in unserem FirstWare IDM-Portal. Mit dieser Software können Sie nicht nur einfach und schnell Identitäten in Ihrem Active Directory verwalten, sondern auch viele Prozesse automatisieren.

Benutzerverwaltung mit Skript anpassen

Dazu stellt das IDM-Portal mit dem PowerShell-Provider eine Schnittstelle zu PS-Skripten wie diesem bereit. So lassen sich individuell angepasste Skripte in das Portal einbringen, um zum Beispiel eine Nutzer-Eigenschaft wie das Passwort generieren zu lassen.

idm-portal-powershell-passwort

Skriptänderung und delegierte Administration

Sollte sich einmal die Passwort-Sicherheitsrichtlinie ändern, kann einfach und schnell reagiert werden.
Mit einer kleinen Änderung im Skript funktioniert dies sofort und ohne weiteren Konfigurationsaufwand für alle Benutzer, die das IDM-Portal verwenden.

Wie verhält es sich mit Kollegen, die mit dem IDM-Portal arbeiten und delegierte Active Directory Aufgaben durchführen?
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.

Active-Directory-Delegation-Powershell

Vollständiges Skript: Zufälliges Passwort mit PowerShell

Zum Schluss gibt es noch das gesamte Skript zum Kopieren und selbst ausprobieren:

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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
}
 
$password = Get-RandomCharacters -length 5 -characters 'abcdefghiklmnoprstuvwxyz'
$password += Get-RandomCharacters -length 1 -characters 'ABCDEFGHKLMNOPRSTUVWXYZ'
$password += Get-RandomCharacters -length 1 -characters '1234567890'
$password += Get-RandomCharacters -length 1 -characters '!"§$%&/()=?}][{@#*+'
 
Write-Host $password
 
$password = Scramble-String $password
 
Write-Host $password

Fragen zu Passwort-Richtlinien oder AD-Konzepten? Wir freuen uns auf Ihre Nachricht.

 

Artikel weiterempfehlen:
  • teilen
  • tweeten
  • sharen
  • xingen
  • mailen
Artikel erstellt am: 18.05.2016
Tags: FirstWareIDM-PortalKennwortPasswortPasswortgenerierungPowerShell
0

You also might be interested in

PowerShell

Powershell Logfile Monitoring – AD Migration

Feb 12, 2015

Bei einer Active Directory Migration müssen oft viele Logfiles die[...]

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[...]

Bitlocker-Recovery Password mit PowerShell auslesen

Bitlocker-Recovery Password mit PowerShell auslesen

Nov 2, 2020

In vielen Unternehmen wird die Verschlüsselung mit BitLocker genutzt. BitLocker[...]

2 Comments

Leave your reply.

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

  • 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
  • Verbindung zwischen Microsoft 365 und SharePoint Online zu Azure AD

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