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 bezogen 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: Hinweise zum Sicherheitsupdate für die Windows-Remoteserver-Verwaltungstools für Systeme, auf denen Update 2919355 installiert ist: 13. Mai 2014
-
MS14-025: Hinweise zum Sicherheitsupdate für die Windows-Remoteserver-Verwaltungstools für Systeme, auf denen das Update nicht 2919355 installiert ist: 13. Mai 2014
Einstellungen für Gruppenrichtlinien
Übersicht
In einigen Gruppenrichtlinien-Voreinstellungen kann ein Kennwort gespeichert werden. Diese Funktion wurde 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 Gruppenrichtlinien-Voreinstellungen lassen das Speichern von Benutzernamen und Kennwörtern nicht mehr zu:
- Laufwerksübersichten
- Lokale Benutzer und Gruppen
- Geplante Aufgaben
- Dienste
- Data Sources
Dies wirkt sich auf das Verhalten aller vorhandenen Gruppenrichtlinienobjekte (Group Policy Objects, GPOs) in Ihrer Umgebung aus, die auf Kennwörter angewiesen sind, die in diesen Einstellungen enthalten sind. Außerdem wird verhindert, dass durch die Verwendung dieser Funktion neue Gruppenrichtlinien-Einstellungen erstellt werden.
Für Laufwerkübersichten, lokale Benutzer und Gruppen und Dienste können Sie möglicherweise ähnliche Ziele durch andere, sicherere Funktionen in Windows erreichen.
Für geplante Aufgaben und Datenquellen können Sie nicht dieselben Ziele erreichen, die durch die unsichere Funktionalität der Kennwörter für Gruppenrichtlinien-Einstellungen verfügbar waren.
Szenarien
Die folgenden Gruppenrichtlinien-Einstellungen sind von dieser Änderung betroffen. Jede Präferenz wird kurz und dann ausführlicher behandelt. Darüber hinaus werden Problemumgehungen bereitgestellt, mit denen Sie die gleichen 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 Aufgaben (höher) | Ja | Ja |
| Geplante Aufgaben (älter) | Ja | Ja |
| Sofortaufgaben (höher) | Ja | Ja |
| Sofortige Aufgaben (auf niedrigerer Ebene) | Ja | Ja |
| Datenquellen | Ja | Ja |
Zusammenfassung der Änderungen
- Kennwortfelder in allen betroffenen Einstellungen sind deaktiviert. Administratoren können mit diesen Kennwortfeldern 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 je nach Einstellung gelöscht oder deaktiviert werden.
- Das Verhalten für Lösch- und Deaktivierungsaktionen 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 Warndialogfeld, um ihn über die kürzlich erfolgte 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 Warndialogfelder aus.
Szenario 1: Lokale Benutzerverwaltung
Die Einstellung "Lokale Benutzerverwaltung" wird häufig verwendet, um lokale Administratoren zu erstellen, die ein bekanntes Kennwort für einen Computer haben. Dieses Feature ist aufgrund der Art und Weise, wie Kennwörter in den Gruppenrichtlinie-Voreinstellungen gespeichert werden, nicht sicher. Daher steht diese Funktionalität nicht mehr zur Verfügung. Die folgenden Einstellungen sind betroffen:
- Computerkonfiguration –> Einstellungen der Systemsteuerung –> Lokale Benutzer und Gruppen –> Neu –> Lokaler Benutzer
- Benutzerkonfiguration –> Einstellungen der Systemsteuerung –> Lokale Benutzer und Gruppen –> Neu –> Lokaler Benutzer
Wichtige Änderungen
Aktion: Erstellen oder Ersetzen
- Die Felder Benutzername, Kennwort und Kennwort bestätigen sind deaktiviert.
- Das Warndialogfeld wird angezeigt, wenn der Administrator Änderungen an einer vorhandenen Einstellung, die ein Kennwort enthält, öffnet oder zu speichern versucht.
Aktion: Aktualisieren
- Die Felder "Kennwort" und "Kennwort bestätigen " sind deaktiviert.
- Das Warndialogfeld wird angezeigt, wenn der Administrator Änderungen an einer vorhandenen Einstellung, die ein Kennwort enthält, öffnet oder zu speichern versucht.
Aktion: Löschen
- Keine Verhaltensänderung
Problemumgehungen
Für diejenigen, die sich zuvor zum Festlegen lokaler Administratorkennwörter auf die Gruppenrichtlinie-Einstellung verlassen haben, wird das folgende Skript als sichere Alternative zu CPassword bereitgestellt. Kopieren und speichern Sie den Inhalt in einer neuen Windows PowerShell-Datei, und führen Sie dann das Skript wie in der . EXAMPLE-Abschnitt.
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
{
<#
. ZUSAMMENFASSUNG
Dieses Skript kann verwendet werden, um die Kennwörter für lokale Konten auf Remotecomputern auf zufällige Kennwörter festzulegen. Die Kombination aus Benutzername, Kennwort und 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, wobei sichergestellt werden soll, dass Kontokennwörter in Klartext nicht auf den Datenträger geschrieben werden.
Die verschlüsselten Passwö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 Kennwörter für lokale Konten auf Remotecomputern auf zufällige Kennwörter festzulegen. Die Kombination aus Benutzername, Kennwort und 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, wobei sichergestellt werden soll, dass Kontokennwörter in Klartext nicht auf den Datenträger geschrieben werden.
Die verschlüsselten Passwörter können mit einer anderen Funktion in dieser Datei entschlüsselt werden: ConvertTo-CleartextPassword
. PARAMETER ComputerName
Ein Array von Computern, für das das Skript mithilfe von PowerShell-Remoting ausgeführt werden soll.
. PARAMETER LocalAccounts
Ein Array lokaler Konten, deren Kennwort geändert werden soll.
. PARAMETER TsvFileName
Die Datei, in die die Kombinationen aus Benutzername, Kennwort und Server ausgegeben werden sollen.
. PARAMETER EncryptionKey
Ein Kennwort zum Verschlüsseln der TSV-Datei. Verwendet 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 für lokale Konten nach dem Zufallsprinzip 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 zu allen Computern her, die in der Datei "computerlist.txt" gespeichert sind. Wenn das lokale Konto "Administrator" und/oder "CustomLocalAdmin" auf dem System vorhanden sind, wird ihr Kennwort geändert
auf ein zufällig generiertes Kennwort der Länge 20 (Standard). Die Kombinationen aus Benutzername, Kennwort und 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 zu 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 Kennwort geändert
Kennwort mit Länge 40. Die Kombinationen aus Benutzername, Kennwort und Server werden unverschlüsselt in "LocalAdminCredentials.tsv" gespeichert.
. ANMERKUNGEN
Anforderungen:
-PowerShellv2 oder höher muss installiert sein
-PowerShell-Remoting muss auf allen Systemen aktiviert sein, für die das Skript ausgeführt wird
Skriptverhalten:
-Wenn ein lokales Konto auf dem System vorhanden ist, aber nicht im Parameter LocalAccounts angegeben ist, schreibt das Skript eine Warnung auf den Bildschirm, um Sie auf das Vorhandensein dieses lokalen Kontos aufmerksam zu machen. Das Skript wird in diesem Fall weiter ausgeführt.
-Wenn im Parameter LocalAccounts ein lokales Konto angegeben ist, das Konto jedoch nicht auf dem Computer vorhanden ist, geschieht nichts (es wird KEIN Konto erstellt).
-Die Funktion ConvertTo-CleartextPassword, die in dieser Datei enthalten ist, kann verwendet werden, um Passwörter zu entschlüsseln, die verschlüsselt in der TSV-Datei gespeichert sind.
-Wenn mit einem in ComputerName angegebenen Server keine Verbindung hergestellt werden kann, gibt PowerShell eine Fehlermeldung aus.
-Microsoft empfiehlt Unternehmen, regelmäßig ein Rollout aller Kennwörter für lokale und Domänenkonten durchzuführen.
#>
[CmdletBinding(DefaultParameterSetName="Encryption")]
Parameter (
[Parameter(Mandatory=$true)]
[Zeichenfolge[]]
$ComputerName,
[Parameter(Mandatory=$true)]
[Zeichenfolge[]]
$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 alle benötigten .NET-Klassen
Add-Type -AssemblyName "System.Web" -ErrorAction Stop
#This ist der Skriptblock, der auf jedem Computer ausgeführt wird, der in ComputerName angegeben wird
$RemoteRollScript = {
Parameter (
[Parameter(Mandatory=$true, Position=1)]
[Zeichenfolge[]]
$Passwords,
[Parameter(Mandatory=$true, Position=2)]
[Zeichenfolge[]]
$LocalAccounts,
#This ist hier, damit ich den Servernamen aufzeichnen kann, mit dem das Skript eine Verbindung hergestellt hat, manchmal werden die DNS-Einträge durcheinandergebracht, es kann schön sein, das zu haben.
[Parameter(Mandatory=$true, Position=3)]
[Zeichenfolge]
$TargettedServerName
)
$LocalUsers = Get-WmiObject Win32_UserAccount -Filter "LocalAccount=true" | foreach {$_. Name}
#Check, ob der Computer über lokale Benutzerkonten verfügt, deren Kennwörter nicht von diesem Skript übernommen werden.
foreach ($User in $LocalUsers)
{
if ($LocalAccounts -inotcontains $User)
{
Write-Warning "Server: '$($TargettedServerName)' hat ein lokales Konto '$($User)', dessen Kennwort von diesem Skript NICHT geändert wird"
}
}
Ändern Sie #For jedes angegebene lokale Konto, das auf diesem Server vorhanden ist, 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 dem 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. Diesen Anruf tätigen
# Auf dem Client, auf dem das Skript ausgeführt wird, wird sichergestellt, dass nur auf einem Computer die vollständige .NET-Laufzeitumgebung installiert wird (im Gegensatz zu jedem System, auf dem das Kennwort verwendet wird).
Create-RandomPassword
{
Parameter (
[Parameter(Mandatory=$true)]
[ValidateRange(20,120)]
[int]
$PasswordLength
)
$Password = [System.Web.Security.Membership]::GeneratePassword($PasswordLength, $PasswordLength / 4)
#This sollte nie scheitern, aber ich mache hier trotzdem einen Plausibilitätscheck
if ($Password.Length -ne $PasswordLength)
{
throw new Exception("Von GeneratePassword zurückgegebenes Passwort hat nicht die gleiche Länge wie erforderlich. Erforderliche Länge: $($PasswordLength). Generierte Länge: $($Password.Length)")
}
return $Password
}
#Main Funktionalität - Generieren Sie ein Kennwort und verwenden Sie Remoteverbindungen zu Computern, 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 "Verbindung mit dem Server '$($Computer)' zum Rollieren bestimmter lokaler Administratorkennwörter"
$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 es auf den Datenträger schreiben
if ($Result -ne $null)
{
if ($PsCmdlet.ParameterSetName -ieq "NoEncryption")
{
$Result | Select-Object Benutzername,Kennwort,ZielServername,RealServerName | Export-Csv -append -path $TsvFileName -NoTypeInformation
}
else
{
#Filters $null zurückgegebenen Einträge
$Result = $Result | Select-Object Benutzername,Kennwort,ZielServername,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 Benutzername,Verschlüsseltes Kennwort,ZielServername,RealServerName | Export-Csv -append -path $TsvFileName -NoTypeInformation
}
}
}
}
}
ConvertTo-CleartextPassword
{
<#
. ZUSAMMENFASSUNG
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 für die Verschlüsselung verwendete Passwort.
. BEISPIEL
. .\Invoke-PasswordRoll.ps1 #Loads die Funktionen in dieser Skriptdatei
ConvertTo-CleartextPassword -EncryptionKey "Password1" -EncryptedPassword 76492d1116743f0423413b16050a5345MgB8AGcAZgBaAHUAaQBwADAAQgB2AGgAcABNADMASwBaAFoAQQBzADEAeABjAEEAPQA9AHwAZgBiAGYAMAA1ADYANgA2ADEANwBkADQAZgAwADMANABjAGUAZQAxAG iamabiADkANgBiADkAMAA4ADcANwBhADMAYQA3AGYAOABkADcAMQA5ADQAMwBmAGYANQBhADEAYQBjADcANABkADIANgBhADUANwBlADgAMAAyADQANgA1ADIAOQA0AGMAZQA0ADEAMwAzADcANQAyADUANAAzADYAMAA1AGEANgAzADEAMQA5ADAAYwBmADQAZAA2AGQA"
Entschlüsselt das verschlüsselte Kennwort, das in der TSV-Datei gespeichert wurde.
#>
Parameter (
[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 diese über die Gruppenrichtlinie Einstellungen> – Lokale Gruppe zur lokalen Gruppe "Administratoren" hinzufügen. Diese Aktion speichert keine Anmeldeinformationen zwischen. Das Dialogfeld sieht etwa 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 Laufwerkzuordnungen, um Benutzern Netzwerkadressen zuzuweisen. Die Kennwortschutzfunktion wird verwendet, um den autorisierten Zugriff auf das Laufwerk sicherzustellen. Die folgenden Einstellungen sind betroffen:
- Benutzerkonfiguration –> Windows-Einstellungen –> Laufwerksübersichten –> 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 die Berechtigungen für den Ordner zu steuern.
Szenario 3: Dienste
Mit der Einstellung Dienste können Sie die Diensteigenschaften so ändern, dass sie in einem anderen Kontext als ihrem ursprünglichen Sicherheitskontext ausgeführt werden. Die folgenden Einstellungen sind betroffen:
- Computerkonfiguration -> Einstellungen der Systemsteuerung -> 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
Neues Dialogfeld
- 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 der Microsoft Knowledge Base beschrieben geändert werden:
256345 So konfigurieren Sie Gruppenrichtlinie Einstellungen zur Einstellung 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 (höher)
Diese werden verwendet, um geplante Aufgaben in einem bestimmten Sicherheitskontext auszuführen. Die Möglichkeit zum Speichern von Anmeldeinformationen für geplante Aufgaben, die als beliebiger Benutzer ausgeführt werden können, 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 -> Einstellungen der Systemsteuerung -> Geplante Aufgaben -> Neu -> Geplante Aufgabe (mindestens Windows 7)
- Computerkonfiguration -> Einstellungen der Systemsteuerung -> Geplante Aufgaben -> Neu -> Sofortaufgabe (mindestens Windows 7)
- Benutzerkonfiguration -> Einstellungen der Systemsteuerung -> Geplante Aufgaben -> Neu -> Geplante Aufgabe (mindestens Windows 7)
- Benutzerkonfiguration -> Einstellungen der Systemsteuerung -> Geplante Aufgaben -> Neu -> Sofortaufgabe (mindestens Windows 7)
Wichtige Änderungen
Aktion: Erstellen, Aktualisieren oder Ersetzen
- Wenn Sie die Option "Ausführen, unabhängig davon, ob der Benutzer angemeldet ist oder nicht " auswählen, wird der Administrator nicht mehr in einem Dialogfeld zur Eingabe von Anmeldeinformationen aufgefordert.
- 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 jeweilige Benutzer angemeldet ist. Oder sie können als dieser Benutzer nur auf lokale Ressourcen zugreifen. Diese Aufgaben können weiterhin im Kontext des lokalen Diensts ausgeführt werden.
Szenario 5: Geplante und sofortige Aufgaben (niedrigere Ebene) Dies ist die niedrigere Version der Einstellungen, die zum Ausführen geplanter Aufgaben in einem bestimmten Sicherheitskontext verwendet werden. Die Möglichkeit zum Speichern von Anmeldeinformationen für geplante Aufgaben, die als beliebiger Benutzer ausgeführt werden können, wenn dieser Benutzer nicht angemeldet ist, ist nicht mehr verfügbar. Die folgenden Einstellungen sind betroffen:
- Computerkonfiguration –> Einstellungen der Systemsteuerung –> Geplante Tasks –> Neu –> Geplante Aufgabe
- Computerkonfiguration -> Einstellungen der Systemsteuerung -> Geplante Aufgaben -> Neu -> Sofortaufgabe (Windows XP)
- Benutzerkonfiguration -> Einstellungen der Systemsteuerung -> Geplante Aufgaben -> Neu -> Geplante Aufgabe
- Benutzerkonfiguration -> Einstellungen der Systemsteuerung -> Geplante Aufgaben -> Neu -> Sofortaufgabe (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 Datenquellen-Einstellung 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 –> Einstellungen der Systemsteuerung –> Datenquellen
- Benutzerkonfiguration –> Einstellungen der Systemsteuerung –> 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 in diesem Microsoft Knowledge Base-Artikel enthaltene Windows PowerShell-Skript erkennt, ob eine Domäne Gruppenrichtlinien-Einstellungen enthält, die möglicherweise CPassword verwenden. Wenn CPassword-XML in einer bestimmten Einstellung erkannt wird, wird es in dieser Liste angezeigt.
Detecting CPassword preferences
Dieses Skript muss in einem lokalen Verzeichnis auf dem Domänencontroller ausgeführt werden, den Sie sauber machen möchten. Kopieren und speichern Sie den Inhalt in einer neuen Windows PowerShell Datei, ermitteln Sie Ihr Systemlaufwerk, und führen Sie dann das Skript wie in der folgenden Verwendung angegeben aus.
<#
. ZUSAMMENFASSUNG
Gruppenrichtlinien-Objekte in Ihrer Domäne können Einstellungen haben, in denen Kennwörter für verschiedene Aufgaben gespeichert werden, z. B.:
1. Urheberrecht Data Sources
2. Urheberrecht Laufwerksübersichten
3. Urheberrecht Lokale Benutzer
4. Urheberrecht Geplante Aufgaben (sowohl XP als auch höher)
5. Personenbezogene Daten Dienste
Diese Kennwörter werden in SYSVOL als Teil der GP-Einstellungen gespeichert und sind aufgrund einer schwachen Verschlüsselung (32-Byte-AES) nicht sicher.
Daher wird empfohlen, solche Einstellungen nicht in Ihrer Domänenumgebung bereitzustellen und solche vorhandenen
Einstellungen. Dieses Skript soll Administratoren helfen, GP-Einstellungen im SYSVOL ihrer Domäne zu finden, das 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 Folgendes enthalten
Kennwort mit Informationen wie GPO, Einstellungsname, GPEdit-Pfad, unter dem diese Einstellung definiert ist.
Nachdem Sie eine Liste der betroffenen Einstellungen erstellt haben, können Sie diese Einstellungen mithilfe des Editors in der Gruppenrichtlinie-Verwaltungskonsole entfernen.
. SYNTAX
Get-SettingsWithCPassword.ps1 [-path <string>]
. BEISPIEL
Get-SettingsWithCPassword.ps1 -Path %WinDir%\SYSVOL\domain
Get-SettingsWithCPassword.ps1 -Path <GPO Sicherungsordner Pfad>
. ANMERKUNGEN
Wenn das PS-Modul der Gruppenrichtlinie nicht gefunden wird, enthält die Ausgabe GPO-GUIDs anstelle von GPO-Namen. Sie können entweder
Skript auf einem Domänencontroller ausführen, oder führen Sie das Skript auf dem Client erneut aus, nachdem Sie RSAT und
das Modul "Gruppenrichtlinie" wurde aktiviert.
Sie können GPO-GUIDs auch verwenden, um GPO-Namen mithilfe des Cmdlets Get-GPO abzurufen.
. VERKNÜPFUNG
http://go.microsoft.com/fwlink/?LinkID=390507
#>
#----------------------------------------------------------------------------------------------------------------
Eingabeparameter
#--------------------------------------------------------------------------------------------------------------
param(
[string]$Path = $(throw "-Path is required.") # Verzeichnispfad, in dem sich die GPPs befinden.
)
#---------------------------------------------------------------------------------------------------------------
$isGPModuleAvailable = $false
$impactedPrefs = { "Groups.xml", "ScheduledTasks.xml","Services.xml", "DataSources.xml", "Drives.xml" }
#----------------------------------------------------------------------------------------------------------------
import Group olicy module if available
#----------------------------------------------------------------------------------------------------------------
if (-not (Get-Module -name "GroupPolicy"))
{
if (Get-Module -ListAvailable |
Where-Object { $_. Name -ieq "GroupPolicy" })
{
$isGPModuleAvailable = $true
Import-Module "GroupPolicy"
}
else
{
Write-Warning "Modul für PowerShell kann Gruppenrichtlinie nicht importiert werden. Daher werden GPO-GUIDs gemeldet.
Führen Sie dieses Skript auf dem Domänencontroller aus, um die Gruppenrichtlinienobjektnamen abzurufen, oder verwenden Sie das Cmdlet Get-GPO (auf dem Domänencontroller), um den Gruppenrichtlinienobjektnamen aus der GPO-GUID abzurufen."
}
}
else
{
$isGPModuleAvailable = $true
}
Funktion Enum-SettingsWithCpassword ( [string]$sysvolLocation )
{
# GPMC-Baumpfade
$commonPath = " -> Voreinstellungen -> Systemsteuerung Einstellungen -> "
$driveMapPath = " -> Einstellungen -> Windows-Einstellungen -> "
# Rekursiv alle XML-Dateien am Speicherort SYVOL abrufen
$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
# Enthält das cpassword-Attribut und zeigt es an.
foreach ( $file in $impactedXmls )
{
$fileFullPath = $file. FullName
# Festlegen der GPP-Kategorie. Wenn sich die Datei unter dem Ordner "Computer" in SYSVOL befindet
# Die Einstellung wird unter Computerkonfiguration definiert, andernfalls
#-Einstellung ist eine für Benutzerkonfiguration
if ( $fileFullPath.Contains("Machine") )
{
$category = "Computerkonfiguration"
}
elseif ( $fileFullPath.Contains("User") )
{
$category = "Benutzerkonfiguration"
}
else
{
$category = "Unbekannt"
}
# Dateiinhalt als XML abrufen
Versuch
{
[xml]$xmlFile = get-content $fileFullPath -ErrorAction Continue
}
catch [Exception]{
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 Aufgaben"
}
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 = "Laufwerkskarten"
}
Dienste
{
$gppWithCpassword = $xmlFile.SelectNodes("NTServices/NTService") | where-Object { [String]::IsNullOrEmpty($_. Properties.cpassword) -eq $false }
$preferenceType = "Services"
}
Standard
{ # clear gppWithCpassword and preferenceType for next item.
Versuch
{
Clear-Variable -Name gppWithCpassword -ErrorAction SilentlyContinue
Clear-Variable -Name preferenceType -ErrorAction SilentlyContinue
}
catch [Exception]{}
}
}
if ($gppWithCpassword -ne $null)
{
# GPO-Namen aus GUID erstellen, die aus filePath extrahiert wurde
$guidRegex = [Regex]"\{(.*)\}"
$match = $guidRegex.Vergleich($fileFullPath)
if ($match. Erfolgreich)
{
$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 [Exception] {
Write-Host $_. Exception.Message
}
}
# Präzenzen anzeigen, 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) –passhru |
Add-Member -MemberType NoteProperty -name Preference -value ($gpp. Name) -passhru |
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 der Pfad gültig ist. Zählen Sie alle Einstellungen auf, die cpassword enthalten.
#-----------------------------------------------------------------------------------
if (Testpfad $Path )
{
Enum-SettingsWithCpassword $Path
}
else
{
Write-Warning "No such directory: $Path"
}
Beispiel für Verwendung (setzt voraus, dass das Systemlaufwerk C ist)
.\Get-SettingsWithCPassword.ps1 –path "C:\Windows\SYSVOL\domain" | Format-List
Hinweis: Beachten Sie, dass Sie auch ein beliebiges Sicherungs-GPO für den Pfad anstelle der Domäne als Ziel 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, die Gruppenrichtlinie-Verwaltungskonsole (Group Policy Management Console, GPMC) auf dem Domänencontroller oder auf einem Client zu verwenden, auf dem die Remoteserver-Verwaltungstools installiert sind. Auf diesen Konsolen können Sie jede Einstellung in fünf Schritten entfernen. Führen Sie hierzu die folgenden Schritte aus:
- Öffnen Sie in der Gruppenrichtlinien-Verwaltungskonsole die Einstellung, die CPassword-Daten enthält.
- Ändern Sie die Aktion je nach Einstellung in "Löschen " oder " Deaktivieren".
- Klicken Sie auf OK, um die Änderungen zu speichern.
- Warten Sie einen oder zwei Aktualisierungszyklen der Gruppenrichtlinie, damit Änderungen an die 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 keine 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 | 016D7E9DBBC5E487E397BE0147B590CFBBB5E83795B997894870EC10171E16D4 |
| 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 | 6641B1A9C95A7E4F0D5A247B9F488887AC94550B7F1D7B1198D5BCBA92F7A753 |
| Windows8.1-KB2928120-x86.msu | DE84667EC79CBA2006892452660EB99580D27306 | 468EE4FA3A22DDE61D85FD3A9D0583F504105DF2F8256539051BC0B1EB713E9C |
| Windows8.1-KB2961899-x64.msu | 10BAE807DB158978BCD5D8A7862BC6B3EF20038B | EC26618E23D9278FC1F02CA1F13BB289E1C6C4E0C8DA5D22E1D9CDA0DA8AFF51 |
| Windows8.1-KB2961899-x86.msu | 230C64447CC6E4AB3AD7B4D4655B8D8CEFBFBE98 | E3FAD567AB6CA616E42873D3623A777185BE061232B952938A8846A974FFA7AF |