Microsoft로 로그인
로그인하거나 계정을 만듭니다.
안녕하세요.
다른 계정을 선택합니다.
계정이 여러 개 있음
로그인할 계정을 선택합니다.

소개

Microsoft는 보안 공지 MS14-025를 발표했습니다. 이 보안 공지에 대해 자세히 알아보십시오.

이 보안 업데이트에 대한 도움말 및 지원을 받는 방법


업데이트 설치 도움말:
Microsoft Update 지원

IT 전문가용 보안 솔루션:
TechNet 보안 문제 해결 및 지원

Windows 기반 컴퓨터 Windows를 바이러스 및 맬웨어로부터 보호:
바이러스 솔루션 및 보안 센터

각 지역의 국가별 지원:
국가별 지원

추가 정보

이 보안 업데이트에 대한 알려진 문제 및 추가 정보

다음 문서에는 개별 제품 버전과 관련된 이 보안 업데이트에 대한 추가 정보가 나와 있습니다. 문서에는 알려진 문제 정보가 포함될 수 있습니다. 이러한 경우 알려진 문제는 각 문서 링크 아래에 표시됩니다.

  • 2928120



    MS14-025: 업데이트 2919355가 설치된 시스템의 Windows 원격 서버 관리 도구용 보안 업데이트에 대한 설명: 2014년 5월 13일

  • 2961899

    MS14-025: 업데이트 2919355가 설치되지 않은 시스템의 Windows 원격 서버 관리 도구용 보안 업데이트에 대한 설명: 2014년 5월 13일

그룹 정책 기본 설정

개요


일부 그룹 정책 기본 설정은 암호를 저장할 수 있습니다. 암호가 안전하지 않게 저장되기 때문에 이 기능은 제거됩니다. 이 문서에서는 사용자 인터페이스 변경 사항 및 모든 사용 가능한 해결 방법에 대해 설명합니다.

다음 그룹 정책 기본 설정은 더 이상 사용자 이름과 암호가 저장되게 허용하지 않습니다.

  • 드라이브 맵

  • 로컬 사용자 및 그룹

  • 예약된 작업

  • 서비스

  • 데이터 원본

이는 해당 기본 설정에 포함된 암호에 의존하는 환경의 기존 GPO(그룹 정책 개체) 동작에 영향을 미칩니다. 또한 이 기능을 사용하여 새로운 그룹 정책 기본 설정을 만들 수 없게 합니다.

드라이브 맵, 로컬 사용자 및 그룹, 서비스의 경우 Windows의 보다 안전한 다른 기능을 통해 유사한 목표를 달성할 수 있습니다.

예약된 작업 및 데이터 원본의 경우 그룹 정책 기본 설정 암호의 보안되지 않는 기능을 통해 가능했던 동일한 목표를 달성할 수 없게 됩니다.

시나리오

이 변경 사항으로 인해 영향을 받는 그룹 정책 기본 설정은 다음과 같습니다. 각 기본 설정에 대해 간단히 소개한 후 자세히 다룹니다. 또한 동일한 작업을 수행할 수 있는 해결 방법이 제공됩니다.

영향을 받는 기본 설정

사용자에 적용

컴퓨터에 적용

로컬 사용자 관리

매핑된 드라이브

아니요

서비스

아니요

예약된 작업(상위 수준)

예약된 작업(하위 수준)

즉시 실행 작업(상위 수준)

즉시 실행 작업(하위 수준)

데이터 원본

변경 사항 요약

  • 영향을 받는 모든 기본 설정의 암호 필드는 사용되지 않도록 설정되어 있습니다. 관리자는 해당 암호 필드를 사용하여 새 기본 설정을 만들 수 없습니다.

  • 사용자 암호 필드는 일부 기본 설정에서 사용되지 않도록 설정되어 있습니다.

  • 암호가 포함된 기존 기본 설정은 업데이트할 수 없습니다. 특정 기본 설정에 맞게 이러한 설정은 삭제하거나 사용하지 않도록 설정할 수만 있습니다.

  • 삭제 및 사용 안 함 작업의 동작은 기본 설정에 대해 변경되지 않았습니다.

  • 관리자가 CPassword 특성이 포함된 기본 설정을 여는 경우 최근 사용 중단을 알려주는 다음 경고 대화 상자가 표시됩니다. CPassword 특성이 필요한 새 기본 설정이나 기존 기본 설정에 대한 변경 사항을 저장하려고 하면 동일한 대화 상자가 트리거됩니다. 삭제 및 사용 안 함 작업만이 경고 대화 상자를 트리거하지 않습니다.






