WPROWADZENIE

Firma Microsoft wydała biuletyn zabezpieczeń MS14-025. Aby dowiedzieć się więcej o tym biuletynie zabezpieczeń:

Jak uzyskać pomoc i obsługę techniczną związaną z tą aktualizacją zabezpieczeń

Pomoc dotycząca instalowania aktualizacji: Pomoc techniczna dotycząca witryny Microsoft Update

Rozwiązania zabezpieczeń dla informatyków: Pomoc techniczna i rozwiązywanie problemów z zabezpieczeniami w witrynie TechNet

Pomoc dotycząca ochrony komputera z systemem Windows przed wirusami i złośliwym oprogramowaniem: Centrum rozwiązań dotyczących wirusów i zabezpieczeń

Lokalna pomoc techniczna dla danego kraju: Międzynarodowa pomoc techniczna

Więcej informacji

Znane problemy i dodatkowe informacje dotyczące tej aktualizacji zabezpieczeń

Poniższe artykuły zawierają więcej informacji o tej aktualizacji zabezpieczeń w powiązaniu z poszczególnymi wersjami produktu. Te artykuły mogą zawierać informacje o znanych problemach. W takim przypadku znany problem wymieniono po odpowiednim łączu do artykułu.

  • 2928120



    MS14-025: Opis aktualizacji zabezpieczeń Narzędzi administracji zdalnej serwera systemu Windows dla systemów z zainstalowaną aktualizacją 2919355: 13 maja 2014 (strona może być w języku angielskim)

  • 2961899

    MS14-025: Opis aktualizacji zabezpieczeń Narzędzi administracji zdalnej serwera systemu Windows dla systemów bez zainstalowanej aktualizacji 2919355: 13 maja 2014 (strona może być w języku angielskim)

Preferencje zasad grupy

Omówienie

W niektórych preferencjach zasad grupy można przechowywać hasło. Ta funkcja jest wycofywana, ponieważ sposób przechowywania hasła nie jest bezpieczny. W tym artykule opisano zmiany w interfejsie użytkownika i wszelkie dostępne obejścia.

Następujące preferencje zasad grupy nie będą już umożliwiać zapisywania nazw użytkowników i haseł:

  • Mapowania dysków

  • Użytkownicy i grupy lokalne

  • Zaplanowane zadania

  • Usługi

  • Źródła danych

Wpłynie to na zachowanie wszelkich istniejących obiektów zasad grupy (GPO, Group Policy Object) w środowisku zależnych od haseł zawartych w tych preferencjach. Uniemożliwi to też używanie tej funkcji w nowo tworzonych preferencjach zasad grupy.

W przypadku mapowań dysków, użytkowników i grup lokalnych oraz usług można niekiedy zrealizować podobne cele za pomocą innych, bezpieczniejszych funkcji systemu Windows.

W przypadku zaplanowanych zadań i źródeł danych nie można zrealizować tych samych celów co w przypadku użycia niezabezpieczonej funkcji haseł preferencji zasad grupy.

Scenariusze

Ta zmiana wpływa na następujące preferencje zasad grupy. Każda pozycja preferencji jest najpierw krótko, a potem bardziej szczegółowo omówiona. Ponadto podano obejścia umożliwiające wykonanie tych samych zadań.

Preferencja, na którą wpływa zmiana

Dotyczy użytkownika

Dotyczy komputera

Zarządzanie użytkownikami lokalnymi

Tak

Tak

Zamapowane dyski

Tak

Nie

Usługi

Nie

Tak

Zaplanowane zadania (wyższy poziom)

Tak

Tak

Zaplanowane zadania (niższy poziom)

Tak

Tak

Zadania natychmiastowe (wyższy poziom)

Tak

Tak

Zadania natychmiastowe (niższy poziom)

Tak

Tak

Źródła danych

Tak

Tak

Podsumowanie zmian

  • Pola haseł we wszystkich objętych zmianą preferencjach są wyłączone. Administratorzy nie mogą utworzyć nowych preferencji za pomocą tych pól haseł.

  • Pole Nazwa użytkownika jest wyłączone w niektórych preferencjach.

  • Istniejących preferencji, które zawierają hasła, nie można zaktualizować. Można je jedynie usunąć lub wyłączyć, zależnie od konkretnej pozycji preferencji.

  • Zachowanie dla akcji usuwania i wyłączania preferencji nie zmieniło się.

  • Gdy administrator otworzy dowolną pozycję preferencji zawierającą atrybut CPassword, zostanie mu wyświetlone następujące okno dialogowe z ostrzeżeniem w celu poinformowania go o niedawnym wycofaniu funkcji. Próby zapisania zmian w nowych lub istniejących preferencjach wymagających atrybutu CPassword spowodują wyświetlenie tego samego okna dialogowego. Jedynie akcje usuwania i wyłączania nie będą powodować wyświetlania okien dialogowych z ostrzeżeniami.






