EINFÜHRUNG
Microsoft hat das Sicherheitsbulletin MS14-025 veröffentlicht. Weitere Informationen zu diesem Sicherheitsbulletin:
Private Benutzer:
https://www.microsoft.com/security/pc-security/updates.aspx Überspringen Sie die Details: Laden Sie die Updates für Ihren Heimcomputer oder Laptop jetzt von der Microsoft Update-Website herunter:
IT-Profis:
Hilfe und Support zum Sicherheitsupdate
Hilfe beim Installieren von Updates:
Support für Microsoft Update
Sicherheitslösungen für IT-Profis:
TechNet Security – Problembehandlung und Support
Schützen Sie Ihren Windows-basierten Computer Windows vor Viren und Schadsoftware:
Safety and Security Center
Lokaler Support entsprechend Ihrem Land:
Internationaler Support
Weitere Informationen
Bekannte Probleme und weitere Informationen zu diesem Sicherheitsupdate
Die folgenden Artikel enthalten weitere Informationen zu diesem Sicherheitsupdate in Bezug auf einzelne Produktversionen. Die Artikel können Informationen zu bekannten Problemen enthalten. Wenn dies der Fall ist, wird das bekannte Problem unter jedem Artikellink aufgeführt.
-
MS14-025: Beschreibung des Sicherheitsupdates für Windows-Remoteserver-Verwaltungstools für Systeme, auf denen update 2919355 installiert ist: 13. Mai 2014
-
MS14-025: Beschreibung des Sicherheitsupdates für windows-Remoteserver-Verwaltungstools für Systeme, auf denen kein Update installiert 2919355 installiert ist: 13. Mai 2014
Gruppenrichtlinie Einstellungen
Übersicht
Einige Gruppenrichtlinie Einstellungen können ein Kennwort speichern. Diese Funktionalität wird entfernt, da das Kennwort unsicher gespeichert wurde. In diesem Artikel werden die Änderungen an der Benutzeroberfläche und alle verfügbaren Problemumgehungen beschrieben.
Die folgenden Gruppenrichtlinie Einstellungen lassen das Speichern von Benutzernamen und Kennwörtern nicht mehr zu:
- Laufwerkszuordnungen
- Lokale Benutzer und Gruppen
- Geplante Aufgaben
- Dienste
- Data Sources
Dies wirkt sich auf das Verhalten aller vorhandenen Gruppenrichtlinie Objects (GPOs) in Ihrer Umgebung aus, die auf Kennwörtern basieren, die in diesen Einstellungen enthalten sind. Außerdem wird verhindert, dass mithilfe dieser Funktion neue Gruppenrichtlinie Einstellungen erstellt werden.
Für Drive Maps, lokale Benutzer und Gruppen und Dienste können Sie ähnliche Ziele möglicherweise durch andere, sicherere Funktionen in Windows erreichen.
Für geplante Aufgaben und Datenquellen können Sie nicht die gleichen Ziele erreichen, die durch die unsichere Funktionalität von Gruppenrichtlinie Einstellungen-Kennwörtern verfügbar waren.
Szenarien
Die folgenden Gruppenrichtlinie Einstellungen sind von dieser Änderung betroffen. Jede Einstellung wird kurz und dann ausführlicher behandelt. Darüber hinaus werden Problemumgehungen bereitgestellt, mit denen Sie dieselben Aufgaben ausführen können.
| Betroffene Einstellung | Gilt für Benutzer |
Gilt für Computer |
|---|---|---|
| Lokale Benutzerverwaltung | Ja | Ja |
| Zugeordnete Laufwerke | Ja | Nein |
| Dienste | Nein | Ja |
| Geplante Vorgänge (up-level) | Ja | Ja |
| Geplante Vorgänge (down-level) | Ja | Ja |
| Sofortige Aufgaben (auf höherer Ebene) | Ja | Ja |
| Sofortige Aufgaben (down-level) | Ja | Ja |
| Datenquellen | Ja | Ja |
Zusammenfassung der Änderungen
- Kennwortfelder in allen betroffenen Einstellungen sind deaktiviert. Administratoren können mithilfe dieser Kennwortfelder keine neuen Einstellungen erstellen.
- Das Feld "Benutzername" ist in einigen Einstellungen deaktiviert.
- Vorhandene Einstellungen, die ein Kennwort enthalten, können nicht aktualisiert werden. Sie können nur entsprechend der jeweiligen Einstellung gelöscht oder deaktiviert werden.
- Das Verhalten für die Aktionen Löschen und Deaktivieren hat sich für die Einstellungen nicht geändert.
- Wenn ein Administrator eine Einstellung öffnet, die das CPassword-Attribut enthält, erhält der Administrator das folgende Warnungsdialogfeld, um ihn über die aktuelle Einstellung zu informieren. Versuche, Änderungen an neuen oder vorhandenen Einstellungen zu speichern, die das CPassword-Attribut erfordern, lösen dasselbe Dialogfeld aus. Nur die Aktionen Löschen und Deaktivieren lösen keine Warnungsdialogfelder aus.
Szenario 1: Lokale Benutzerverwaltung
Die Einstellung Lokale Benutzerverwaltung wird häufig verwendet, um lokale Administratoren zu erstellen, die über ein bekanntes Kennwort auf einem Computer verfügen. Dieses Feature ist aufgrund der Art und Weise, wie Gruppenrichtlinie Preferences Kennwörter speichert, nicht sicher. Daher ist diese Funktionalität nicht mehr verfügbar. Die folgenden Einstellungen sind betroffen:
- Computerkonfiguration –> Systemsteuerung Einstellungen –> Lokale Benutzer und Gruppen –> Neu –> Lokaler Benutzer
- Benutzerkonfiguration –> Systemsteuerung Einstellungen –> Lokale Benutzer und Gruppen –> Neu –> Lokaler Benutzer
Wichtige Änderungen
Aktion: Erstellen oder Ersetzen
- Die Felder Benutzername, Kennwort und Kennwort bestätigen sind deaktiviert.
- Das Warnungsdialogfeld wird angezeigt, wenn der Administrator öffnet oder versucht, Änderungen an einer vorhandenen Einstellung zu speichern, die ein Kennwort enthält.
Aktion: Aktualisieren
- Die Felder Kennwort und Kennwort bestätigen sind deaktiviert.
- Das Warnungsdialogfeld wird angezeigt, wenn der Administrator öffnet oder versucht, Änderungen an einer vorhandenen Einstellung zu speichern, die ein Kennwort enthält.
Aktion: Löschen
- Keine Verhaltensänderung
Problemumgehungen
Für Diejenigen, die sich zuvor auf die Gruppenrichtlinie Einstellung zum Festlegen lokaler Administratorkennwörter verlassen haben, wird das folgende Skript als sichere Alternative zu CPassword bereitgestellt. Kopieren Und speichern Sie den Inhalt in eine neue Windows PowerShell-Datei, und führen Sie dann das Skript aus, wie in der zugehörigen angegeben. BEISPIELabschnitt.
Microsoft stellt Programmierbeispiele nur zur Veranschaulichung zur Verfügung, ohne ausdrückliche oder stillschweigende Garantie. Dies schließt die stillschweigende Gewährleistung der Marktgängigkeit oder der Eignung für einen bestimmten Zweck ein, ist aber nicht darauf beschränkt. In diesem Artikel wird davon ausgegangen, dass Sie mit der vorgestellten Programmiersprache und den Werkzeugen zum Erstellen und Debuggen von Prozeduren vertraut sind. Die Support-Techniker von Microsoft können Ihnen die Funktionalität eines bestimmten Verfahrens erklären. Sie werden diese Beispiele jedoch nicht ändern, um zusätzliche Funktionen bereitzustellen oder Verfahren zu konstruieren, die Ihren speziellen Anforderungen entsprechen.
Invoke-PasswordRoll
{
<#
. SYNOPSIS
Dieses Skript kann verwendet werden, um die Lokalen Kontokennwörter auf Remotecomputern auf zufällige Kennwörter festzulegen. Die Kombination aus Benutzername/Kennwort/Server wird in einer CSV-Datei gespeichert.
Die in der CSV-Datei gespeicherten Kontokennwörter können mit einem Kennwort der Administratoren verschlüsselt werden, die sicherstellen, dass Klartextkontokennwörter nicht auf den Datenträger geschrieben werden.
Die verschlüsselten Kennwörter können mit einer anderen Funktion in dieser Datei entschlüsselt werden: ConvertTo-CleartextPassword
Funktion: Invoke-PasswordRoll
Autor: Microsoft
Version: 1.0
. BESCHREIBUNG
Dieses Skript kann verwendet werden, um die Lokalen Kontokennwörter auf Remotecomputern auf zufällige Kennwörter festzulegen. Die Kombination aus Benutzername/Kennwort/Server wird in einer CSV-Datei gespeichert.
Die in der CSV-Datei gespeicherten Kontokennwörter können mit einem Kennwort der Administratoren verschlüsselt werden, die sicherstellen, dass Klartextkontokennwörter nicht auf den Datenträger geschrieben werden.
Die verschlüsselten Kennwörter können mit einer anderen Funktion in dieser Datei entschlüsselt werden: ConvertTo-CleartextPassword
. PARAMETER ComputerName
Ein Array von Computern, für die das Skript mithilfe von PowerShell-Remoting ausgeführt werden soll.
. PARAMETER LocalAccounts
Ein Array von lokalen Konten, deren Kennwort geändert werden soll.
. PARAMETER TsvFileName
Die Datei, an die die Kombinationen aus Benutzername/Kennwort/Server ausgegeben werden sollen.
. PARAMETER EncryptionKey
Ein Kennwort, mit dem die TSV-Datei verschlüsselt werden soll. Verwendet die AES-Verschlüsselung. Nur die in der TSV-Datei gespeicherten Kennwörter werden verschlüsselt, der Benutzername und der Servername sind Klartext.
. PARAMETER PasswordLength
Die Länge der Kennwörter, die nach dem Zufallsprinzip für lokale Konten generiert werden.
. PARAMETER NoEncryption
Verschlüsseln Sie die in der TSV-Datei gespeicherten Kontokennwörter nicht. Dies führt dazu, dass Klartextkennwörter auf den Datenträger geschrieben werden.
. BEISPIEL
. .\Invoke-PasswordRoll.ps1 #Loads die Funktionen in dieser Skriptdatei
Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator","CustomLocalAdmin") -TsvFileName "LocalAdminCredentials.tsv" -EncryptionKey "Password1"
Stellt eine Verbindung mit allen Computern her, die in der Datei "computerlist.txt" gespeichert sind. Wenn das lokale Konto "administrator" und/oder "CustomLocalAdmin" auf dem System vorhanden ist, wird ihr Kennwort geändert.
auf ein zufällig generiertes Kennwort der Länge 20 (Standard). Die Kombinationen aus Benutzername/Kennwort/Server werden in LocalAdminCredentials.tsv gespeichert, und die Kontokennwörter werden mit dem Kennwort "Password1" AES verschlüsselt.
. BEISPIEL
. .\Invoke-PasswordRoll.ps1 #Loads die Funktionen in dieser Skriptdatei
Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator") -TsvFileName "LocalAdminCredentials.tsv" -NoEncryption -PasswordLength 40
Stellt eine Verbindung mit allen Computern her, die in der Datei "computerlist.txt" gespeichert sind. Wenn das lokale Konto "Administrator" auf dem System vorhanden ist, wird sein Kennwort in ein zufällig generiertes Geändert.
Kennwort der Länge 40. Die Kombinationen aus Benutzername/Kennwort/Server werden unverschlüsselt in LocalAdminCredentials.tsv gespeichert.
. NOTIZEN
Anforderungen:
-PowerShellv2 oder höher muss installiert sein
-PowerShell-Remoting muss auf allen Systemen aktiviert sein, auf denen das Skript ausgeführt wird.
Skriptverhalten:
- Wenn ein lokales Konto im System vorhanden ist, aber nicht im LocalAccounts-Parameter angegeben ist, schreibt das Skript eine Warnung auf den Bildschirm, um Sie über das Vorhandensein dieses lokalen Kontos zu informieren. Das Skript wird in diesem Fall weiterhin ausgeführt.
– Wenn im Parameter LocalAccounts ein lokales Konto angegeben ist, das Konto aber nicht auf dem Computer vorhanden ist, geschieht nichts (ein Konto wird NICHT erstellt).
- Die Funktion ConvertTo-CleartextPassword, die in dieser Datei enthalten ist, kann verwendet werden, um Kennwörter zu entschlüsseln, die verschlüsselt in der TSV-Datei gespeichert sind.
– Wenn ein in ComputerName angegebener Server nicht mit verbunden werden kann, gibt PowerShell eine Fehlermeldung aus.
-Microsoft rät Unternehmen, regelmäßig alle kennwörter für lokale Konten und Domänenkonten zu verwenden.
#>
[CmdletBinding(DefaultParameterSetName="Encryption")]
Param(
[Parameter(Mandatory=$true)]
[String[]]
$ComputerName,
[Parameter(Mandatory=$true)]
[String[]]
$LocalAccounts,
[Parameter(Mandatory=$true)]
[Zeichenfolge]
$TsvFileName,
[Parameter(ParameterSetName="Encryption", Mandatory=$true)]
[Zeichenfolge]
$EncryptionKey,
[Parameter()]
[ValidateRange(20,120)]
[Int]
$PasswordLength = 20,
[Parameter(ParameterSetName="NoEncryption", Mandatory=$true)]
[Wechseln]
$NoEncryption
)
#Load aller erforderlichen .NET-Klassen
Add-Type -AssemblyName "System.Web" -ErrorAction Stop
#This ist der Scriptblock, der auf jedem in Computername angegebenen Computer ausgeführt wird.
$RemoteRollScript = {
Param(
[Parameter(Mandatory=$true, Position=1)]
[String[]]
$Passwords,
[Parameter(Mandatory=$true, Position=2)]
[String[]]
$LocalAccounts,
#This ist hier, damit ich aufzeichnen kann, wie der Servername, mit dem das Skript verbunden ist, war, manchmal werden die DNS-Einträge vermasselt, es kann schön sein, dies zu haben.
[Parameter(Mandatory=$true, Position=3)]
[Zeichenfolge]
$TargettedServerName
)
$LocalUsers = Get-WmiObject Win32_UserAccount -Filter "LocalAccount=true" | Foreach {$_. Name}
#Check, wenn der Computer über lokale Benutzerkonten verfügt, deren Kennwörter von diesem Skript nicht gerollt werden.
foreach ($User in $LocalUsers)
{
if ($LocalAccounts -inotcontains $User)
{
Write-Warning "Server: '$($TargettedServerName)' verfügt über ein lokales Konto '$($User)', dessen Kennwort von diesem Skript NICHT geändert wird"
}
}
#For jedes lokale Konto, das auf diesem Server vorhanden ist, ändern Sie das Kennwort.
$PasswordIndex = 0
foreach ($LocalAdmin in $LocalAccounts)
{
$Password = $Passwords[$PasswordIndex]
if ($LocalUsers -icontains $LocalAdmin)
{
Versuch
{
$objUser = [ADSI]"WinNT://localhost/$($LocalAdmin), user"
$objUser.psbase.Invoke("SetPassword", $Password)
$Properties = @{
TargettedServerName = $TargettedServerName
Benutzername = $LocalAdmin
Kennwort = $Password
RealServerName = $env:Computername
}
$ReturnData = New-Object PSObject -Property $Properties
Write-Output $ReturnData
}
Fangen
{
Write-Error "Fehler beim Ändern des Kennworts für benutzer:$($LocalAdmin) auf server:$($TargettedServerName)"
}
}
$PasswordIndex++
}
}
#Generate das Kennwort auf dem Client, auf dem dieses Skript ausgeführt wird, nicht auf dem Remotecomputer. System.Web.Security ist im .NET-Clientprofil nicht verfügbar. Tätigen dieses Aufrufs
# auf dem Client, auf dem das Skript ausgeführt wird, stellt sicher, dass nur für einen Computer die vollständige .NET-Runtime installiert sein muss (im Gegensatz zu jedem System, auf dem das Kennwort gerollt wurde).
Create-RandomPassword
{
Param(
[Parameter(Mandatory=$true)]
[ValidateRange(20,120)]
[Int]
$PasswordLength
)
$Password = [System.Web.Security.Membership]::GeneratePassword($PasswordLength, $PasswordLength /4)
#This sollte nie scheitern, aber ich stelle hier sowieso eine Integritätsprüfung
if ($Password.Length -ne $PasswordLength)
{
throw new Exception("Password returned by GeneratePassword is not same length as required. Erforderliche Länge: $($PasswordLength). Generierte Länge: $($Password.Length)")
}
$Password zurückgeben
}
#Main Funktionalität: Generieren eines Kennworts und Remotezugriff auf Computer, um das Kennwort der angegebenen lokalen Konten zu ändern
if ($PsCmdlet.ParameterSetName -ieq "Encryption")
{
Versuch
{
$Sha 256 = new-object System.Security.Cryptography.SHA256CryptoServiceProvider
$SecureStringKey = $Sha 256.ComputeHash([System.Text.UnicodeEncoding]::Unicode.GetBytes($EncryptionKey))
}
Fangen
{
Write-Error "Fehler beim Erstellen des TSV-Verschlüsselungsschlüssels" -ErrorAction Stop
}
}
foreach ($Computer in $ComputerName)
{
#Need, um 1 Kennwort für jedes Konto zu generieren, das geändert werden kann
$Passwords = @()
for ($i = 0; $i -lt $LocalAccounts.Length; $i++)
{
$Passwords += Create-RandomPassword -PasswordLength $PasswordLength
}
Write-Output "Herstellen einer Verbindung mit dem Server '$($Computer)'", um angegebene lokale Administratorkennwörter zu verwenden.
$Result = Invoke-Command -ScriptBlock $RemoteRollScript -ArgumentList @($Passwords, $LocalAccounts, $Computer) -ComputerName $Computer
#If Verschlüsselung verwendet wird, verschlüsseln Sie das Kennwort mit dem vom Benutzer bereitgestellten Schlüssel, bevor Sie auf den Datenträger schreiben.
if ($Result -ne $null)
{
if ($PsCmdlet.ParameterSetName -ieq "NoEncryption")
{
$Result | Select-Object Benutzername,Kennwort,TargettedServerName,RealServerName | Export-Csv -Append -Path $TsvFileName -NoTypeInformation
}
else
{
$null zurückgegebenen Einträge #Filters
$Result = $Result | Select-Object Benutzername,Kennwort,TargettedServerName,RealServerName
foreach ($Record in $Result)
{
$PasswordSecureString = ConvertTo-SecureString -AsPlainText -Force -String ($Record.Password)
$Record | Add-Member -MemberType NoteProperty -Name EncryptedPassword -Value (ConvertFrom-SecureString -Key $SecureStringKey -SecureString $PasswordSecureString)
$Record.PSObject.Properties.Remove("Password")
$Record | Select-Object Username,EncryptedPassword,TargettedServerName,RealServerName | Export-Csv -Append -Path $TsvFileName -NoTypeInformation
}
}
}
}
}
ConvertTo-CleartextPassword
{
<#
. SYNOPSIS
Diese Funktion kann verwendet werden, um Kennwörter zu entschlüsseln, die von der Funktion Invoke-PasswordRoll verschlüsselt gespeichert wurden.
Funktion: ConvertTo-CleartextPassword
Autor: Microsoft
Version: 1.0
. BESCHREIBUNG
Diese Funktion kann verwendet werden, um Kennwörter zu entschlüsseln, die von der Funktion Invoke-PasswordRoll verschlüsselt gespeichert wurden.
. PARAMETER EncryptedPassword
Das verschlüsselte Kennwort, das in einer TSV-Datei gespeichert wurde.
. PARAMETER EncryptionKey
Das Kennwort, das für die Verschlüsselung verwendet wird.
. BEISPIEL
. .\Invoke-PasswordRoll.ps1 #Loads die Funktionen in dieser Skriptdatei
ConvertTo-CleartextPassword -EncryptionKey "Password1" -EncryptedPassword 76492d1116743f0423413b16050a5345MgB8AGcAZgBaAHUAaQBwADAAQgB2AGgAcABNADMASwBaAFoAQQBzADEAeABjAEEAPQA9AHwAZgBiAGYAMAA1ADYANgA2ADEANwBBkkADQAZgAwADMANABjAGUAZQAxAGIAMABiADkANgBiADkAMAA4ADcANwBhADMAYQA3AGYAOABkADcAMQA5ADQAMwBmAGYANQBhADEAYQBjADcANABkADIANgBhADUANwBlADgAMAAyADQANgA1ADIAOQA0AGMAZQA0ADEAMwAzADcANQAyADUANAAzADYAMAA1AGEANgAzADEAMQA5ADAAYwBmADQAZAA2AGQA"
Entschlüsselt das verschlüsselte Kennwort, das in der TSV-Datei gespeichert wurde.
#>
Param(
[Parameter(Mandatory=$true)]
[Zeichenfolge]
$EncryptedPassword,
[Parameter(Mandatory=$true)]
[Zeichenfolge]
$EncryptionKey
)
$Sha 256 = new-object System.Security.Cryptography.SHA256CryptoServiceProvider
$SecureStringKey = $Sha 256.ComputeHash([System.Text.UnicodeEncoding]::Unicode.GetBytes($EncryptionKey))
[SecureString]$SecureStringPassword = ConvertTo-SecureString -String $EncryptedPassword -Key $SecureStringKey
Write-Output ([System.Runtime.InteropServices.Marshal]::P trToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($SecureStringPassword)))
}
Administratoren können lokale Administratorkonten zu Computern hinzufügen, indem sie eine Active Directory-Gruppe erstellen und sie der lokalen Administratorgruppe über Gruppenrichtlinie Einstellungen –> Lokale Gruppe hinzufügen. Diese Aktion speichert keine Anmeldeinformationen zwischen. Das Dialogfeld sieht wie folgt aus. Diese Problemumgehung erfordert eine Verbindung mit Active Directory Domain Services, wenn der Benutzer mit diesen Anmeldeinformationen angemeldet ist.
Szenario 2: Zugeordnete Laufwerke
Administratoren verwenden Laufwerkszuordnungen, um Benutzern Netzwerkspeicherorte zuzuweisen. Das Kennwortschutzfeature wird verwendet, um den autorisierten Zugriff auf das Laufwerk sicherzustellen. Die folgenden Einstellungen sind betroffen:
- Benutzerkonfiguration –> Windows-Einstellungen –> Laufwerkszuordnungen –> Neu –> Zugeordnetes Laufwerk
Wichtige Änderungen
Aktion: Erstellen, Aktualisieren oder Ersetzen
- Die Felder Benutzername, Kennwort und Kennwort bestätigen sind deaktiviert.
Aktion: Löschen
- Keine Verhaltensänderung
Problemumgehungen
Anstatt die Kennwortmethode für die Authentifizierung zu verwenden, können Sie Windows Explorer verwenden, um Freigabeberechtigungen zu verwalten und Benutzern Rechte zuzuweisen. Sie können Active Directory-Objekte verwenden, um Berechtigungen für den Ordner zu steuern.
Szenario 3: Dienste
Sie können die Einstellung Dienste verwenden, um Diensteigenschaften so zu ändern, dass sie in einem anderen Kontext als dem ursprünglichen Sicherheitskontext ausgeführt werden. Die folgenden Einstellungen sind betroffen:
- Computerkonfiguration –> Systemsteuerung Einstellungen –> Dienste –> Neu –> Dienst
Wichtige Änderungen
Start: Keine Änderung, automatisch oder manuell
- Die Felder Kennwort und Kennwort bestätigen sind deaktiviert.
- Der Administrator kann nur integrierte Konten verwenden.
Start: Deaktivieren
- Keine Verhaltensänderung
Dialogfeld "Neu"
- Administratoren, die versuchen, nicht integrierte Benutzer für dieses Konto zu verwenden, erhalten die folgende Warnung:
Problemumgehungen
Dienste können weiterhin als lokales Systemkonto ausgeführt werden. Dienstberechtigungen können wie im folgenden Artikel in der Microsoft Knowledge Base dokumentiert geändert werden:
256345 Konfigurieren von Gruppenrichtlinie Einstellungen zum Festlegen der Sicherheit für Systemdienste
Hinweis Wenn der Dienst, den Sie konfigurieren möchten, nicht vorhanden ist, müssen Sie die Einstellungen auf einem Computer konfigurieren, auf dem der Dienst ausgeführt wird.
Szenario 4: Geplante und sofortige Aufgaben (up-level)
Diese werden verwendet, um geplante Aufgaben in einem bestimmten Sicherheitskontext auszuführen. Die Möglichkeit, Anmeldeinformationen für geplante Aufgaben zu speichern, die als beliebiger Benutzer ausgeführt werden, wenn dieser Benutzer nicht angemeldet ist, ist nicht mehr verfügbar. Die folgenden Einstellungen sind betroffen. (Beachten Sie, dass auf einigen Plattformen "Mindestens Windows 7" durch "Windows Vista und höher" ersetzt wird.)
- Computerkonfiguration –> Systemsteuerung Einstellungen –> Geplante Aufgaben –> Neu –> Geplante Aufgabe (mindestens Windows 7)
- Computerkonfiguration –> Systemsteuerung Einstellungen –> Geplante Aufgaben –> Neu –> Sofortige Aufgabe (mindestens Windows 7)
- Benutzerkonfiguration –> Systemsteuerung Einstellungen –> Geplante Aufgaben –> Neu –> Geplante Aufgabe (mindestens Windows 7)
- Benutzerkonfiguration –> Systemsteuerung Einstellungen –> Geplante Aufgaben –> Neu –> Sofortige Aufgabe (mindestens Windows 7)
Wichtige Änderungen
Aktion: Erstellen, Aktualisieren oder Ersetzen
- Wenn Sie die Option Ausführen auswählen, ob der Benutzer angemeldet ist oder nicht , fordert ein Dialogfeld den Administrator nicht mehr zur Eingabe von Anmeldeinformationen auf.
- Das Kontrollkästchen Kennwort nicht speichern ist deaktiviert. Standardmäßig ist das Kontrollkästchen ebenfalls aktiviert.
Aktion: Löschen
Keine Verhaltensänderung
Problemumgehungen
Für die Aufgaben "Geplante Aufgabe (mindestens Windows 7)" und "Sofortige Aufgabe (mindestens Windows 7)" können Administratoren bestimmte Benutzerkonten verwenden, wenn der betreffende Benutzer angemeldet ist. Oder sie haben nur Zugriff auf lokale Ressourcen als dieser Benutzer. Diese Aufgaben können weiterhin im Kontext des lokalen Diensts ausgeführt werden.
Szenario 5: Geplante und sofortige Tasks (down-level) Dies ist die down-level-Version der Einstellungen, die zum Ausführen von geplanten Aufgaben in einem bestimmten Sicherheitskontext verwendet werden. Die Möglichkeit, Anmeldeinformationen für geplante Aufgaben zu speichern, die als beliebiger Benutzer ausgeführt werden, wenn dieser Benutzer nicht angemeldet ist, ist nicht mehr verfügbar. Die folgenden Einstellungen sind betroffen:
- Computerkonfiguration –> Systemsteuerung Einstellungen –> Geplante Vorgänge –> Neu –> Geplante Aufgabe
- Computerkonfiguration –> Systemsteuerung Einstellungen –> Geplante Aufgaben –> Neu –> Direkttask (Windows XP)
- Benutzerkonfiguration –> Systemsteuerung Einstellungen –> Geplante Aufgaben –> Neu –> Geplante Aufgabe
- Benutzerkonfiguration –> Systemsteuerung Einstellungen –> Geplante Aufgaben –> Neu –> Direkttask (Windows XP)
Wichtige Änderungen
Aktion: Erstellen, Aktualisieren oder Ersetzen
- Das Kontrollkästchen Ausführen als ist deaktiviert. Daher sind die Felder Benutzername, Kennwort und Kennwort bestätigen deaktiviert.
Aktion: Löschen
Keine Verhaltensänderung
Problemumgehungen
Für die Elemente "Geplante Aufgabe" und "Sofortige Aufgabe (Windows XP)" werden geplante Aufgaben mit den Berechtigungen ausgeführt, die derzeit für den lokalen Dienst verfügbar sind.
Szenario 6: Datenquellen
Die Einstellung Datenquellen wird verwendet, um eine Datenquelle einem Computer oder Benutzer zuzuordnen. Dieses Feature speichert keine Anmeldeinformationen mehr, um den Zugriff auf Datenquellen zu ermöglichen, die durch ein Kennwort geschützt sind. Die folgenden Einstellungen sind betroffen:
- Computerkonfiguration –> Systemsteuerung Einstellungen –> Datenquellen
- Benutzerkonfiguration –> Systemsteuerung Einstellungen –> Datenquellen
Wichtige Änderungen
Aktion: Erstellen, Aktualisieren oder Ersetzen
- Die Felder Benutzername, Kennwort und Kennwort bestätigen sind deaktiviert:
Aktion: Löschen
- Keine Verhaltensänderung
Problemumgehungen
Es sind keine Problemumgehungen verfügbar. Diese Einstellung speichert keine Anmeldeinformationen mehr, um den Zugriff auf Datenquellen zu ermöglichen, die durch ein Kennwort geschützt sind.
Einstellung von CPassword
Entfernen von CPassword
Das Windows PowerShell Skript, das in diesem Microsoft Knowledge Base-Artikel enthalten ist, erkennt, ob eine Domäne Gruppenrichtlinie Einstellungen enthält, die CPassword verwenden könnten. Wenn CPassword-XML in einer bestimmten Einstellung erkannt wird, wird es in dieser Liste angezeigt.
Erkennen von CPassword-Einstellungen
Dieses Skript muss in einem lokalen Verzeichnis auf dem Domänencontroller ausgeführt werden, den Sie sauber möchten. Kopieren Und speichern Sie den Inhalt in eine neue Windows PowerShell-Datei, bestimmen Sie Das Systemlaufwerk, und führen Sie dann das Skript aus, wie in der folgenden Verwendung angegeben.
<#
. SYNOPSIS
Gruppenrichtlinie Objekte in Ihrer Domäne können Über Einstellungen verfügen, in denen Kennwörter für verschiedene Aufgaben gespeichert werden, z. B. die folgenden:
1. Data Sources
2. Laufwerkszuordnungen
3. Lokale Benutzer
4. Geplante Aufgaben (sowohl XP als auch up-level)
5. Dienste
Diese Kennwörter werden im Rahmen der GP-Einstellungen in SYSVOL gespeichert und sind aufgrund einer schwachen Verschlüsselung (32-Byte-AES) nicht sicher.
Daher wird empfohlen, dass Sie solche Einstellungen nicht in Ihrer Domänenumgebung bereitstellen und vorhandene Solche entfernen.
Einstellungen. Dieses Skript soll Administratoren dabei helfen, GP-Einstellungen in der SYSVOL-Datei ihrer Domäne zu finden, die Kennwörter enthält.
. BESCHREIBUNG
Dieses Skript sollte auf einem Domänencontroller oder einem Clientcomputer ausgeführt werden, der mit RSAT installiert ist, um alle Einstellungen zu drucken, die
kennwort mit Informationen wie GPO, Einstellungsname, GPEdit-Pfad, unter dem diese Einstellung definiert ist.
Nachdem Sie über eine Liste der betroffenen Einstellungen verfügen, können diese Einstellungen mithilfe des Editors in der Gruppenrichtlinie Management Console entfernt werden.
. SYNTAX
Get-SettingsWithCPassword.ps1 [-Path <String>]
. BEISPIEL
Get-SettingsWithCPassword.ps1 -Path %WinDir%\SYSVOL\domain
Get-SettingsWithCPassword.ps1 -Path <GPO Backup Folder Path>
. NOTIZEN
Wenn Gruppenrichtlinie PS-Modul nicht gefunden wird, enthält die Ausgabe GPO-GUIDs anstelle von GPO-Namen. Sie können entweder ausführen.
Dieses Skript auf einem Domänencontroller, oder führen Sie das Skript auf dem Client erneut aus, nachdem Sie RSAT und installiert haben
das modul Gruppenrichtlinie aktiviert.
Alternativ können Sie GPO-GUIDs verwenden, um GPO-Namen mithilfe des Cmdlets Get-GPO abzurufen.
. VERBINDEN
http://go.microsoft.com/fwlink/?LinkID=390507
#>
#----------------------------------------------------------------------------------------------------------------
Eingabeparameter
#--------------------------------------------------------------------------------------------------------------
param(
[string]$Path = $(throw "-Path is required.") # Verzeichnispfad, in dem sich GPPs befinden.
)
#---------------------------------------------------------------------------------------------------------------
$isGPModuleAvailable = $false
$impactedPrefs = { "Groups.xml", "ScheduledTasks.xml","Services.xml", "DataSources.xml", "Drives.xml" }
#----------------------------------------------------------------------------------------------------------------
Import group olicy module (falls verfügbar)
#----------------------------------------------------------------------------------------------------------------
if (-not (Get-Module -name "GroupPolicy"))
{
if (Get-Module -ListAvailable |
Where-Object { $_. Name -ieq "GroupPolicy" })
{
$isGPModuleAvailable = $true
Import-Module "GroupPolicy"
}
else
{
Write-Warning "Gruppenrichtlinie Modul für PowerShell kann nicht importiert werden. Daher werden GPO-GUIDs gemeldet.
Führen Sie dieses Skript auf dem Domänencontroller aus, um die GPO-Namen abzurufen, oder verwenden Sie das Cmdlet Get-GPO (auf DC), um den Gruppenrichtlinienobjektnamen aus der GPO-GUID abzurufen."
}
}
else
{
$isGPModuleAvailable = $true
}
Funktions-Enum-SettingsWithCpassword ( [Zeichenfolge]$sysvolLocation )
{
# GPMC-Strukturpfade
$commonPath = " -> Einstellungen -> Systemsteuerung Einstellungen -> "
$driveMapPath = " –> Einstellungen –> Windows-Einstellungen –> "
# Rekursives Abrufen aller XML-Dateien innerhalb des SYVOL-Speicherorts
$impactedXmls = Get-ChildItem $sysvolLocation -Recurse -Filter "*.xml" | Where-Object { $impactedPrefs -cmatch $_. Name }
# Jede XML-Datei enthält mehrere Einstellungen. Durchlaufen Sie jede Einstellung, um zu überprüfen, ob sie
# enthält das cpassword-Attribut und zeigt es an.
foreach ( $file in $impactedXmls )
{
$fileFullPath = $file. Fullname
# Legen Sie die GPP-Kategorie fest. Wenn sich die Datei unter dem Ordner "Computer" in SYSVOL befindet
# die Einstellung wird unter Computerkonfiguration definiert, andernfalls
Die #-Einstellung ist eine für die Benutzerkonfiguration.
if ( $fileFullPath.Contains("Machine") )
{
$category = "Computerkonfiguration"
}
elseif ( $fileFullPath.Contains("User") )
{
$category = "Benutzerkonfiguration"
}
else
{
$category = "Unbekannt"
}
# Abrufen von Dateiinhalten als XML
Versuch
{
[xml]$xmlFile = get-content $fileFullPath -ErrorAction Continue
}
catch [Ausnahme]{
Write-Host $_. Exception.Message
}
if ($xmlFile -eq $null)
{
weiter
}
switch ( $file. BaseName )
{
Gruppen
{
$gppWithCpassword = $xmlFile.SelectNodes("Groups/User") | where-Object { [String]::IsNullOrEmpty($_. Properties.cpassword) -eq $false }
$preferenceType = "Lokale Benutzer"
}
ScheduledTasks
{
$gppWithCpassword = $xmlFile.SelectNodes("ScheduledTasks/*") | where-Object { [String]::IsNullOrEmpty($_. Properties.cpassword) -eq $false }
$preferenceType = "Geplante Vorgänge"
}
Datasources
{
$gppWithCpassword = $xmlFile.SelectNodes("DataSources/DataSource") | where-Object { [String]::IsNullOrEmpty($_. Properties.cpassword) -eq $false }
$preferenceType = "Datenquellen"
}
Laufwerke
{
$gppWithCpassword = $xmlFile.SelectNodes("Drives/Drive") | where-Object { [String]::IsNullOrEmpty($_. Properties.cpassword) -eq $false }
$preferenceType = "Drive Maps"
}
Dienste
{
$gppWithCpassword = $xmlFile.SelectNodes("NTServices/NTService") | where-Object { [String]::IsNullOrEmpty($_. Properties.cpassword) -eq $false }
$preferenceType = "Services"
}
Standard
{ # clear gppWithCpassword und preferenceType für das nächste Element.
Versuch
{
Clear-Variable -Name gppWithCpassword -ErrorAction SilentlyContinue
Clear-Variable -Name preferenceType -ErrorAction SilentlyContinue
}
catch [Ausnahme]{}
}
}
if ($gppWithCpassword -ne $null)
{
# Erstellen des Gruppenrichtlinienobjektnamens aus der GUID, die aus filePath extrahiert wurde
$guidRegex = [regex]"\{(.*)\}"
$match = $guidRegex.match($fileFullPath)
if ($match. Erfolg)
{
$gpoGuid = $match.groups[1].value
$gpoName = $gpoGuid
}
else
{
$gpoName = "Unbekannt"
}
if($isGPModuleAvailable -eq $true)
{
Versuch
{
$gpoInfo = Get-GPO -Guid $gpoGuid -ErrorAction Continue
$gpoName = $gpoInfo.DisplayName
}
catch [Ausnahme] {
Write-Host $_. Exception.Message
}
}
# Anzeigevorausdrücke, die cpassword enthalten
foreach ( $gpp in $gppWithCpassword )
{
if ( $preferenceType -eq "Drive Maps" )
{
$prefLocation = $category + $driveMapPath + $preferenceType
}
else
{
$prefLocation = $category + $commonPath + $preferenceType
}
$obj = New-Object -typeName PSObject
$obj | Add-Member –membertype NoteProperty –name GPOName –value ($gpoName) –passthru |
Add-Member -MemberType NoteProperty -name Preference -value ($gpp. Name) -passthru |
Add-Member -MemberType NoteProperty -name Path -value ($prefLocation)
Write-Output $obj
}
} # end if $gppWithCpassword
} # end foreach $file
} # end functions Enum-PoliciesWithCpassword
#-----------------------------------------------------------------------------------
Überprüfen Sie, ob Path gültig ist. Listet alle Einstellungen auf, die cpassword enthalten.
#-----------------------------------------------------------------------------------
if (Testpfad $Path )
{
Enum-SettingsWithCpassword $Path
}
else
{
Write-Warning "Kein solches Verzeichnis: $Path"
}
Beispielverwendung (geht davon aus, dass das Systemlaufwerk C ist)
.\Get-SettingsWithCPassword.ps1 –path "C:\Windows\SYSVOL\domain" | Format-List
Hinweis Beachten Sie, dass Sie auch jedes Sicherungs-GPO als Ziel für den Pfad anstelle der Domäne verwenden können.
Das Erkennungsskript generiert eine Liste, die der folgenden ähnelt:
Bei längeren Listen sollten Sie die Ausgabe in einer Datei speichern:
.\Get-SettingsWithCPassword.ps1 –path "C:\Windows\SYSVOL\domain" | > ConvertTo-Html gpps.html
Entfernen von CPassword-Einstellungen
Um die Einstellungen zu entfernen, die CPassword-Daten enthalten, empfehlen wir, Gruppenrichtlinie Management Console (GPMC) auf dem Domänencontroller oder auf einem Client zu verwenden, auf dem Remoteserver-Verwaltungstools installiert sind. Sie können jede Einstellung in fünf Schritten auf diesen Konsolen entfernen. Führen Sie hierzu die folgenden Schritte aus:
- Öffnen Sie in GPMC die Einstellung, die CPassword-Daten enthält.
- Ändern Sie die Aktion in Löschen oder Deaktivieren, je nach Einstellung.
- Klicken Sie auf OK, um die Änderungen zu speichern.
- Warten Sie auf einen oder zwei Gruppenrichtlinie Aktualisierungszyklen, damit Änderungen an Clients weitergegeben werden können.
- Nachdem die Änderungen auf alle Clients angewendet wurden, löschen Sie die Einstellung.
- Wiederholen Sie die Schritte 1 bis 5 nach Bedarf, um Ihre gesamte Umgebung zu sauber. Wenn das Erkennungsskript null Ergebnisse zurückgibt, sind Sie fertig.
Dateihashinformationen
| Dateiname | SHA1-Hash | SHA256-Hash |
|---|---|---|
| Windows6.0-KB2928120-ia64.msu | B2A74305CB56191774BFCF9FCDEAA983B26DC9A6 | DCE8C0F9CEB97DBF1F7B9BAF76458B3770EF01C0EDC581621BC8C3B2C7FD14E7 |
| Windows6.0-KB2928120-x64.msu | 386457497682A2FB80BC93346D85A9C1BC38FBF7 | 1AF67EB12614F37F4AC327E7B5767AFA085FE676F6E81F0CED95D20393A1D38D |
| Windows6.0-KB2928120-x86.msu | 42FF283781CEC9CE34EBF459CA1EFE011D5132C3 | 016D7E9DBBC5E487E397BE0147B590CFBBB5E83795B97894870EC10171E16D4 |
| Windows6.1-KB2928120-ia64.msu | 5C2196832EC94B99AAF9B074D3938525B7219690 | 9958FA58134F55487521243AD9740BEE0AC210AC290D45C8322E424B3E5EBF16 |
| Windows6.1-KB2928120-x64.msu | EA5332F4E289DC799611EAB8E3EE2E86B7880A4B | 417A2BA34F8FD367556812197E2395ED40D8B394F9224CDCBE8AB3939795EC2A |
| Windows6.1-KB2928120-x86.msu | 7B7B6EE24CD8BE1AB3479F9E1CF9C98982C8BAB1 | 603206D44815EF2DC262016ED13D6569BE13D06E2C6029FB22621027788B8095 |
| Windows8-RT-KB2928120-x64.msu | E18FC05B4CCA0E195E62FF0AE534BA39511A8593 | FCAED97BF1D61F60802D397350380FADED71AED64435D3E9EAA4C0468D80141E |
| Windows8-RT-KB2928120-x86.msu | A5DFB34F3B9EAD9FA78C67DFC7ACACFA2FBEAC0B | 7F00A72D8A15EB2CA70F7146A8014E39A71CFF5E39596F379ACD883239DABD41 |
| Windows8.1-KB2928120-x64.msu | A07FF14EED24F3241D508C50E869540915134BB4 | 6641B1A9C95A7E4F0D5A247B9F48887AC94550B7F1D7B1198D5BCBA92F7A753 |
| Windows8.1-KB2928120-x86.msu | DE84667EC79CBA2006892452660EB99580D27306 | 468EE4FA3A22DDE61D85FD3A9D0583F504105DF2F8256539051BC0B1EB713E9C |
| Windows8.1-KB2961899-x64.msu | 10BAE807DB158978BCD5D8A7862BC6B3EF20038B | EC26618E23D9278FC1F02CA1F13BB289E1C6C4E0C8DA5D22E1D9CDA0DA8AFF51 |
| Windows8.1-KB2961899-x86.msu | 230C64447CC6E4AB3AD7B4D4655B8D8CEFBFBE98 | E3FAD567AB6CA616E42873D3623A777185BE061232B952938A8846A974FFA7AF |