시나리오 1: 로컬 사용자 관리


로컬 사용자 관리 기본 설정은 컴퓨터의 알려진 암호를 가지는 로컬 관리자를 만들기 위해 자주 사용됩니다. 이 기능은 그룹 정책 기본 설정이 암호를 저장하는 방법 때문에 안전하지 않습니다. 따라서 이 기능은 더 이상 사용할 수 없습니다. 영향을 받는 기본 설정은 다음과 같습니다.

  • 컴퓨터 구성 -> 제어판 설정 -> 로컬 사용자 및 그룹 -> 새로 만들기 -> 로컬 사용자

  • 사용자 구성 -> 제어판 설정 -> 로컬 사용자 및 그룹 -> 새로 만들기 -> 로컬 사용자

중요 변경 사항

작업: 만들기 또는 바꾸기

  • 사용자 이름, 암호암호 확인 필드는 사용되지 않게 설정되어 있습니다.

  • 관리자가 암호가 포함된 기존 기본 설정에 대한 변경 사항을 열거나 저장하려고 하면 경고 대화 상자가 나타납니다.





작업: 업데이트

  • 암호암호 확인 필드는 사용되지 않게 설정되어 있습니다.

  • 관리자가 암호가 포함된 기존 기본 설정에 대한 변경 사항을 열거나 저장하려고 하면 경고 대화 상자가 나타납니다.





작업: 삭제

  • 동작의 변경 사항 없음

해결 방법


로컬 관리자 암호 설정을 위해 이전에 그룹 정책 기본 설정에 의존한 사용자를 위해 CPassword에 대한 안전한 대안으로 다음 스크립트가 제공됩니다. 새 Windows PowerShell 파일에 콘텐츠를 복사하고 저장한 다음 해당 .EXAMPLE 섹션에 나오는 대로 스크립트를 실행하십시오.

Microsoft는 모든 보증(상품, 특정 목적에의 적합성에 대한 묵시적인 보증을 포함하며 이에 제한되지 않음)을 배제하며 예를 보여 주기 위한 목적으로만 프로그래밍 예제를 제공합니다. 본 문서의 내용은 프로시저를 작성하고 디버깅하는 데 사용되는 도구 및 여기서 설명하는 프로그래밍 언어에 익숙한 사용자를 대상으로 합니다. Microsoft 지원 엔지니어는 사용자에게 도움이 되도록 특정 프로시저에 대한 기능을 설명할 수 있지만 사용자의 특정 요구 사항에 맞도록 예제를 수정하여 추가 기능을 제공하거나 프로시저를 구성하지는 않습니다.