Scenariusz 1. Zarządzanie użytkownikami lokalnymi

Pozycja preferencji zarządzania użytkownikami lokalnymi jest często używana do tworzenia administratorów lokalnych, którzy mają znane hasła na komputerze. Ta funkcja nie jest bezpieczna ze względu na sposób, w jaki preferencje zasad grupy przechowują hasła. Dlatego ta funkcja nie jest już dostępna. Dotyczy to następujących preferencji:

  • Konfiguracja komputera -> Ustawienia Panelu sterowania -> Użytkownicy i grupy lokalne -> Nowy -> Użytkownik lokalny

  • Konfiguracja użytkownika -> Ustawienia Panelu sterowania -> Użytkownicy i grupy lokalne -> Nowy -> Użytkownik lokalny

Ważne zmiany

Akcja: tworzenie lub zamienianie

  • Pola Nazwa użytkownika, Hasło i Potwierdź hasło są wyłączone.

  • Gdy administrator otworzy dowolną istniejącą pozycję preferencji zawierającą hasło lub spróbuje zapisać w niej dowolne zmiany, zostanie mu wyświetlone okno dialogowe z ostrzeżeniem.





Akcja: aktualizowanie

  • Pola Hasło i Potwierdź hasło są wyłączone.

  • Gdy administrator otworzy dowolną istniejącą pozycję preferencji zawierającą hasło lub spróbuje zapisać w niej dowolne zmiany, zostanie mu wyświetlone okno dialogowe z ostrzeżeniem.





Akcja: usuwanie

  • Brak zmian w zachowaniu

Obejścia problemu

Osobom, które wcześniej polegały na preferencjach zasad grupy na potrzeby ustawiania haseł administratorów lokalnych, udostępniony został poniższy skrypt, który jest bezpieczną alternatywą dla atrybutu CPassword. Tę zawartość należy skopiować i zapisać w nowym pliku programu Windows PowerShell. Następnie należy uruchomić ten skrypt zgodnie z instrukcjami w jego sekcji .EXAMPLE.

Firma Microsoft podaje przykłady programowania wyłącznie do celów informacyjnych, bez jakichkolwiek gwarancji wyrażonych wprost lub w sposób dorozumiany. Dotyczy to także, ale nie wyłącznie, gwarancji przydatności handlowej lub do określonego celu. W tym artykule zakłada się, że czytelnik zna prezentowany język programowania oraz narzędzia używane do tworzenia i debugowania procedur. Pracownicy pomocy technicznej firmy Microsoft mogą wyjaśnić funkcję konkretnej procedury. Nie będą jednak modyfikować tych przykładów ani dodawać żadnej funkcji i konstruować nowych procedur w celu dostosowania ich do konkretnych potrzeb użytkownika.

