EINFÜHRUNG
Microsoft hat das Sicherheitsbulletin MS14-025 veröffentlicht. Hier finden Sie weitere Informationen zu diesem Sicherheitsbulletin:
-
Privatbenutzer:
https://www.microsoft.com/security/pc-security/updates.aspxDetails überspringen: Laden Sie die Updates für Ihren Heimcomputer oder Laptop jetzt von der Microsoft Update-Website herunter:
-
IT-Profis:
https://technet.microsoft.com/de-de/library/security/ms14-025
So erhalten Sie Hilfe und Support zu diesem Sicherheitsupdate
Support für Microsoft Update Sicherheitslösungen für IT-Profis:TechNet Security – Problembehandlung und Support Schützen Sie Ihren Windows-basierten Computer vor Viren und Schadsoftware:Safety and Security Center Lokaler Support entsprechend Ihrem Land:Internationaler Support
Hilfe bei der Installation des Updates:Weitere Informationen
Bekannte Probleme und weitere Informationen zu diesem Update
Die folgenden Artikel enthalten weitere Informationen zu diesem Sicherheitsupdate hinsichtlich der einzelnen Produktversionen. Die Artikel können Informationen zu bekannten Problemen enthalten. Wenn dies der Fall ist, wird das bekannte Problem unter dem entsprechenden Artikellink aufgelistet.
-
2928120 MS14-025: Beschreibung des Sicherheitsupdates für Windows Remoteserver-Verwaltungstools für Systeme, auf denen Update 2919355 installiert worden ist: 13. Mai 2014
-
2961899 MS14-025: Beschreibung des Sicherheitsupdates für Windows Remoteserver-Verwaltungstools für Systeme, auf denen Update 2919355 nicht installiert worden ist: 13. Mai 2014
Gruppenrichtlinieneinstellungen
Überblick
In einigen Gruppenrichtlinieneinstellungen kann ein Kennwort gespeichert werden. Diese Funktionalität wird entfernt, weil das Kennwort nicht sicher gespeichert wurde. In diesem Artikel werden die Benutzeroberflächenänderungen und die ggf. verfügbaren Problemumgehungen beschrieben. In den folgenden Gruppenrichtlinieneinstellungen können keine Benutzernamen und Kennwörter mehr gespeichert werden:
-
Laufwerkzuordnungen
-
Lokale Benutzer und Gruppen
-
Geplante Aufgaben
-
Dienste
-
Datenquellen
Dies wirkt sich auf das Verhalten aller vorhandenen Gruppenrichtlinienobjekte in Ihrer Umgebung aus, die sich auf Kennwörter stützen, die in diesen Einstellungen enthalten sind. Damit wird auch das Erstellen neuer Gruppenrichtlinieneinstellungen unter Verwendung dieser Funktionalität verhindert.
Für Laufwerkzuordnungen, lokale Benutzer und Gruppen und Dienste können Sie u. U. ähnliche Ziele durch andere sicherere Funktionen in Windows erreichen. Für geplante Aufgaben und Datenquellen können Sie nicht die gleichen Ziele erreichen wie mit der unsicheren Funktionalität der in Gruppenrichtlinieneinstellungen enthaltenen Kennwörter.Szenarien
Diese Änderung wirkt sich auf die folgenden Gruppenrichtlinieneinstellungen aus. Jede Einstellung wird zunächst kurz und dann ausführlicher behandelt. Zudem werden Umgehungsmöglichkeiten angegeben, mit denen Sie die gleichen Aufgaben ausführen können.
Betroffene Einstellung |
Betrifft Benutzer |
Betrifft Computer |
Verwaltung lokaler Benutzer |
Ja |
Ja |
Zugeordnete Laufwerke |
Ja |
Nein |
Dienste |
Nein |
Ja |
Geplante Aufgaben (höhere Ebene) |
Ja |
Ja |
Geplante Aufgaben (untergeordnete Ebenen) |
Ja |
Ja |
Sofortige Aufgaben (höhere Ebene) |
Ja |
Ja |
Sofortige Aufgaben (untergeordnete Ebenen) |
Ja |
Ja |
Datenquellen |
Ja |
Ja |
Zusammenfassung der Änderungen
-
Die Kennwortfelder in allen betroffenen Einstellungen werden deaktiviert. Administratoren können keine neuen Einstellungen unter Verwendung dieser Kennwortfelder erstellen.
-
Das Feld für den Benutzernamen wird in einigen Einstellungen deaktiviert.
-
Vorhandene Einstellungen, die ein Kennwort enthalten, können nicht aktualisiert werden. Sie können, je nach der betreffenden Einstellung, nur gelöscht oder deaktiviert werden.
-
Das Verhalten der Aktionen "Löschen" und "Deaktivieren" wurde für die Einstellungen nicht geändert.
-
Wenn ein Administrator eine Einstellung öffnet, die das CPassword-Attribut enthält, wird das folgende Dialogfeld angezeigt, um den Administrator über die kürzliche Änderung zu informieren. Beim Versuch, Änderungen von neuen oder vorhandenen Einstellungen, die das CPassword-Attribut erfordern, zu speichern, wird das gleiche Dialogfeld angezeigt. Nur die Aktionen "Löschen" und "Deaktivieren" bewirken keine Anzeige von Dialogfeldern mit Warnungen.
Szenario 1: Verwaltung lokaler Benutzer
Die Einstellung "Verwaltung lokaler Benutzer" wird häufig zum Erstellen lokaler Administratoren verwendet, die über ein bekanntes Kennwort auf dem Computer verfügen. Dieses Feature ist wegen der Art und Weise, wie in Gruppenrichtlinieneinstellungen Kennwörter gespeichert werden, nicht sicher. Daher ist diese Funktion nicht mehr verfügbar. Die folgenden Einstellungen sind betroffen:
-
Computerkonfiguration -> Systemsteuerungseinstellungen -> Lokale Benutzer und Gruppen -> Neu -> Lokaler Benutzer
-
Benutzerkonfiguration -> Systemsteuerungseinstellungen -> 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 eine vorhandene Einstellung, die ein Kennwort enthält, öffnet oder Änderungen daran vornimmt und zu speichern versucht.
Aktion: Aktualisieren
-
Die Felder Kennwort und Kennwort bestätigen sind deaktiviert.
-
Das Warndialogfeld wird angezeigt, wenn der Administrator eine vorhandene Einstellung, die ein Kennwort enthält, öffnet oder Änderungen daran vornimmt und zu speichern versucht.
Aktion: Löschen
-
Keine Änderung im Verhalten
Problemumgehungen
Für alle, die früher die Kennwörter für lokale Administratoren über Gruppenrichtlinieneinstellungen festgelegt haben, wird das folgende Skript als Alternative zu CPassword bereitgestellt. Kopieren Sie den Inhalt, und speichern Sie ihn in einer neuen Windows PowerShell-Datei. Führen Sie das Skript dann wie im Skript im Abschnitt .EXAMPLE angegeben aus. Die Verwendung der hier aufgeführten Informationen, Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität sowie ohne Anspruch auf Support zur Verfügung. In diesem Artikel wird vorausgesetzt, dass Sie mit der in den Beispielen verwendeten Programmiersprache und mit den zum Erstellen und Debuggen von Prozeduren verwendeten Tools vertraut sind. Die Mitarbeiter der Microsoft Product Support Services erklären Ihnen gerne die Funktionsweise einer bestimmten Prozedur. Die Mitarbeiter werden diese Beispiele jedoch weder modifizieren, um zusätzliche Funktionalität zu schaffen, noch Prozeduren entwickeln, die auf Ihre spezifischen Bedürfnisse zugeschnitten sind. function Invoke-PasswordRoll { <# .ZUSAMMENFASSUNG Dieses Skript kann verwendet werden, um die Kennwörter lokaler Konten auf Remotecomputern auf zufällig gewählte Kennwörter festzulegen. Die Benutzername/Kennwort/Server-Kombination wird in einer CSV-Datei gespeichert. Die in der CSV-Datei gespeicherten Kontokennwörter können mit einem vom Administrator gewählten Kennwort verschlüsselt werden, um sicherzustellen, dass die Kontokennwörter nicht als Klartextdaten auf den Datenträger geschrieben werden. Die verschlüsselten Kennwörter können mit einer anderen Funktion 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 lokaler Konten auf Remotecomputern auf zufällig gewählte Kennwörter festzulegen. Die Benutzername/Kennwort/Server-Kombination wird in einer CSV-Datei gespeichert. Die in der CSV-Datei gespeicherten Kontokennwörter können mit einem vom Administrator gewählten Kennwort verschlüsselt werden, um sicherzustellen, dass die Kontokennwörter nicht als Klartextdaten auf den Datenträger geschrieben werden. Die verschlüsselten Kennwörter können mit einer anderen Funktion dieser Datei entschlüsselt werden: ConvertTo-CleartextPassword .PARAMETER ComputerName Ein Array von Computern, auf denen das Skript mit PowerShell-Remoting ausgeführt werden soll. .PARAMETER LocalAccounts Ein Array von lokalen Konten, deren Kennwort geändert werden soll. .PARAMETER TsvFileName Die Datei, in die die Benutzername/Kennwort/Server-Kombinationen ausgegeben werden. .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, Benutzername und Servername bleiben Klartextdaten. .PARAMETER PasswordLength Die Länge der Kennwörter, die zufällig für lokale Konten generiert werden. .PARAMETER NoEncryption Die in der TSV-Datei gespeicherten Kontokennwörter werden nicht verschlüsselt. Dadurch werden Klartext-Kennwörter auf den Datenträger geschrieben. .BEISPIEL . .\Invoke-PasswordRoll.ps1 #Lädt die Funktionen in dieser Skriptdatei Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator","CustomLocalAdmin") -TsvFileName "LocalAdminCredentials.tsv" -EncryptionKey "Password1" Stellt Verbindungen mit allen in der Datei "computerlist.txt" gespeicherten Computern her. Wenn das lokale Konto "Administrator" und/oder das Konto "CustomLocalAdmin" auf dem System vorhanden sind, wird deren Kennwort in ein zufällig generiertes, 20 Zeichen (Standard) langes Kennwort geändert. Die Benutzername/Kennwort/Server-Kombinationen werden in der Datei "LocalAdminCredentials.tsv" gespeichert, und die Kontokennwörter werden mit der AES-Verschlüsselung unter Verwendung des Kennworts "Password1" verschlüsselt. .BEISPIEL . .\Invoke-PasswordRoll.ps1 #Lädt die Funktionen in dieser Skriptdatei Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator") -TsvFileName "LocalAdminCredentials.tsv" -NoEncryption -PasswordLength 40 Stellt Verbindungen mit allen in der Datei "computerlist.txt" gespeicherten Computern her. Wenn das lokale Konto "Administrator" auf dem System vorhanden ist, wird dessen Kennwort in ein zufällig generiertes, 40 Zeichen langes Kennwort geändert. Die Benutzername/Kennwort/Server-Kombinationen werden in der Datei "LocalAdminCredentials.tsv" unverschlüsselt gespeichert. .HINWEISE Voraussetzungen: -PowerShellv2 oder höher müssen installiert sein. -PowerShell-Remoting muss auf allen Systemen, für die das Skript ausgeführt wird, aktiviert sein. Skriptverhalten: -Wenn auf dem System ein lokales Konto vorhanden, aber nicht im LocalAccounts-Parameter angegeben worden ist, dann gibt das Skript eine Warnung auf dem Bildschirm aus, um Sie auf dieses lokale Konto aufmerksam zu machen. Das Skript wird in diesem Fall weiter ausgeführt. -Wenn im LocalAccounts-Parameter ein lokales Konto angegeben wurde, das Konto aber nicht auf dem Computer vorhanden ist, dann geschieht nichts (es wird KEIN Konto erstellt). -MIt der in dieser Datei enthaltenen Funktion ConvertTo-CleartextPassword können die Kennwörter, die verschlüsselt in der TSV-Datei gespeichert werden, entschlüsselt werden. -Wenn mit einem in ComputerName angegebenen Computer keine Verbindung hergestellt werden kann, gibt PowerShell eine Fehlermeldung aus. -Microsoft empfiehlt Firmen, die Kennwörter für alle lokalen Konten und Domänenkonten regelmäßig zu ändern. #> [CmdletBinding(DefaultParameterSetName="Encryption")] Param( [Parameter(Mandatory=$true)] [String[]] $ComputerName, [Parameter(Mandatory=$true)] [String[]] $LocalAccounts, [Parameter(Mandatory=$true)] [String] $TsvFileName, [Parameter(ParameterSetName="Encryption", Mandatory=$true)] [String] $EncryptionKey, [Parameter()] [ValidateRange(20,120)] [Int] $PasswordLength = 20, [Parameter(ParameterSetName="NoEncryption", Mandatory=$true)] [Switch] $NoEncryption ) #Alle erforderlichen .net-Klassen laden Add-Type -AssemblyName "System.Web" -ErrorAction Stop #Dieser Skriptblock wird auf jedem in ComputerName angegebenen Computer ausgeführt $RemoteRollScript = { Param( [Parameter(Mandatory=$true, Position=1)] [String[]] $Passwords, [Parameter(Mandatory=$true, Position=2)] [String[]] $LocalAccounts, #Hiermit kann der Servername aufgezeichnet werden, mit dem das Skript verbunden war, damit er verfügbar ist, wenn die DNS-Einträge fehlerhaft sind. [Parameter(Mandatory=$true, Position=3)] [String] $TargettedServerName ) $LocalUsers = Get-WmiObject Win32_UserAccount -Filter "LocalAccount=true" | Foreach {$_.Name} #Prüfen, ob auf dem Computer lokale Benutzerkonten vorhanden sind, deren Kennwörter nicht durch dieses Skript geändert werden foreach ($User in $LocalUsers) { if ($LocalAccounts -inotcontains $User) { Write-Warning "Server: '$($TargettedServerName)' hast ein lokales Konto '$($User)' dessen Kennwort NICHT durch dieses Skript geändert wird" } } #Das Kennwort für jedes angegebene lokale Konto ändern, das auf diesem Server vorhanden ist $PasswordIndex = 0 foreach ($LocalAdmin in $LocalAccounts) { $Password = $Passwords[$PasswordIndex] if ($LocalUsers -icontains $LocalAdmin) { try { $objUser = [ADSI]"WinNT://localhost/$($LocalAdmin), user" $objUser.psbase.Invoke("SetPassword", $Password) $Properties = @{ TargettedServerName = $TargettedServerName Username = $LocalAdmin Password = $Password RealServerName = $env:computername } $ReturnData = New-Object PSObject -Property $Properties Write-Output $ReturnData } catch { Write-Error "Fehler beim Ändern des Kennworts für den Benutzer:$($LocalAdmin) auf dem Server:$($TargettedServerName)" } } $PasswordIndex++ } } #Das Kennwort auf dem Client, auf dem dieses Skript ausgeführt wird, und nicht auf dem Remotecomputer generieren System.Web.Security ist im .NET-Clientprofil nicht verfügbar. Durch diesen Aufruf # wird auf dem Client, auf dem das Skript ausgeführt wird, sichergestellt, dass .NET Runtime nur auf 1 Computer (statt auf allen Systemen, auf denen das Kennwort geändert wird) vollständig installiert werden muss. function Create-RandomPassword { Param( [Parameter(Mandatory=$true)] [ValidateRange(20,120)] [Int] $PasswordLength ) $Password = [System.Web.Security.Membership]::GeneratePassword($PasswordLength, $PasswordLength / 4) #Dies sollte nie fehlschlagen, aber sicherheitshalber wird hier trotzdem eine Funktionsüberprüfung eingefügt if ($Password.Length -ne $PasswordLength) { throw new Exception("Das von GeneratePassword zurückgegebene Kennwort hat nicht die erforderliche Länge. Erforderliche Länge: $($PasswordLength). Generierte Länge: $($Password.Length)") } return $Password } #Hauptfunktion - Kennwort generieren und an Computer übertragen, um das Kennwort der angegebenen lokalen Konten zu ändern if ($PsCmdlet.ParameterSetName -ieq "Encryption") { try { $Sha256 = new-object System.Security.Cryptography.SHA256CryptoServiceProvider $SecureStringKey = $Sha256.ComputeHash([System.Text.UnicodeEncoding]::Unicode.GetBytes($EncryptionKey)) } catch { Write-Error "Fehler beim Erstellen des TSV-Verschlüsselungsschlüssel" -ErrorAction Stop } } foreach ($Computer in $ComputerName) { #Für jedes Konto, das geändert werden kann, muss 1 Kennwort generiert werden $Passwords = @() for ($i = 0; $i -lt $LocalAccounts.Length; $i++) { $Passwords += Create-RandomPassword -PasswordLength $PasswordLength } Write-Output "Verbindung herstellen mit Server '$($Computer)' zum Zurücksetzen der angegebenen lokalen Administratorkennwörter" $Result = Invoke-Command -ScriptBlock $RemoteRollScript -ArgumentList @($Passwords, $LocalAccounts, $Computer) -ComputerName $Computer #Wenn Verschlüsselung gewünscht ist, das Kennwort mit dem vom Benutzer angegebenen Kennwort verschlüsseln, bevor es auf den Datenträger geschrieben wird if ($Result -ne $null) { if ($PsCmdlet.ParameterSetName -ieq "NoEncryption") { $Result | Select-Object Username,Password,TargettedServerName,RealServerName | Export-Csv -Append -Path $TsvFileName -NoTypeInformation } else { #Filters out $null entries returned $Result = $Result | Select-Object Username,Password,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 } } } } } function ConvertTo-CleartextPassword { <# .ZUSAMMENFASSUNG Mit dieser Funktion können Kennwörter entschlüsselt werden, die von der Funktion Invoke-PasswordRoll verschlüsselt gespeichert wurden. Funktion: ConvertTo-CleartextPassword Autor: Microsoft Version: 1.0 .BESCHREIBUNG Mit dieser Funktion können Kennwörter entschlüsselt werden, 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 zum Verschlüsseln verwendete Kennwort. .BEISPIEL . .\Invoke-PasswordRoll.ps1 #Lädt die Funktionen in dieser Skriptdatei ConvertTo-CleartextPassword -EncryptionKey "Password1" -EncryptedPassword 76492d1116743f0423413b16050a5345MgB8AGcAZgBaAHUAaQBwADAAQgB2AGgAcABNADMASwBaAFoAQQBzADEAeABjAEEAPQA9AHwAZgBiAGYAMAA1ADYANgA2ADEANwBkADQAZgAwADMANABjAGUAZQAxAGIAMABiADkANgBiADkAMAA4ADcANwBhADMAYQA3AGYAOABkADcAMQA5ADQAMwBmAGYANQBhADEAYQBjADcANABkADIANgBhADUANwBlADgAMAAyADQANgA1ADIAOQA0AGMAZQA0ADEAMwAzADcANQAyADUANAAzADYAMAA1AGEANgAzADEAMQA5ADAAYwBmADQAZAA2AGQA" Entschlüsselt das verschlüsselte Kennwort, das in der TSV-Datei gespeichert wurde. #> Param( [Parameter(Mandatory=$true)] [String] $EncryptedPassword, [Parameter(Mandatory=$true)] [String] $EncryptionKey ) $Sha256 = new-object System.Security.Cryptography.SHA256CryptoServiceProvider $SecureStringKey = $Sha256.ComputeHash([System.Text.UnicodeEncoding]::Unicode.GetBytes($EncryptionKey)) [SecureString]$SecureStringPassword = ConvertTo-SecureString -String $EncryptedPassword -Key $SecureStringKey Write-Output ([System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($SecureStringPassword))) } Administratoren können Computern lokale Administratorkonten hinzufügen, indem Sie eine Active Directory-Gruppe erstellen und diese über "Gruppenrichtlinieneinstellungen -> Lokale Gruppe" der lokalen Gruppe "Administratoren" hinzufügen. Dabei werden keine Anmeldeinformationen zwischengespeichert. Das Dialogfeld ähnelt dem Folgenden. Diese Problemumgehung erfordert eine Verbindung mit Active Directory-Domänendienste, wenn der Benutzer mit diesen Anmeldeinformationen angemeldet ist.
Szenario 2: Zugeordnete Laufwerke
Administratoren verwenden Laufwerkszuordnungen, um Benutzern Netzwerkspeicherorte zuzuweisen. Der Kennwortschutz wird verwendet, um autorisierten Zugriff auf das Laufwerk sicherzustellen. Die folgenden Einstellungen sind betroffen:
-
Benutzerkonfiguration -> Windows-Einstellungen -> Laufwerkzuordnungen -> Neu -> Zugeordnetes Laufwerk
Wichtige Änderungen
Aktion: Erstellen, Aktualisieren oder Ersetzen
-
Die Felder Benutzername, Kennwort und Kennwort bestätigen sind deaktiviert.
Aktion: Löschen
-
Keine Änderung im Verhalten
Problemumgehungen
Statt Kennwörter zum Authentifizieren zu verwenden, können Sie mit Windows-Explorer Freigabeberechtigungen verwalten und Benutzern Rechte zuteilen. Sie können mit Active Directory-Objekten Berechtigungen für Ordner steuern.
Szenario 3: Dienste
Sie können die Diensteinstellungen über die Einstellung "Dienste" so ändern, dass die Dienste in einem anderen Kontext als ihrem ursprünglichen Sicherheitskontext ausgeführt werden. Die folgenden Einstellungen sind betroffen:
-
Computerkonfiguration -> Systemsteuerungseinstellungen -> Dienste -> Neu -> Dienst
Wichtige Änderungen
Starten: Keine Änderung, Automatisch oder Manuell
-
Die Felder Kennwort und Kennwort bestätigen sind deaktiviert.
-
Der Administrator kann nur die integrierten Konten verwenden.
Starten: Deaktivieren
-
Keine Änderung im Verhalten
Neues Dialogfeld
-
Administratoren, die für dieses Konto nicht integrierte Benutzer verwenden möchten, erhalten die folgende Warnung:
Problemumgehungen
Dienste können noch als lokales Systemkonto ausgeführt werden. Die Dienstberechtigungen können wie im folgenden Artikel der Microsoft Knowledge Base beschrieben geändert werden:
256345 Konfigurieren von Gruppenrichtlinien zum Einrichten 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öhere Ebene)
Diese werden verwendet, um geplante Aufgaben in einem bestimmten Sicherheitskontext auszuführen. Die Fähigkeit, Anmeldeinformationen für geplante Aufgaben zu speichern, damit diese selbst dann als ein bestimmter Benutzer ausgeführt werden können, wenn dieser nicht angemeldet ist, ist nicht mehr gegeben. Die folgenden Einstellungen sind betroffen: (Beachten Sie, dass auf einigen Plattformen "mindestens Windows 7" durch "Windows Vista und höher" ersetzt wird.)
-
Computerkonfiguration -> Systemsteuerungseinstellungen -> Geplante Aufgaben -> Neu -> Geplante Aufgabe (mindestens Windows 7)
-
Computerkonfiguration -> Systemsteuerungseinstellungen -> Geplante Aufgaben -> Neu -> Sofortige Aufgabe (mindestens Windows 7)
-
Benutzerkonfiguration -> Systemsteuerungseinstellungen -> Geplante Aufgaben -> Neu -> Geplante Aufgabe (mindestens Windows 7)
-
Benutzerkonfiguration -> Systemsteuerungseinstellungen -> Geplante Aufgaben -> Neu -> Sofortige Aufgabe (mindestens Windows 7)
Wichtige Änderungen
Aktion: Erstellen, Aktualisieren oder Ersetzen
-
Wenn Sie die Option Unabhängig von der Benutzeranmeldung ausführen aktivieren, wird der Administrator nicht mehr durch ein Dialogfeld zur Eingabe von Anmeldeinformationen aufgefordert.
-
Die Option Kennwort nicht speichern ist deaktiviert. Standardmäßig ist auch diese Option aktiviert.
Aktion: Löschen Keine Änderung im Verhalten
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 können als der betreffende Benutzer nur Zugriff auf lokale Ressourcen haben. Diese Aufgaben können weiterhin im Kontext des lokalen Diensts ausgeführt werden.
Szenario 5: Geplante und sofortige Aufgaben (untergeordnete Ebene) Dies ist die für untergeordnete Ebenen geeignete Version der Einstellungen, die zum Ausführen geplanter Aufgaben in einem Sicherheitskontext verwendet werden. Die Fähigkeit, Anmeldeinformationen für geplante Aufgaben zu speichern, damit diese selbst dann als ein bestimmter Benutzer ausgeführt werden können, wenn dieser nicht angemeldet ist, ist nicht mehr gegeben. Die folgenden Einstellungen sind betroffen:
-
Computerkonfiguration -> Systemsteuerungseinstellungen -> Geplante Aufgaben -> Neu -> Geplante Aufgabe
-
Computerkonfiguration -> Systemsteuerungseinstellungen -> Geplante Aufgaben -> Neu -> Sofortige Aufgabe (Windows XP)
-
Benutzerkonfiguration -> Systemsteuerungseinstellungen -> Geplante Aufgaben -> Neu -> Geplante Aufgabe
-
Benutzerkonfiguration -> Systemsteuerungseinstellungen -> Geplante Aufgaben -> Neu -> Sofortige Aufgabe (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 Änderung im Verhalten
Problemumgehungen
Für die Optionen "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
Mit der Einstellung "Datenquellen" wird eine Datenquelle mit einem Computer oder Benutzer verknüpft. Diese Funktion speichert keine Anmeldeinformationen mehr, um den Zugriff auf kennwortgeschützte Datenquellen zu ermöglichen. Die folgenden Einstellungen sind betroffen:
-
Computerkonfiguration -> Systemsteuerungseinstellungen -> Datenquellen
-
Benutzerkonfiguration -> Systemsteuerungseinstellungen -> Datenquellen
Wichtige Änderungen
Aktion: Erstellen, Aktualisieren oder Ersetzen
-
Die Felder Benutzername, Kennwort und Kennwort bestätigen sind deaktiviert:
Aktion: Löschen
-
Keine Änderung im Verhalten
Problemumgehungen
Es sind keine Problemumgehungen verfügbar. In dieser Einstellung werden keine Anmeldeinformationen mehr gespeichert, um den Zugriff auf kennwortgeschützte Datenquellen zu ermöglichen.
Abschreibung von CPassword
Entfernen von CPassword
Das Windows PowerShell-Skript, das in diesem Microsoft Knowledge Base-Artikel enthalten ist, erkennt, ob eine Domäne Gruppenrichtlinieneinstellungen enthält, die möglicherweise CPassword verwenden. Wenn CPassword-XML in der gegebenen Einstellung erkannt wird, wird es in dieser Liste angezeigt.
Erkennen von CPassword-Einstellungen
Dieses Skript muss aus einem lokalen Verzeichnis auf dem zu bereinigenden Domänencontroller heraus ausgeführt werden. Kopieren Sie den Inhalt, und speichern Sie ihn in einer neuen Windows PowerShell-Datei. Bestimmen Sie Ihr Systemlaufwerk, und führen Sie das Skript dann wie im Folgenden beschrieben aus. <# .ZUSAMMENFASSUNG Gruppenrichtlinienobjekte in der Domäne können Einstellungen haben, in denen Kennwörter für verschiedene Aufgaben gespeichert werden, beispielsweise: 1. Datenquellen 2. Laufwerkzuordnungen 3. Lokale Benutzer 4. Geplante Aufgaben (sowohl XP als auch höhere Ebenen) 5. Dienste Diese Kennwörter werden in SYSVOL als Teil der Gruppenrichtlinieneinstellungen gespeichert und sind wegen der schwachen Verschlüsselung (32-Byte-AES) nicht sicher. Aus diesem Grund wird empfohlen, solche Einstellungen nicht in der Domänenumgebung bereitzustellen und ggf. vorhandene Einstellungen zu entfernen. Dieses Skript soll Administratoren helfen, die Gruppenrichtlinieneinstellungen, welche Kennwörter enthalten, im SYSVOL ihrer Domäne zu finden. .BESCHREIBUNG Dieses Skript sollte auf einem Domänencontroller oder Clientcomputer ausgeführt werden, auf dem RSAT installiert worden ist, damit alle Einstellungen, die Kennwörter enthalten, zusammen mit anderen Informationen ausgedruckt werden können, wie Gruppenrichtlinienobjekt, Name der Einstellung, Gruppenrichtlinien-Editor-Pfad, unter dem diese Einstellung definiert ist. Sobald Sie eine Liste der betroffenen Einstellungen haben, können Sie die Einstellungen mit dem Editor in der Gruppenrichtlinien-Verwaltungskonsole entfernen. .SYNTAX Get-SettingsWithCPassword.ps1 [-Path <String>] .BEISPIEL Get-SettingsWithCPassword.ps1 -Path %WinDir%\SYSVOL\domain Get-SettingsWithCPassword.ps1 -Path <Pfad des Sicherungsordners für Gruppenrichtlinienobjekte> .HINWEISE Wenn das Gruppenrichtlinien-PS-Modul nicht gefunden wird, enthält die Ausgabe die GUIDs der Gruppenrichtlinienobjekte statt deren Namen. Sie können dieses Skript entweder auf einem Domänencontroller ausführen oder es nach der Installation von RSAT und der Aktivierung des Gruppenrichtlinienmoduls erneut auf dem Client ausführen. Stattdessen können Sie auch mit dem Cmdlet Get-GPO anhand der GUIDs der Gruppenrichtlinienobjekte deren Namen ermitteln. .LINK http://go.microsoft.com/fwlink/?LinkID=390507 #> #---------------------------------------------------------------------------------------------------------------- # Eingabeparameter #-------------------------------------------------------------------------------------------------------------- param( [string]$Path = $(throw "-Path is required.") # Verzeichnispfad der Gruppenrichtlinieneinstellungen. ) #--------------------------------------------------------------------------------------------------------------- $isGPModuleAvailable = $false $impactedPrefs = { "Groups.xml", "ScheduledTasks.xml","Services.xml", "DataSources.xml", "Drives.xml" } #---------------------------------------------------------------------------------------------------------------- # Gruppenrichtlinienmodul importieren, 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 "Gruppenrichtlinienmodul kann nicht für PowerShell importiert werden. Daher werden Gruppenrichtlinienobjekt-Guids gemeldet. Führen Sie dieses Skript auf dem Domänencontroller aus, um die Gruppenrichtlinienobjektnamen abzurufen, oder wenden Sie das Cmdlet Get-GPO (auf dem Domänencontroller) aus, um den Gruppenrichtlinienobjektnamen für eine Gruppenrichtlinienobjekt-Guid zu ermitteln." } } else { $isGPModuleAvailable = $true } Function Enum-SettingsWithCpassword ( [string]$sysvolLocation ) { # GPMC tree paths $commonPath = " -> Preferences -> Control Panel Settings -> " $driveMapPath = " -> Preferences -> Windows Settings -> " # Rekursiv alle XML-Dateien innerhalb des Speicherorts SYVOL abrufen $impactedXmls = Get-ChildItem $sysvolLocation -Recurse -Filter "*.xml" | Where-Object { $impactedPrefs -cmatch $_.Name } # Jede XML-Datei enthält mehrere Einstellungen. Überprüfen Sie die einzelnen Einstellungen daraufhin, ob sie # das cpassword-Attribut enthalten, und das Attribut ggf. anzeigen. foreach ( $file in $impactedXmls ) { $fileFullPath = $file.FullName # GPP-Kategorie festlegen. Wenn sich die Datei unter dem Ordner "Computer" im SYSVOL befindet, # ist die Einstellung unter Computerkonfiguration definiert, # sonst ist sie eine Benutzerkonfiguration. if ( $fileFullPath.Contains("Machine") ) { $category = "Computer Configuration" } elseif ( $fileFullPath.Contains("User") ) { $category = "User Configuration" } else { $category = "Unknown" } # Dateiinhalt als XML abrufen try { [xml]$xmlFile = get-content $fileFullPath -ErrorAction Continue } catch [Exception]{ Write-Host $_.Exception.Message } if ($xmlFile -eq $null) { continue } switch ( $file.BaseName ) { Groups { $gppWithCpassword = $xmlFile.SelectNodes("Groups/User") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false } $preferenceType = "Local Users" } ScheduledTasks { $gppWithCpassword = $xmlFile.SelectNodes("ScheduledTasks/*") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false } $preferenceType = "Scheduled Tasks" } DataSources { $gppWithCpassword = $xmlFile.SelectNodes("DataSources/DataSource") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false } $preferenceType = "Data sources" } Drives { $gppWithCpassword = $xmlFile.SelectNodes("Drives/Drive") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false } $preferenceType = "Drive Maps" } Services { $gppWithCpassword = $xmlFile.SelectNodes("NTServices/NTService") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false } $preferenceType = "Services" } default { # gppWithCpassword und preferenceType für das nächste Element löschen. try { Clear-Variable -Name gppWithCpassword -ErrorAction SilentlyContinue Clear-Variable -Name preferenceType -ErrorAction SilentlyContinue } catch [Exception]{} } } if ($gppWithCpassword -ne $null) { # Name des Gruppenrichtlinienobjekts anhand der GUID ermitteln, die aus filePath extrahiert wurde $guidRegex = [regex]"\{(.*)\}" $match = $guidRegex.match($fileFullPath) if ($match.Success) { $gpoGuid = $match.groups[1].value $gpoName = $gpoGuid } else { $gpoName = "Unknown" } if($isGPModuleAvailable -eq $true) { try { $gpoInfo = Get-GPO -Guid $gpoGuid -ErrorAction Continue $gpoName = $gpoInfo.DisplayName } catch [Exception] { Write-Host $_.Exception.Message } } # Einstellungen 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) –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 #----------------------------------------------------------------------------------- # Prüfen, ob Pfad gültig ist. Alle Einstellungen auflisten, die cpassword enthalten. #----------------------------------------------------------------------------------- if (Test-Path $Path ) { Enum-SettingsWithCpassword $Path } else { Write-Warning "Verzeichnis nicht vorhanden: $Path" } Beispielsyntax (setzt voraus, dass C das Systemlaufwerk ist) .\Get-SettingsWithCPassword.ps1 –path “C:\Windows\SYSVOL\domain” | Format-List Hinweis Beachten Sie, dass Sie statt der Domäne auch ein Sicherungsgruppenrichtlinienobjekt als Ziel für path angeben können. Das Erkennungsskript erzeugt eine Liste, die der folgenden Liste ä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
Zum Entfernen der Einstellungen, die CPassword-Daten enthalten, wird empfohlen, die Gruppenrichtlinien-Verwaltungskonsole (GPMC) auf dem Domänencontroller bzw. auf einem Client, auf dem die Remoteserver-Verwaltungstools installiert sind, zu verwenden. Sie können auf diesen Konsolen jede Einstellung mit fünf Schritten entfernen. Gehen Sie hierzu wie folgt vor:
-
Öffnen Sie in der Gruppenrichtlinien-Verwaltungskonsole die Einstellung, die CPassword-Daten enthält.
-
Ändern Sie die Aktion in Löschen oder Deaktivieren, je nachdem, was für die betreffende Einstellung geeignet ist.
-
Klicken Sie auf OK, um Ihre Änderungen zu speichern.
-
Warten Sie ein oder zwei Gruppenrichtlinien Aktualisierungszyklen ab, damit die Änderungen an die Clients weitergegeben werden können.
-
Nachdem die Änderungen auf alle Clients angewendet worden sind, löschen Sie die Einstellung.
-
Wiederholen Sie die Schritte 1 bis 5 nach Bedarf, um die gesamte Umgebung zu bereinigen. Wenn das Erkennungsskript keine Ergebnisse zurückgibt, sind Sie fertig.
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 |