function Invoke-PasswordRoll
{
<#
.개요

이 스크립트를 사용하여 원격 컴퓨터의 로컬 계정 암호를 임의의 암호로 설정할 수 있습니다. 사용자 이름/암호/서버 조합이 CSV 파일에 저장됩니다.
CSV 파일에 저장되는 계정 암호는 일반 텍스트 계정 암호가 디스크에 기록되지 않도록 관리자의 암호를 사용하여 암호화할 수 있습니다.
암호화된 암호는 이 파일의 다른 함수를 사용하여 해독할 수 있습니다. ConvertTo-CleartextPassword


함수: Invoke-PasswordRoll
작성자: Microsoft
버전: 1.0

.설명

이 스크립트를 사용하여 원격 컴퓨터의 로컬 계정 암호를 임의의 암호로 설정할 수 있습니다. 사용자 이름/암호/서버 조합이 CSV 파일에 저장됩니다.
CSV 파일에 저장되는 계정 암호는 일반 텍스트 계정 암호가 디스크에 기록되지 않도록 관리자의 암호를 사용하여 암호화할 수 있습니다.
암호화된 암호는 이 파일의 다른 함수를 사용하여 해독할 수 있습니다. ConvertTo-CleartextPassword

.매개 변수 ComputerName

PowerShell 원격 사용에 대해 스크립트를 실행할 컴퓨터의 배열.

.매개 변수 LocalAccounts

암호를 변경해야 하는 로컬 계정의 배열.

.매개 변수 TsvFileName

사용자 이름/암호/서버 조합을 출력할 파일.

.매개 변수 EncryptionKey

TSV 파일을 암호화하기 위한 암호. AES 암호화를 사용합니다. TSV 파일에 저장된 암호만 암호화되며, 사용자 이름 및 서버 이름은 일반 텍스트입니다.

.매개 변수 PasswordLength

로컬 계정에 대해 임의로 생성되는 암호의 길이.

.매개 변수 NoEncryption

TSV 파일에 저장된 계정 암호를 암호화하지 마십시오. 그러면 일반 텍스트 암호가 디스크에 기록됩니다.

.예

. .\Invoke-PasswordRoll.ps1 #이 스크립트 파일의 함수 로드
Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator","CustomLocalAdmin") -TsvFileName "LocalAdminCredentials.tsv" -EncryptionKey "Password1"

"computerlist.txt" 파일에 저장된 모든 컴퓨터에 연결합니다. 로컬 계정 "administrator" 및/또는 "CustomLocalAdmin"이 시스템에 있는 경우 해당 암호가
길이 20자(기본값)의 임의로 생성된 암호로 변경됩니다. 사용자 이름/암호/서버 조합이 LocalAdminCredentials.tsv에 저장되고, 계정 암호는 암호 "Password1"을 사용하여 AES 암호화됩니다.

.예

. .\Invoke-PasswordRoll.ps1 #이 스크립트 파일의 함수 로드
Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator") -TsvFileName "LocalAdminCredentials.tsv" -NoEncryption -PasswordLength 40

"computerlist.txt" 파일에 저장된 모든 컴퓨터에 연결합니다. 로컬 계정 "administrator"가 시스템에 있는 경우 암호가
길이 40자의 임의로 생성된 암호로 변경됩니다. 사용자 이름/암호/서버 조합은 암호화되지 않은 LocalAdminCredentials.tsv에 저장됩니다.

.참고
요구 사항:
-PowerShellv2 이상이 설치되어야 합니다.
-스크립트가 실행될 모든 시스템에서 PowerShell 원격이 사용되어야 합니다.

스크립트 동작:
-로컬 계정이 시스템에 있지만 LocalAccounts 매개 변수에서 지정되지 않은 경우 해당 스크립트는 이 로컬 계정의 존재를 알리기 위해 화면에 경고를 작성합니다. 이러한 경우 스크립트가 계속 실행됩니다.
-로컬 계정이 LocalAccounts 매개 변수에서 지정되었지만 해당 계정이 컴퓨터에 존재하지 않는 경우 아무 동작도 수행되지 않습니다(계정이 만들어지지 않음).
-이 파일에 포함된 ConvertTo-CleartextPassword 함수를 사용하여 TSV 파일에 암호화되어 저장된 암호를 해독할 수 있습니다.
-ComputerName에서 지정된 서버에 연결할 수 없는 경우 PowerShell이 오류 메시지를 출력합니다.
-Microsoft는 회사가 정기적으로 모든 로컬 및 도메인 계정 암호를 롤링할 것을 권장합니다.

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


#필요한 모든 .net 클래스 로드
Add-Type -AssemblyName "System.Web" -ErrorAction Stop


#ComputerName에서 지정된 모든 컴퓨터에서 실행되는 scriptblock입니다.
$RemoteRollScript = {
Param(
[Parameter(Mandatory=$true, Position=1)]
[String[]]
$Passwords,

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

#이것이 여기에 있으므로 스크립트가 연결된 서버 이름을 기록할 수 있습니다. 때때로 DNS 레코드가 잘못되므로 이것이 있는 것이 유용할 수 있습니다.
[Parameter(Mandatory=$true, Position=3)]
[String]
$TargettedServerName
)

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

#컴퓨터에 이 스크립트가 롤링하지 않을 암호를 가진 로컬 사용자 계정이 있는지 확인
foreach ($User in $LocalUsers)
{
if ($LocalAccounts -inotcontains $User)
{
Write-Warning "서버: '$($TargettedServerName)'에 로컬 계정 '$($User)'가 있으며 이 계정의 암호는 이 스크립트에 의해 변경되지 않습니다."
}
}

#이 서버에 존재하는 지정된 모든 로컬 계정의 경우 암호 변경
$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 "사용자에 대한 암호를 변경하는 중에 오류 발생:$($LocalAdmin) 서버:$($TargettedServerName)"
}
}