function Invoke-PasswordRoll
{
<#
.SYNOPSIS

Za pomocą tego skryptu można ustawiać hasła losowe jako hasła kont lokalnych na komputerach zdalnych. Kombinacja nazwa_użytkownika/hasło/serwer zostanie zapisana w pliku CSV. Hasła do kont zapisane w pliku CSV można zaszyfrować za pomocą hasła administratorów w celu zapewnienia, że hasła do kont nie są zapisywane na dysku w postaci zwykłego tekstu. Zaszyfrowane hasła można odszyfrować za pomocą innej funkcji z tego pliku: ConvertTo-CleartextPassword


Function: Invoke-PasswordRoll
Author: Microsoft
Version: 1.0

.DESCRIPTION

Za pomocą tego skryptu można ustawiać hasła losowe jako hasła kont lokalnych na komputerach zdalnych. Kombinacja nazwa_użytkownika/hasło/serwer zostanie zapisana w pliku CSV. Hasła do kont zapisane w pliku CSV można zaszyfrować za pomocą hasła administratorów w celu zapewnienia, że hasła do kont nie są zapisywane na dysku w postaci zwykłego tekstu. Zaszyfrowane hasła można odszyfrować za pomocą innej funkcji z tego pliku: ConvertTo-CleartextPassword

.PARAMETER ComputerName

Tablica komputerów, dla których za pomocą komunikacji zdalnej programu PowerShell ma zostać uruchomiony skrypt.

.PARAMETER LocalAccounts

Tablica kont lokalnych, których hasła należy zmienić.

.PARAMETER TsvFileName

Plik, w którym mają zostać zapisane kombinacje nazwa_użytkownika/hasło/serwer.

.PARAMETER EncryptionKey

Hasło do zaszyfrowania pliku TSV. Stosowane jest szyfrowanie AES. Zaszyfrowane zostaną tylko hasła zapisane w pliku TSV. Nazwa użytkownika i nazwa serwera będą miały postać zwykłego tekstu.

.PARAMETER PasswordLength

Długość haseł generowanych losowo dla kont lokalnych.

.PARAMETER NoEncryption

Nie szyfruj haseł do kont zapisanych w pliku TSV. Spowoduje to zapisanie haseł na dysku w postaci zwykłego tekstu.

.EXAMPLE

. .\Invoke-PasswordRoll.ps1 #Załadowanie funkcji w tym pliku skryptu
Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator","CustomLocalAdmin") -TsvFileName "LocalAdminCredentials.tsv" -EncryptionKey "Password1"

Nawiązanie połączeń ze wszystkimi komputerami zapisanymi w pliku „computerlist.txt”. Jeśli w systemie jest obecne konto lokalne „administrator” lub „CustomLocalAdmin”, hasło tego konta jest zmieniane na losowo wygenerowane hasło o długości (domyślnej) 20 znaków. Kombinacje nazwa_użytkownika/hasło/serwer są zapisywane w pliku LocalAdminCredentials.tsv. Hasła do kont są szyfrowane algorytmem AES za pomocą hasła „Password1”.

.EXAMPLE

. .\Invoke-PasswordRoll.ps1 #Załadowanie funkcji w tym pliku skryptu
Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator") -TsvFileName "LocalAdminCredentials.tsv" -NoEncryption -PasswordLength 40

Nawiązanie połączeń ze wszystkimi komputerami zapisanymi w pliku „computerlist.txt”. Jeśli w systemie jest obecne konto lokalne „administrator”, hasło tego konta jest zmieniane na losowo wygenerowane hasło o długości 40 znaków.
Kombinacje nazwa_użytkownika/hasło/serwer są zapisywane w pliku LocalAdminCredentials.tsv.
.NOTES
Wymagania: - Musi być zainstalowany składnik PowerShellv2 lub nowsza wersja. - We wszystkich systemach, dla których zostanie uruchomiony skrypt, musi być włączona komunikacja zdalna programu PowerShell.

Zachowanie skryptu: - Jeśli w systemie istnieje konto lokalne, ale nie określono go w parametrze LocalAccounts, skrypt wyświetli na ekranie ostrzeżenie z informacją o istnieniu tego konta. W takim przypadku działanie skryptu będzie kontynuowane. - Jeśli w parametrze LocalAccounts określono konto lokalne, ale nie istnieje ono na komputerze, nic się nie wydarzy (NIE zostanie utworzone konto). - Za pomocą zawartej w tym pliku funkcji ConvertTo-CleartextPassword można odszyfrować hasła przechowywane w postaci zaszyfrowanej w pliku TSV. - Jeśli nie można nawiązać połączenia z serwerem określonym w parametrze ComputerName, program PowerShell zwróci komunikat o błędzie. - Firma Microsoft zaleca firmom regularne zmienianie wszystkich haseł do kont lokalnych i domenowych.

#>
[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
)


#Załadowanie wszelkich potrzebnych klas .net
Add-Type -AssemblyName "System.Web" -ErrorAction Stop


#To jest kod scriptblock, który zostanie wykonany na każdym komputerze określonym w elemencie ComputerName
$RemoteRollScript = {
Param(
[Parameter(Mandatory=$true, Position=1)]
[String[]]
$Passwords,

[Parameter(Mandatory=$true, Position=2)]
[String[]]
$LocalAccounts,

#Ta część umożliwia zarejestrowanie nazwy serwera, z którym połączył się skrypt. Niekiedy powstaje zamieszanie przy rekordach DNS, dlatego warto to zapisać.
[Parameter(Mandatory=$true, Position=3)]
[String]
$TargettedServerName
)

$LocalUsers = Get-WmiObject Win32_UserAccount -Filter "LocalAccount=true" | Foreach {$_.Name}

#Sprawdzenie, czy na komputerze są jakieś konta użytkowników, których hasła nie zostaną zmienione przez ten skrypt
foreach ($User in $LocalUsers)
{
if ($LocalAccounts -inotcontains $User)
{
Write-Warning "Server: '$($TargettedServerName)' has a local account '$($User)' whos password is NOT being changed by this script"
}
}

#Zmiana hasła dla każdego konta lokalnego istniejącego na tym serwerze
$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 "Error changing password for user:$($LocalAdmin) on server:$($TargettedServerName)"
}
}

$PasswordIndex++
}
}


#Wygenerowanie hasła na kliencie uruchamiającym ten skrypt, nie na komputerze zdalnym. W składniku .NET Client Profile nie jest dostępna przestrzeń System.Web.Security. Dzięki wykonaniu tego wywołania # na kliencie uruchamiającym skrypt pełne środowisko wykonawcze .NET musi być zainstalowane tylko na jednym komputerze (a nie w każdym systemie, dla którego zmieniane są hasła).
function Create-RandomPassword
{
Param(
[Parameter(Mandatory=$true)]
[ValidateRange(20,120)]
[Int]
$PasswordLength
)

$Password = [System.Web.Security.Membership]::GeneratePassword($PasswordLength, $PasswordLength / 4)

#Nie powinny tu występować żadne błędy, ale na wszelki wypadek dodano zabezpieczenia
if ($Password.Length -ne $PasswordLength)
{
throw new Exception("Password returned by GeneratePassword is not the same length as required. Required length: $($PasswordLength). Generated length: $($Password.Length)")
}

return $Password
}


#Główna funkcjonalność — wygenerowanie haseł i skomunikowanie się zdalne z komputerami w celu zmiany haseł określonych kont lokalnych
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 "Error creating TSV encryption key" -ErrorAction Stop
}
}

foreach ($Computer in $ComputerName)
{
#Dla każdego konta powinno zostać wygenerowane jedno hasło, które można zmienić
$Passwords = @()
for ($i = 0; $i -lt $LocalAccounts.Length; $i++)
{
$Passwords += Create-RandomPassword -PasswordLength $PasswordLength
}

Write-Output "Connecting to server '$($Computer)' to roll specified local admin passwords"
$Result = Invoke-Command -ScriptBlock $RemoteRollScript -ArgumentList @($Passwords, $LocalAccounts, $Computer) -ComputerName $Computer
#Jeśli jest używane szyfrowanie, przed zapisaniem na dysku zaszyfrowanie hasła za pomocą klucza dostarczonego przez użytkownika
if ($Result -ne $null)
{
if ($PsCmdlet.ParameterSetName -ieq "NoEncryption")
{
$Result | Select-Object Username,Password,TargettedServerName,RealServerName | Export-Csv -Append -Path $TsvFileName -NoTypeInformation
}
else
{
#Odfiltrowanie zwróconych pozycji $null
$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
{
<#
.SYNOPSIS
Za pomocą tej funkcji można odszyfrować hasła zapisane w postaci zaszyfrowanej przez funkcję Invoke-PasswordRoll.

Function: ConvertTo-CleartextPassword
Author: Microsoft
Version: 1.0

.DESCRIPTION
Za pomocą tej funkcji można odszyfrować hasła zapisane w postaci zaszyfrowanej przez funkcję Invoke-PasswordRoll.


.PARAMETER EncryptedPassword

Zaszyfrowane hasło zapisane w pliku TSV.

.PARAMETER EncryptionKey

Hasło, za pomocą którego przeprowadzono szyfrowanie.


.EXAMPLE. .\Invoke-PasswordRoll.ps1 #Załadowanie funkcji w tym pliku skryptu
ConvertTo-CleartextPassword -EncryptionKey "Password1" -EncryptedPassword 76492d1116743f0423413b16050a5345MgB8AGcAZgBaAHUAaQBwADAAQgB2AGgAcABNADMASwBaAFoAQQBzADEAeABjAEEAPQA9AHwAZgBiAGYAMAA1ADYANgA2ADEANwBkADQAZgAwADMANABjAGUAZQAxAGIAMABiADkANgBiADkAMAA4ADcANwBhADMAYQA3AGYAOABkADcAMQA5ADQAMwBmAGYANQBhADEAYQBjADcANABkADIANgBhADUANwBlADgAMAAyADQANgA1ADIAOQA0AGMAZQA0ADEAMwAzADcANQAyADUANAAzADYAMAA1AGEANgAzADEAMQA5ADAAYwBmADQAZAA2AGQA"

Odszyfrowanie zaszyfrowanego hasła zapisanego w pliku TSV.

#>
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)))
} Administratorzy mogą dodawać konta administratorów lokalnych do komputerów, tworząc grupę usługi Active Directory i dodając ją do lokalnej grupy Administratorzy za pomocą pozycji Preferencje zasad grupy -> Grupa lokalna. Ta akcja nie powoduje buforowania poświadczeń. Odpowiednie okno dialogowe przypomina następujące. To obejście wymaga połączenia z usługami domenowymi Active Directory, gdy użytkownik jest zalogowany przy użyciu tych poświadczeń.