$PasswordIndex++
}
}


#원격 컴퓨터가 아닌, 이 스크립트를 실행하는 클라이언트에서 암호 생성합니다. System.Web.Security는 .NET 클라이언트 프로필에서 사용할 수 없습니다. 이 스크립트가 실행되는 클라이언트에서 이 호출을
# 수행하면 1대의 컴퓨터에서만 설치된 전체 .NET 런타임이 필요하도록 보장됩니다(롤링된 암호가 있는 모든 시스템과 반대로).
function Create-RandomPassword
{
Param(
[Parameter(Mandatory=$true)]
[ValidateRange(20,120)]
[Int]
$PasswordLength
)

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

#이것은 절대로 실패하지 않지만, 어쨌든 여기에 온전성 검사를 지정하겠습니다.
if ($Password.Length -ne $PasswordLength)
{
throw new Exception("필요에 따라, GeneratePassword에 의해 반환된 암호는 길이가 같지 않습니다. 필요한 길이: $($PasswordLength). 생성되는 길이: $($Password.Length)")
}

return $Password
}


#주 기능 - 암호를 생성하고 원격 컴퓨터의 암호를 지정된 로컬 계정의 암호로 변경
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 "TSV 암호화 키를 작성하는 중에 오류 발생" -ErrorAction Stop
}
}

foreach ($Computer in $ComputerName)
{
#변경될 수 있는 각 계정의 암호 1개를 생성해야 함
$Passwords = @()
for ($i = 0; $i -lt $LocalAccounts.Length; $i++)
{
$Passwords += Create-RandomPassword -PasswordLength $PasswordLength
}

Write-Output "지정된 로컬 관리자 암호를 롤링하기 위해 서버 '$($Computer)'에 연결 중"
$Result = Invoke-Command -ScriptBlock $RemoteRollScript -ArgumentList @($Passwords, $LocalAccounts, $Computer) -ComputerName $Computer
#암호화를 사용할 경우 디스크에 쓰기 전에 사용자 공급 키로 암호를 암호화
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
{
<#
.개요
이 함수를 사용하여 Invoke-PasswordRoll 함수에 의해 암호화되어 저장된 암호를 해독할 수 있습니다.

함수: ConvertTo-CleartextPassword
작성자: Microsoft
버전: 1.0

.설명
이 함수를 사용하여 Invoke-PasswordRoll 함수에 의해 암호화되어 저장된 암호를 해독할 수 있습니다.


.매개 변수 EncryptedPassword

TSV 파일에 저장된 암호화된 암호.

.매개 변수 EncryptionKey

암호화를 수행하는 데 사용된 암호.


.예

. .\Invoke-PasswordRoll.ps1 #이 스크립트 파일의 함수 로드
ConvertTo-CleartextPassword -EncryptionKey "Password1" -EncryptedPassword 76492d1116743f0423413b16050a5345MgB8AGcAZgBaAHUAaQBwADAAQgB2AGgAcABNADMASwBaAFoAQQBzADEAeABjAEEAPQA9AHwAZgBiAGYAMAA1ADYANgA2ADEANwBkADQAZgAwADMANABjAGUAZQAxAGIAMABiADkANgBiADkAMAA4ADcANwBhADMAYQA3AGYAOABkADcAMQA5ADQAMwBmAGYANQBhADEAYQBjADcANABkADIANgBhADUANwBlADgAMAAyADQANgA1ADIAOQA0AGMAZQA0ADEAMwAzADcANQAyADUANAAzADYAMAA1AGEANgAzADEAMQA5ADAAYwBmADQAZAA2AGQA"

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)))
}
  관리자는 Active Directory 그룹을 만들고 그룹 정책 기본 설정 -> 로컬 그룹을 통해 로컬 관리자 그룹에 Active Directory 그룹을 추가하여 컴퓨터에 로컬 관리자 계정을 추가할 수 있습니다. 이 작업은 자격 증명을 캐시하지 않습니다. 대화 상자는 다음과 비슷합니다. 이 해결 방법에서는 사용자가 해당 자격 증명을 사용하여 로그온한 경우 Active Directory 도메인 서비스에 대한 연결을 필요로 하지 않습니다.