Scenariusz 2. Zamapowane dyski

Administratorzy używają mapowań dysków do przydzielania lokalizacji sieciowych użytkownikom. Funkcja ochrony hasłem jest używana w celu zapewnienia, że dostęp do dysku jest autoryzowany. Dotyczy to następujących preferencji:

  • Konfiguracja użytkownika -> Ustawienia systemu Windows -> Mapowania dysków -> Nowy -> Dysk zamapowany

Ważne zmiany

Akcja: tworzenie, aktualizowanie lub zamienianie

  • Pola Nazwa użytkownika, Hasło i Potwierdź hasło są wyłączone.




Akcja: usuwanie

  • Brak zmian w zachowaniu

Obejścia problemu

Zamiast stosowania metody hasła do uwierzytelniania można używać Eksploratora Windows do zarządzania uprawnieniami udziału i do przydzielania uprawnień użytkownikom. Uprawnienia folderu można kontrolować za pomocą obiektów usługi Active Directory.


Scenariusz 3. Usługi

Za pomocą preferencji usług można zmienić właściwości usług w taki sposób, że będą one uruchamiane w kontekście innym niż ich pierwotny kontekst zabezpieczeń. Dotyczy to następujących preferencji:

  • Konfiguracja komputera -> Ustawienia Panelu sterowania -> Usługi -> Nowy -> Usługa

Ważne zmiany

Uruchamianie: bez zmian, automatyczne lub ręczne

  • Pola Hasło i Potwierdź hasło są wyłączone.

  • Administrator może używać tylko wbudowanych kont.




Uruchamianie: wyłączanie

  • Brak zmian w zachowaniu

Nowe okno dialogowe

  • Administratorzy próbujący skorzystać z kont użytkowników innych niż wbudowane na potrzeby tego konta otrzymują następujące ostrzeżenie:





Obejścia problemu



Nadal można uruchamiać usługi z poziomu konta systemowego. Uprawnienia usług można zmienić w sposób udokumentowany w następującym artykule z bazy wiedzy Microsoft Knowledge Base:

256345 Jak skonfigurować ustawienia zasad grupy w celu ustawiania zabezpieczeń dla usług systemowych (strona może być w języku angielskim)

Uwaga Jeśli usługi, która ma zostać skonfigurowana, nie ma, należy skonfigurować ustawienia na komputerze, na którym ta usługa działa.


Scenariusz 4. Zadania zaplanowane i natychmiastowe (wyższy poziom)

Są one używane do uruchamiania zaplanowanych zadań w określonym kontekście zabezpieczeń. Nie jest już dostępna możliwość zapisania poświadczeń dla zaplanowanych zadań w celu uruchamiania ich za pomocą dowolnego konta użytkownika, które nie jest zalogowane. Dotyczy to następujących preferencji. (Uwaga: w przypadku niektórych platform informacja „przynajmniej system Windows 7” jest zamieniona na „system Windows Vista i nowszy”).

  • Konfiguracja komputera -> Ustawienia Panelu sterowania -> Zaplanowane zadania -> Nowy -> Zaplanowane zadanie (przynajmniej system Windows 7)

  • Konfiguracja komputera -> Ustawienia Panelu sterowania -> Zaplanowane zadania -> Nowy -> Zadanie natychmiastowe (przynajmniej system Windows 7)

  • Konfiguracja użytkownika -> Ustawienia Panelu sterowania -> Zaplanowane zadania -> Nowy -> Zaplanowane zadanie (przynajmniej system Windows 7)

  • Konfiguracja użytkownika -> Ustawienia Panelu sterowania -> Zaplanowane zadania -> Nowy -> Zadanie natychmiastowe (przynajmniej system Windows 7)

Ważne zmiany

Akcja: tworzenie, aktualizowanie lub zamienianie

  • Po wybraniu opcji Uruchom niezależnie od tego, czy użytkownik jest zalogowany nie pojawia się już okno dialogowe monitujące administratora o poświadczenia.

  • Pole wyboru Nie przechowuj hasła jest wyłączone. Domyślnie to pole też jest zaznaczone.




Akcja: usuwanie

Brak zmian w zachowaniu

Obejścia problemu

Do zadań typu „Zaplanowane zadanie (przynajmniej system Windows 7)” i „Zadanie natychmiastowe (przynajmniej system Windows 7)” administratorzy mogą używać określonych kont użytkowników, które są zalogowane. Ewentualnie mogą jedynie mieć dostęp do zasobów lokalnych jako ci użytkownicy. Te zadania nadal mogą być uruchamiane w kontekście usługi lokalnej.



Scenariusz 5. Zadania zaplanowane i natychmiastowe (niższy poziom) To jest wersja niższego poziomu preferencji używanych do uruchamiania zaplanowanych zadań w określonym kontekście zabezpieczeń. Nie jest już dostępna możliwość zapisania poświadczeń dla zaplanowanych zadań w celu uruchamiania ich za pomocą dowolnego konta użytkownika, które nie jest zalogowane. Dotyczy to następujących preferencji:

  • Konfiguracja komputera -> Ustawienia Panelu sterowania -> Zaplanowane zadania -> Nowy -> Zaplanowane zadanie

  • Konfiguracja komputera -> Ustawienia Panelu sterowania -> Zaplanowane zadania -> Nowy -> Zadanie natychmiastowe (Windows XP)

  • Konfiguracja użytkownika -> Ustawienia Panelu sterowania -> Zaplanowane zadania -> Nowy -> Zaplanowane zadanie

  • Konfiguracja użytkownika -> Ustawienia Panelu sterowania -> Zaplanowane zadania -> Nowy -> Zadanie natychmiastowe (Windows XP)

Ważne zmiany

Akcja: tworzenie, aktualizowanie lub zamienianie

  • Pole wyboru Uruchom jako jest wyłączone. Dlatego pola Nazwa użytkownika, Hasło i Potwierdź hasło są wyłączone.




Akcja: usuwanie

Brak zmian w zachowaniu

Obejścia problemu

W przypadku pozycji „Zaplanowane zadanie” i „Zadanie natychmiastowe (Windows XP)” zaplanowane zadania należy uruchamiać przy użyciu uprawnień, które są obecnie dostępne dla usługi lokalnej.


Scenariusz 6. Źródła danych

Preferencje źródeł danych służą do kojarzenia źródła danych z komputerem lub użytkownikiem. Ta funkcja nie zapisuje już poświadczeń w celu umożliwienia dostępu do źródeł danych chronionych hasłami. Dotyczy to następujących preferencji:

  • Konfiguracja komputera -> Ustawienia Panelu sterowania -> Źródła danych

  • Konfiguracja użytkownika -> Ustawienia Panelu sterowania -> Źródła danych

Ważne zmiany

Akcja: tworzenie, aktualizowanie lub zamienianie

  • Pola Nazwa użytkownika, Hasło i Potwierdź hasło są wyłączone:




Akcja: usuwanie

  • Brak zmian w zachowaniu

Obejścia problemu

Nie są dostępne żadne obejścia problemu. Ta pozycja preferencji nie zapisuje już poświadczeń w celu umożliwienia dostępu do źródeł danych chronionych hasłami.


Wycofanie atrybutu CPassword

Usuwanie atrybutu CPassword

Skrypt programu Windows PowerShell udostępniony w tym artykule z bazy wiedzy Microsoft Knowledge Base wykrywa, czy domena zawiera jakiekolwiek preferencje zasad grupy, które mogą używać atrybutu CPassword. Jeśli w danej pozycji preferencji zostanie wykryty kod XML atrybutu CPassword, zostanie to wyświetlone na tej liście.


Wykrywanie preferencji z atrybutem CPassword

Ten skrypt musi zostać uruchomiony w katalogu lokalnym na kontrolerze domeny, który ma zostać oczyszczony. Tę zawartość należy skopiować i zapisać w nowym pliku programu Windows PowerShell. Następnie należy odszukać dysk systemowy i uruchomić ten skrypt zgodnie z instrukcjami dotyczącymi jego używania.

<#
.SYNOPSIS

Obiekty zasad grupy w domenie mogą mieć preferencje zapisujące hasła na potrzeby różnych zadań, jak na przykład:

1. Źródła danych 2.
Mapowania dysków 3. Użytkownicy lokalni 4. Zaplanowane zadania (XP i wyższego poziomu) 5. Usługi
Te hasła są przechowywane w woluminie SYSVOL jako część preferencji zasad grupy i nie są bezpieczne z powodu słabego szyfrowania (32-bajtowego szyfrowania AES). Dlatego nie zaleca się wdrażania takich preferencji w środowisku domeny i zaleca się usunięcie już istniejących. Ten skrypt ma ułatwić administratorowi odnalezienie zawierających hasła preferencji zasad grupy w woluminie SYSVOL domeny.

.DESCRIPTION
Ten skrypt powinien zostać uruchomiony na kontrolerze domeny lub komputerze klienckim zainstalowanym z Narzędziami administracji zdalnej serwera w celu wyświetlenia wszystkich preferencji zawierających hasła wraz z odpowiednimi informacjami o obiekcie zasad grupy, nazwie preferencji oraz ścieżce GPEdit, w której zdefiniowano dane preferencje.

Po uzyskaniu listy dotkniętych problemem preferencji można je usunąć za pomocą edytora w Konsoli zarządzania zasadami grupy.

.SYNTAXGet-SettingsWithCPassword.ps1 [-Path <String>] .EXAMPLEGet-SettingsWithCPassword.ps1 -Path %WinDir%\SYSVOL\domain

Get-SettingsWithCPassword.ps1 -Path <GPO Backup Folder Path>

.NOTES
Jeśli nie zostanie odnaleziony moduł PS zasad grupy, informacje wynikowe będą zawierać identyfikatory GUID obiektów zasad grupy, a nie ich nazwy. Ten skrypt można uruchomić na kontrolerze domeny lub można go ponownie uruchomić na komputerze klienckim po zainstalowaniu Narzędzi administracji zdalnej serwera i włączeniu modułu zasad grupy. Ewentualnie można uzyskać nazwy obiektów zasad grupy na podstawie ich identyfikatorów GUID za pomocą polecenia cmdlet Get-GPO.

.LINK
http://go.microsoft.com/fwlink/?LinkID=390507

#>

#---------------------------------------------------------------------------------------------------------------- # Parametry wejściowe #--------------------------------------------------------------------------------------------------------------
param(
[string]$Path = $(throw "-Path is required.") # Ścieżka katalogu, w którym znajdują się preferencje zasad grupy.
)

#---------------------------------------------------------------------------------------------------------------

$isGPModuleAvailable = $false
$impactedPrefs = { "Groups.xml", "ScheduledTasks.xml","Services.xml", "DataSources.xml", "Drives.xml" }

#---------------------------------------------------------------------------------------------------------------- # zaimportowanie modułu zasad grupy, jeśli jest dostępny #----------------------------------------------------------------------------------------------------------------
if (-not (Get-Module -name "GroupPolicy"))
{
if (Get-Module -ListAvailable |
Where-Object { $_.Name -ieq "GroupPolicy" })
{
$isGPModuleAvailable = $true
Import-Module "GroupPolicy"
}
else
{
Write-Warning "Unable to import Group Policy module for PowerShell. Therefore, GPO guids will be reported.
Run this script on DC to obtain the GPO names, or use the Get-GPO cmdlet (on DC) to obtain the GPO name from GPO guid."
}
}
else
{
$isGPModuleAvailable = $true
}