시나리오 2: 매핑된 드라이브

관리자는 드라이브 맵을 사용하여 사용자에게 네트워크 위치를 할당합니다. 암호 보호 기능은 드라이브에 대한 승인된 액세스를 보장하기 위해 사용됩니다. 영향을 받는 기본 설정은 다음과 같습니다.

  • 사용자 구성 -> Windows 설정 -> 드라이브 맵 -> 새로 만들기 -> 매핑된 드라이브

중요 변경 사항

작업: 만들기, 업데이트 또는 바꾸기

  • 사용자 이름, 암호암호 확인 필드는 사용되지 않게 설정되어 있습니다.




작업: 삭제

  • 동작의 변경 사항 없음

해결 방법


인증을 위해 암호 방법을 사용하는 대신 Windows Explorer를 사용하여 공유 사용 권한을 관리하고 사용자에게 권한을 할당할 수 있습니다. Active Directory 개체를 사용하여 폴더에 대한 사용 권한을 제어할 수 있습니다.


시나리오 3: 서비스

서비스 기본 설정을 사용하여 원래 보안 컨텍스트가 아닌 다른 컨텍스트에서 실행되는 방식으로 서비스 속성을 변경할 수 있습니다. 영향을 받는 기본 설정은 다음과 같습니다.

  • 컴퓨터 구성 -> 제어판 설정 -> 서비스 -> 새로 만들기 -> 서비스

중요 변경 사항

시작: 변경 사항 없음, 자동 또는 수동

  • 암호암호 확인 필드는 사용되지 않게 설정되어 있습니다.

  • 관리자는 기본 제공 계정만을 사용할 수 있습니다.




시작: 사용 안 함

  • 동작의 변경 사항 없음

새 대화 상자

  • 관리자가 이 계정에 대해 기본 제공되지 않은 사용자를 사용하려고 하면 다음 경고가 표시됩니다.





해결 방법




서비스는 로컬 시스템 계정으로 계속 실행될 수 있습니다. Microsoft 기술 자료의 다음 문서에 설명된 대로 서비스 사용 권한을 변경할 수 있습니다.

256345 시스템 서비스에 대한 보안을 설정하기 위해 그룹 정책 설정을 구성하는 방법

참고 구성하려는 서비스가 없는 경우 서비스가 실행되는 컴퓨터에서 설정을 구성해야 합니다. 


시나리오 4: 예약된 작업 및 즉시 실행 작업(상위 수준)

특정 보안 컨텍스트에서 예약된 작업을 실행하는 데 사용됩니다. 해당 사용자가 로그온하지 않은 경우 임의의 사용자로 실행하기 위해 예약된 작업에 대한 자격 증명을 저장하는 기능은 더 이상 사용할 수 없습니다. 영향을 받는 기본 설정은 다음과 같습니다. (일부 플랫폼에서 "Windows 7 이상"이 "Windows Vista 이상"으로 바뀌었습니다.)

  • 컴퓨터 구성 -> 제어판 설정 -> 예약된 작업 -> 새로 만들기 -> 예약된 작업(Windows 7 이상)

  • 컴퓨터 구성 -> 제어판 설정 -> 예약된 작업 -> 새로 만들기 -> 즉시 실행 작업(Windows 7 이상)

  • 사용자 구성 -> 제어판 설정 -> 예약된 작업 -> 새로 만들기 -> 예약된 작업(Windows 7 이상)

  • 사용자 구성 -> 제어판 설정 -> 예약된 작업 -> 새로 만들기 -> 즉시 실행 작업(Windows 7 이상)

중요 변경 사항

작업: 만들기, 업데이트 또는 바꾸기

  • 사용자의 로그온 여부에 관계없이 실행 옵션을 선택하는 경우 대화 상자에서 더 이상 관리자에게 자격 증명을 요구하는 메시지가 표시되지 않습니다.

  • 암호 저장 안 함 확인란이 사용되지 않도록 설정되어 있습니다. 또한 이 상자는 기본적으로 선택됩니다.




작업: 삭제

동작의 변경 사항 없음

해결 방법


"예약된 작업(Windows 7 이상)" 및 "즉시 실행 작업(Windows 7 이상)"의 경우 관리자는 지정된 사용자가 로그온한 경우 특정 사용자 계정을 사용할 수 있습니다. 또는 해당 사용자로 로컬 리소스에만 액세스할 수 있습니다. 로컬 서비스 컨텍스트에서 해당 작업이 계속 실행될 수 있습니다.



시나리오 5: 예약된 작업 및 즉시 실행 작업(하위 수준) 특정 보안 컨텍스트에서 예약된 작업을 실행하는 데 사용되는 하위 수준 버전의 기본 설정입니다. 해당 사용자가 로그온하지 않은 경우 임의의 사용자로 실행하기 위해 예약된 작업에 대한 자격 증명을 저장하는 기능은 더 이상 사용할 수 없습니다. 영향을 받는 기본 설정은 다음과 같습니다.

  • 컴퓨터 구성 -> 제어판 설정 -> 예약된 작업 -> 새로 만들기 -> 예약된 작업

  • 컴퓨터 구성 -> 제어판 설정 -> 예약된 작업 -> 새로 만들기 -> 즉시 실행 작업(Windows XP)

  • 사용자 구성 -> 제어판 설정 -> 예약된 작업 -> 새로 만들기 -> 예약된 작업

  • 사용자 구성 -> 제어판 설정 -> 예약된 작업 -> 새로 만들기 -> 즉시 실행 작업(Windows XP)

중요 변경 사항

작업: 만들기, 업데이트 또는 바꾸기

  • 다음 계정으로 실행 확인란이 사용되지 않도록 설정되어 있습니다. 따라서 사용자 이름, 암호암호 확인 필드는 모두 사용되지 않게 설정되어 있습니다.




작업: 삭제

동작의 변경 사항 없음

해결 방법


"예약된 작업" 및 "즉시 실행 작업(Windows XP)" 항목의 경우 예약된 작업은 로컬 서비스에 현재 사용 가능한 사용 권한을 사용하여 실행됩니다.


시나리오 6: 데이터 원본

데이터 원본 기본 설정을 사용하여 컴퓨터 또는 사용자와 데이터 원본을 연결합니다. 이 기능은 암호로 보호된 데이터 원본에 액세스할 수 있도록 하기 위한 자격 증명을 더 이상 저장하지 않습니다. 영향을 받는 기본 설정은 다음과 같습니다.

  • 컴퓨터 구성 -> 제어판 설정 -> 데이터 원본

  • 사용자 구성 -> 제어판 설정 -> 데이터 원본

중요 변경 사항


작업: 만들기, 업데이트 또는 바꾸기

  • 사용자 이름, 암호암호 확인 필드는 사용되지 않게 설정되어 있습니다.




작업: 삭제

  • 동작의 변경 사항 없음

해결 방법


사용 가능한 해결 방법이 없습니다. 이 기본 설정은 암호로 보호된 데이터 원본에 대한 액세스를 허용하도록 하기 위한 자격 증명을 더 이상 저장하지 않습니다.


CPassword 사용 중단

CPassword 제거

이 Microsoft 기술 자료 문서에 포함된 Windows PowerShell 스크립트는 CPassword를 사용할 수 있는 그룹 정책 기본 설정이 도메인에 포함되어 있는지 여부를 검색합니다. 지정된 기본 설정에서 CPassword XML이 검색되는 경우 이 목록에 표시됩니다. 