Function Enum-SettingsWithCpassword ( [string]$sysvolLocation )
{
# Ścieżki drzewa Konsoli zarządzania zasadami grupy
$commonPath = " -> Preferences -> Control Panel Settings -> "
$driveMapPath = " -> Preferences -> Windows Settings -> "

# Cykliczne pobranie wszystkich plików xml w lokalizacji SYVOL
$impactedXmls = Get-ChildItem $sysvolLocation -Recurse -Filter "*.xml" | Where-Object { $impactedPrefs -cmatch $_.Name }


# Każdy plik xml zawiera wiele pozycji preferencji. Iterowanie przez poszczególne pozycje preferencji w celu sprawdzenia, # czy dana pozycja zawiera atrybut cpassword, i wyświetlenie go.

foreach ( $file in $impactedXmls )
{
$fileFullPath = $file.FullName

# Ustawienie kategorii ścieżki zasad grupy. Jeśli plik znajduje się w folderze komputera (Machine) w woluminie SYSVOL, # ustawienie jest zdefiniowane w konfiguracji komputera. W przeciwnym przypadku # ustawienie należy do konfiguracji użytkownika

if ( $fileFullPath.Contains("Machine") )
{
$category = "Computer Configuration"
}
elseif ( $fileFullPath.Contains("User") )
{
$category = "User Configuration"
}
else
{
$category = "Unknown"
}

# Pobranie zawartości pliku jako kodu XML
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 { $_.Properties.cpassword -ne $null}
$preferenceType = "Local Users"
}

ScheduledTasks
{
$gppWithCpassword = $xmlFile.SelectNodes("ScheduledTasks/*") | where-Object { $_.Properties.cpassword -ne $null}
$preferenceType = "Scheduled Tasks"
}

DataSources
{
$gppWithCpassword = $xmlFile.SelectNodes("DataSources/DataSource") | where-Object { $_.Properties.cpassword -ne $null}
$preferenceType = "Data sources"
}

Drives
{
$gppWithCpassword = $xmlFile.SelectNodes("Drives/Drive") | where-Object { $_.Properties.cpassword -ne $null}
$preferenceType = "Drive Maps"
}

Services
{
$gppWithCpassword = $xmlFile.SelectNodes("NTServices/NTService") | where-Object { $_.Properties.cpassword -ne $null}
$preferenceType = "Services"
}

default
{ # oczyszczenie elementów gppWithCpassword i preferenceType dla następnej pozycji.
try
{
Clear-Variable -Name gppWithCpassword -ErrorAction SilentlyContinue
Clear-Variable -Name preferenceType -ErrorAction SilentlyContinue
}
catch [Exception]{}
}
}if ($gppWithCpassword -ne $null)
{
# Utworzenie nazwy obiektu zasad grupy na podstawie identyfikatora GUID wyodrębnionego z elementu filePath
$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
}
}

# wyświetlenie preferencji zawierających atrybut cpassword
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

}
} # koniec: if $gppWithCpassword } # koniec: foreach $file } # koniec funkcji: Enum-PoliciesWithCpassword

#----------------------------------------------------------------------------------- # Sprawdzenie, czy ścieżka jest prawidłowa. Wyliczenie wszystkich ustawień zawierających atrybut cpassword. #-----------------------------------------------------------------------------------
if (Test-Path $Path )
{
Enum-SettingsWithCpassword $Path
}
else
{
Write-Warning "No such directory: $Path"
}

Przykład zastosowania (założenie: dysk systemowy to C)

.\Get-SettingsWithCPassword.ps1 –path “C:\Windows\SYSVOL\domain” | Format-List
Uwaga Należy pamiętać, że jako obiektu docelowego ścieżki zamiast domeny można także użyć dowolnej kopii zapasowej obiektu zasad grupy.

Skrypt wykrywania generuje listę podobną do następującej:



W przypadku dłuższych list warto rozważyć zapisanie wyników w pliku:

.\Get-SettingsWithCPassword.ps1 –path “C:\Windows\SYSVOL\domain” | ConvertTo-Html > gpps.html

Usuwanie preferencji z atrybutem CPassword

W celu usunięcia preferencji zawierających dane CPassword zaleca się skorzystanie z Konsoli zarządzania zasadami grupy (GPMC, Group Policy Management Console) na kontrolerze domeny lub kliencie z zainstalowanymi Narzędziami administracji zdalnej serwera. W tych konsolach można w pięciu krokach usunąć dowolne preferencje. W tym celu wykonaj następujące czynności:

  1. W Konsoli zarządzania zasadami grupy otwórz pozycję preferencji zawierającą dane CPassword.

  2. Zmień akcję na Usuń lub Wyłącz, odpowiednio do danej pozycji preferencji.

  3. Kliknij przycisk OK, aby zapisać zmiany.

  4. Poczekaj na wykonanie jednego lub dwóch cykli odświeżania zasad grupy, aby wprowadzone zmiany zostały przekazane do klientów.

  5. Po zastosowaniu zmian na wszystkich klientach usuń daną pozycję preferencji.

  6. Powtórz kroki od 1 do 5, stosownie do potrzeb, w celu oczyszczenia całego środowiska. Gdy skrypt wykrywania nie zwróci już żadnych wyników, będzie to koniec pracy.

File name

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


Potrzebna dalsza pomoc?

Rozwijaj swoje umiejętności
Poznaj szkolenia
Uzyskuj nowe funkcje w pierwszej kolejności
Dołącz do niejawnych testerów firmy Microsoft

Czy te informacje były pomocne?

Jaka jest jakość języka?
Co wpłynęło na Twoje wrażenia?

Dziękujemy za opinię!

×