CPassword 기본 설정 검색


이 스크립트는 정리할 도메인 컨트롤러의 로컬 디렉터리에서 실행해야 합니다. 새 Windows PowerShell 파일에 콘텐츠를 복사하고 저장한 후 시스템 드라이브를 결정하고 다음 사용법에 나오는 대로 스크립트를 실행하십시오.

<#
.개요
해당 도메인의 그룹 정책 개체에는 다음과 같은 여러 가지 작업에 대한 암호를 저장하는 기본 설정이 있을 수 있습니다.
1. 데이터 원본
2. 드라이브 맵
3. 로컬 사용자
4. 예약된 작업(XP 및 상위 수준 모두)
5. 서비스
이러한 암호는 GP 기본 설정의 일부로 SYSVOL에 저장되며 약한 암호화(32바이트 AES)로 인해 안전하지 않습니다.
따라서 도메인 환경에서 해당 기본 설정을 배포하지 않고 기존의 해당 기본 설정을 모두 제거하는 것이
좋습니다. 이 스크립트는 관리자가 암호가 포함된 해당 도메인의 SYSVOL에서 GP 기본 설정을 찾는 데 도움을 주기 위한 것입니다.

.설명
이 스크립트는 해당 기본 설정이 정의된 항목 아래의
GPEdit 경로, GPO, 기본 설정 이름 등의 정보와 함께 암호를 포함하는 모든 기본 설정을 인쇄하기 위해 RSAT로 설치된 DC 또는 클라이언트 컴퓨터에서 실행해야 합니다.
영향을 받는 기본 설정 목록이 있으면, 그룹 정책 관리 콘솔의 편집기를 사용하여 해당 기본 설정을 제거할 수 있습니다.

.구문
Get-SettingsWithCPassword.ps1 [-Path <String>]
.예
Get-SettingsWithCPassword.ps1 -Path %WinDir%\SYSVOL\domain
Get-SettingsWithCPassword.ps1 -Path <GPO 백업 폴더 경로>

.참고
그룹 정책 PS 모듈을 찾을 수 없는 경우 출력에 GPO 이름 대신 GPO GUID가 포함됩니다. 도메인 컨트롤러에서
이 스크립트를 실행하거나 RSAT를 설치하고 그룹 정책 모듈을 사용하도록 설정한 후 이 스크립트를
다시 실행해야 합니다.
또는 Get-GPO cmdlet을 통해 GPO GUID를 사용하여 GPO 이름을 얻을 수 있습니다.

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

#>
#----------------------------------------------------------------------------------------------------------------
# 입력 매개 변수
#--------------------------------------------------------------------------------------------------------------
param(
[string]$Path = $(throw "-Path is required.") # GPP가 있는 디렉터리 경로.
)
#---------------------------------------------------------------------------------------------------------------
$isGPModuleAvailable = $false
$impactedPrefs = { "Groups.xml", "ScheduledTasks.xml","Services.xml", "DataSources.xml", "Drives.xml" }
#----------------------------------------------------------------------------------------------------------------
# 사용 가능한 경우 그룹 정책 모듈 가져오기
#----------------------------------------------------------------------------------------------------------------
if (-not (Get-Module -name "GroupPolicy"))
{
if (Get-Module -ListAvailable |
Where-Object { $_.Name -ieq "GroupPolicy" })
{
$isGPModuleAvailable = $true
Import-Module "GroupPolicy"
}
else
{
Write-Warning "PowerShell에 대한 그룹 정책 모듈을 가져올 수 없습니다. 따라서 GPO GUID가 보고됩니다.
DC에서 이 스크립트를 실행하여 GPO 이름을 얻거나, Get-GPO cmdlet(DC에서)을 사용하여 GPO GUID에서 GPO 이름을 얻습니다."
}
}
else
{
$isGPModuleAvailable = $true
}
Function Enum-SettingsWithCpassword ( [string]$sysvolLocation )
{
# GPMC tree paths
$commonPath = " -> Preferences -> Control Panel Settings -> "
$driveMapPath = " -> Preferences -> Windows Settings -> "

# SYVOL 위치 내에서 모든 xml 파일을 재귀적으로 가져오기
$impactedXmls = Get-ChildItem $sysvolLocation -Recurse -Filter "*.xml" | Where-Object { $impactedPrefs -cmatch $_.Name }


# 각 xml 파일에는 여러 기본 설정이 포함되어 있습니다. 각 기본 설정을 반복하여
# cpassword 특성이 포함되어 있는지 여부를 확인하고 이 특성을 표시합니다.
foreach ( $file in $impactedXmls )
{
$fileFullPath = $file.FullName

# GPP 범주를 설정합니다. 파일이 SYSVOL의 Machine 폴더 아래에 있는 경우
# 설정은 컴퓨터 구성 아래에 정의됩니다. 그렇지 않으면
# 설정은 사용자 구성용입니다.
if ( $fileFullPath.Contains("Machine") )
{
$category = "Computer Configuration"
}
elseif ( $fileFullPath.Contains("User") )
{
$category = "User Configuration"
}
else
{
$category = "Unknown"
}
# 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 { [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 및 preferenceType을 지웁니다.
try
{
Clear-Variable -Name gppWithCpassword -ErrorAction SilentlyContinue
Clear-Variable -Name preferenceType -ErrorAction SilentlyContinue
}
catch [Exception]{}
}
}
if ($gppWithCpassword -ne $null)
{
# filePath에서 추출한 GUID의 GPO 이름 작성
$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
}
}
# 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
}
} # end if $gppWithCpassword
} # end foreach $file
} # end functions Enum-PoliciesWithCpassword
#-----------------------------------------------------------------------------------
# 경로가 올바른지 확인합니다. cpassword가 포함된 모든 설정을 열거합니다.
#-----------------------------------------------------------------------------------
if (Test-Path $Path )
{
Enum-SettingsWithCpassword $Path
}
else
{
Write-Warning "해당 디렉터리 없음: $Path"
}


사용 예(시스템 드라이브가 C라고 가정)

.\Get-SettingsWithCPassword.ps1 –path “C:\Windows\SYSVOL\domain” | Format-List
참고 도메인 대신 경로에 대한 모든 백업 GPO를 대상으로 할 수도 있습니다.

해당 검색 스크립트는 다음과 비슷한 목록을 생성합니다.



더 긴 목록의 경우 출력을 파일에 저장하는 것을 고려하십시오.

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

CPassword 기본 설정 제거

CPassword 데이터가 포함된 기본 설정을 제거하려면 도메인 컨트롤러에서 또는 원격 서버 관리 도구가 설치된 클라이언트에서 GPMC(그룹 정책 관리 콘솔)를 사용하는 것이 좋습니다. 해당 콘솔에서 5단계로 모든 기본 설정을 제거할 수 있습니다. 이렇게 하려면 다음 단계를 수행하십시오.

  1. GPMC에서 CPassword 데이터가 포함된 기본 설정을 엽니다.

  2. 기본 설정에 따라 삭제 또는 사용 안 함으로 작업을 변경합니다.

  3. 확인을 눌러 변경 내용을 저장합니다.

  4. 변경 사항이 클라이언트에 전파되도록 한두 번의 그룹 정책 새로 고침 주기를 기다립니다.

  5. 변경 사항이 모든 클라이언트에 적용된 후 기본 설정을 삭제합니다.

  6. 필요에 따라 1 ~ 5단계를 반복하여 전체 환경을 정리합니다. 검색 스크립트가 0개의 결과를 반환하면 완료된 것입니다.

파일 이름

SHA1 해시

SHA256 해시

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


도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.

커뮤니티를 통해 질문하고 답변하고, 피드백을 제공하고, 풍부한 지식을 갖춘 전문가의 의견을 들을 수 있습니다.

이 정보가 유용한가요?

언어 품질에 얼마나 만족하시나요?
사용 경험에 어떠한 영향을 주었나요?
제출을 누르면 피드백이 Microsoft 제품과 서비스를 개선하는 데 사용됩니다. IT 관리자는 이 데이터를 수집할 수 있습니다. 개인정보처리방침

의견 주셔서 감사합니다!

×