はじめに
Microsoft は、セキュリティ情報 MS14-025 をリリースしました。 このセキュリティ情報の詳細については、以下を参照してください。
ホーム ユーザー向け:
https://www.microsoft.com/security/pc-security/updates.aspx 詳細をスキップする: ホーム コンピューターまたはノート PC の更新プログラムを Microsoft Update Web サイトから今すぐダウンロードします。
IT プロフェッショナル向け:
このセキュリティ更新プログラムに関するヘルプとサポートを受ける方法
更新プログラムのインストールに関するヘルプ:
Windows Update サポート ページ
IT 専門家のためのセキュリティ ソリューション:
TechNet セキュリティに関するトラブルシューティングとサポート
Windows ベースのコンピューター Windows をウイルスやマルウェアから保護するのに役立ちます。
ウイルスとセキュリティ サポート ページ
国ごとのローカル サポート:
国際サポート
追加情報
このセキュリティ更新プログラムに関する既知の問題と詳細情報
次の記事では、個々の製品バージョンに関連するこのセキュリティ更新プログラムの詳細について説明します。 資料には、既知の問題に関する情報が掲載されている場合があります。 この場合、既知の問題が各記事のリンクの下に一覧表示されます。
-
MS14-025: 更新プログラムの2919355がインストールされているシステムの Windows リモート サーバー管理ツールのセキュリティ更新プログラムの説明: 2014 年 5 月 13 日
-
MS14-025: 更新プログラムの2919355がインストールされていないシステム用の Windows リモート サーバー管理ツールのセキュリティ更新プログラムの説明: 2014 年 5 月 13 日
グループ ポリシー設定
概要
一部のグループ ポリシー設定では、パスワードを格納できます。 パスワードが安全に保存されていないため、この機能は削除されています。 この記事では、ユーザー インターフェイスの変更と使用可能な回避策について説明します。
次のグループ ポリシー基本設定では、ユーザー名とパスワードの保存が許可されなくなります。
- ドライブ マップ
- ローカル ユーザーとグループ
- スケジュールされたタスク
- サービス
- データ ソース
これは、環境内の既存のグループ ポリシー オブジェクト (GPO) の動作に影響します。これらの設定に含まれているパスワードに依存します。 また、この機能を使用して新しいグループ ポリシー基本設定を作成することもできなくなります。
ドライブ マップ、ローカル ユーザーとグループ、およびサービスの場合、Windows の他のより安全な機能を使用して、同様の目標を達成できる場合があります。
スケジュールされたタスクとデータ ソースの場合、グループ ポリシー基本設定パスワードの安全でない機能を使用して使用できるのと同じ目標を達成することはできません。
シナリオ
次のグループ ポリシー基本設定は、この変更の影響を受ける可能性があります。 各設定について簡単に説明した後、さらに詳しく説明します。 さらに、同じタスクを実行できる回避策が用意されています。
| 影響を受ける基本設定 | ユーザーに適用されます |
コンピューターに適用されます |
|---|---|---|
| ローカル ユーザー管理 | ○ | はい |
| マッピングされたドライブ | ○ | × |
| サービス | × | ○ |
| スケジュールされたタスク (上位レベル) | ○ | ○ |
| スケジュールされたタスク (ダウンレベル) | ○ | はい |
| イミディエイト タスク (アップレベル) | ○ | ○ |
| イミディエイト タスク (ダウンレベル) | はい | ○ |
| データ ソース | ○ | はい |
変更の概要
- 影響を受けるすべての基本設定のパスワード フィールドは無効になります。 管理者は、これらのパスワード フィールドを使用して新しい基本設定を作成することはできません。
- ユーザー名フィールドは、一部の設定では無効になっています。
- パスワードを含む既存の設定は更新できません。 削除または無効にできるのは、特定の設定に応じてのみです。
- [削除] アクションと [無効化] アクションの動作は、基本設定では変更されていません。
- 管理者が CPassword 属性を含む基本設定を開くと、管理者は次の警告ダイアログ ボックスを受け取り、最近の非推奨について通知します。 CPassword 属性を必要とする新規または既存の基本設定への変更を保存しようとすると、同じダイアログ ボックスがトリガーされます。 [削除] アクションと [無効化] アクションのみが警告ダイアログ ボックスをトリガーしません。
シナリオ 1: ローカル ユーザー管理
[ローカル ユーザー管理] 基本設定は、コンピューターで既知のパスワードを持つローカル管理者を作成するために頻繁に使用されます。 この機能は、グループ ポリシー設定でパスワードを格納する方法のため、セキュリティで保護されていません。 そのため、この機能は使用できなくなります。 次の設定が影響を受ける:
- コンピューターの構成 -> コントロール パネル設定 ->ローカル ユーザーとグループ-> New-> ローカル ユーザー
- ユーザー構成 -> コントロール パネル設定 -> ローカル ユーザーとグループ-> New-> ローカル ユーザー
重要な変更
アクション: 作成または置換
- [ユーザー名]、[パスワード]、[パスワードの確認] の各フィールドは無効になっています。
- 管理者がパスワードを含む既存の基本設定に対する変更を開くか保存しようとすると、警告ダイアログ ボックスが表示されます。
アクション: 更新
- [ パスワード] フィールドと [ パスワードの確認] フィールドは無効になっています。
- 管理者がパスワードを含む既存の基本設定に対する変更を開くか保存しようとすると、警告ダイアログ ボックスが表示されます。
アクション: 削除
- 動作に変更はありません
回避策
以前にローカル管理者パスワードを設定するためのグループ ポリシー設定に依存していたユーザーには、CPassword の安全な代替手段として次のスクリプトが提供されます。 コンテンツをコピーして新しいWindows PowerShell ファイルに保存し、その で示されているようにスクリプトを実行します。[例] セクション。
Microsoft は、明示または黙示の保証なしで、説明のみを目的としてプログラミング例を提供しています。 これには、商品性または特定の目的への適合性に関する暗黙の保証が含まれますが、これらに限定されません。 この記事では、デモンストレーションされているプログラミング言語と、プロシージャの作成とデバッグに使用されるツールについてよく理解していることを前提としています。 Microsoft サポート エンジニアは、特定のプロシージャの機能の説明を支援できます。 ただし、これらの例を変更して、特定の要件を満たすために追加の機能を提供したりプロシージャを構築したりすることはできません。
関数 Invoke-PasswordRoll
{
<#
.概要
このスクリプトを使用して、リモート マシンのローカル アカウント パスワードをランダム パスワードに設定できます。 ユーザー名/パスワード/サーバーの組み合わせは、CSV ファイルに保存されます。
CSV ファイルに格納されているアカウント パスワードは、クリア テキスト アカウント パスワードがディスクに書き込まれないようにするために選択した管理者のパスワードを使用して暗号化できます。
暗号化されたパスワードは、このファイル内の別の関数を使用して復号化できます: ConvertTo-CleartextPassword
関数: Invoke-PasswordRoll
作成者: Microsoft
バージョン: 1.0
.説明
このスクリプトを使用して、リモート マシンのローカル アカウント パスワードをランダム パスワードに設定できます。 ユーザー名/パスワード/サーバーの組み合わせは、CSV ファイルに保存されます。
CSV ファイルに格納されているアカウント パスワードは、クリア テキスト アカウント パスワードがディスクに書き込まれないようにするために選択した管理者のパスワードを使用して暗号化できます。
暗号化されたパスワードは、このファイル内の別の関数を使用して復号化できます: ConvertTo-CleartextPassword
.PARAMETER ComputerName
PowerShell リモート処理を使用してスクリプトを実行するコンピューターの配列。
.PARAMETER LocalAccounts
パスワードを変更する必要があるローカル アカウントの配列。
.PARAMETER TsvFileName
ユーザー名/パスワード/サーバーの組み合わせを出力するファイル。
.PARAMETER EncryptionKey
TSV ファイルを暗号化するためのパスワード。 AES 暗号化を使用します。 TSV ファイルに格納されているパスワードのみが暗号化され、ユーザー名とサーバー名はクリア テキストになります。
.PARAMETER PasswordLength
ローカル アカウント用にランダムに生成されるパスワードの長さ。
.PARAMETER NoEncryption
TSV ファイルに格納されているアカウント パスワードは暗号化しないでください。 これにより、クリア テキスト パスワードがディスクに書き込まれます。
.例
. .\Invoke-PasswordRoll.ps1 #Loads このスクリプト ファイル内の関数
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 #Loads このスクリプト ファイル内の関数
Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator") -TsvFileName "LocalAdminCredentials.tsv" -NoEncryption -PasswordLength 40
ファイル "computerlist.txt" に格納されているすべてのコンピューターに接続します。 ローカル アカウント "管理者" がシステムに存在する場合、そのパスワードはランダムに生成されたに変更されます
長さ 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)]
[スイッチ]
$NoEncryption
)
必要な .net クラスを #Load する
Add-Type -AssemblyName "System.Web" -ErrorAction Stop
#This は、ComputerName で指定されたすべてのコンピューターで実行されるスクリプト ブロックです
$RemoteRollScript = {
Param(
[Parameter(Mandatory=$true, Position=1)]
[String[]]
$Passwords、
[Parameter(Mandatory=$true, Position=2)]
[String[]]
$LocalAccounts、
#This ここにあるので、スクリプトが接続したサーバー名を記録できます。DNSレコードが混乱することがあります。
[Parameter(Mandatory=$true, Position=3)]
[String]
$TargettedServerName
)
$LocalUsers = Get-WmiObject Win32_UserAccount -Filter "LocalAccount=true" |Foreach {$_.Name}
コンピューターに、このスクリプトによってパスワードがロールされないローカル ユーザー アカウントがある場合に #Check します
foreach ($LocalUsers の$User)
{
if ($LocalAccounts -inotcontains $User)
{
Write-Warning "Server: '$($TargettedServerName)' には、このスクリプトによってパスワードが変更されていないローカル アカウント '$($User)' があります"
}
}
このサーバーに存在するすべてのローカル アカウントを指定 #For、パスワードを変更します
$PasswordIndex = 0
foreach ($LocalAccounts の$LocalAdmin)
{
$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++
}
}
リモート コンピューターではなく、このスクリプトを実行しているクライアントでパスワードを #Generate します。 System.Web.Security は、.NET クライアント プロファイルでは使用できません。 この呼び出しを行う
スクリプトを実行しているクライアントの # では、完全な .NET ランタイムがインストールされている必要があるコンピューターは 1 台のみです (パスワードがロールされたすべてのシステムとは異なります)。
関数 Create-RandomPassword
{
Param(
[Parameter(Mandatory=$true)]
[ValidateRange(20,120)]
[Int]
$PasswordLength
)
$Password = [System.Web.Security.Membership]::GeneratePassword($PasswordLength, $PasswordLength / 4)
#This は決して失敗してはならないが、私はとにかくここに正気をチェックしている
if ($Password.Length -ne $PasswordLength)
{
throw new Exception("GeneratePassword によって返されるパスワードは、必要と同じ長さではありません。 必要な長さ: $($PasswordLength)。 生成された長さ: $($Password.Length)")
}
return $Password
}
#Main 機能 - 指定したローカル アカウントのパスワードを変更するパスワードとリモートをマシンに生成する
if ($PsCmdlet.ParameterSetName -ieq "Encryption")
{
try
{
$Sha 256 = new-object System.Security.Encryptiony.SHA256CryptoServiceProvider
$SecureStringKey = $Sha 256.ComputeHash([System.Text.UnicodeEncoding]::Unicode.GetBytes($EncryptionKey))
}
catch
{
Write-Error "TSV 暗号化キーの作成中にエラーが発生しました" -ErrorAction Stop
}
}
foreach ($ComputerName の$Computer)
{
変更可能なアカウントごとに 1 つのパスワードを生成する #Need
$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 は、ディスクに書き込む前に、ユーザーが指定したキーでパスワードを暗号化します
if ($Result -ne $null)
{
if ($PsCmdlet.ParameterSetName -ieq "NoEncryption")
{
$Result |Select-Object ユーザー名、パスワード、TargettedServerName、RealServerName |Export-Csv -Append -Path $TsvFileName -NoTypeInformation
}
else
{
返された$nullエントリを #Filters する
$Result = $Result |Select-Object ユーザー名,パスワード,TargettedServerName,RealServerName
foreach ($Result の$Record)
{
$PasswordSecureString = ConvertTo-SecureString -AsPlainText -Force -String ($Record.Password)
$Record |Add-Member -MemberType NoteProperty -Name EncryptedPassword -Value (ConvertFrom-SecureString -Key $SecureStringKey -SecureString $PasswordSecureString)
$Record.PSObject.Properties.Remove("Password")
$Record |Select-Object Username,EncryptedPassword,TargettedServerName,RealServerName |Export-Csv -Append -Path $TsvFileName -NoTypeInformation
}
}
}
}
}
関数 ConvertTo-CleartextPassword
{
<#
.概要
この関数を使用すると、関数 Invoke-PasswordRoll によって暗号化されて格納されたパスワードの暗号化を解除できます。
関数: ConvertTo-CleartextPassword
作成者: Microsoft
バージョン: 1.0
.説明
この関数を使用すると、関数 Invoke-PasswordRoll によって暗号化されて格納されたパスワードの暗号化を解除できます。
.PARAMETER EncryptedPassword
TSV ファイルに格納された暗号化されたパスワード。
.PARAMETER EncryptionKey
暗号化を行うために使用されるパスワード。
.例
. .\Invoke-PasswordRoll.ps1 #Loads このスクリプト ファイル内の関数
ConvertTo-CleartextPassword -EncryptionKey "Password1" -EncryptedPassword 76492d1116743f0423413b16050a5345MgB8AGcAZgBaAHUAaQBwADAAQgB2AGgAcABNADMASwBaAFoAQQBzADEAeABjAEEAPQA9AHwAZgBiAGYAMAA1ADYANgA2ADEANwBkADQAZgAwADMANABjAGUAJQAxAGIAMABiADkANgBiADkAMAA4ADcANwBhADMAYQA3AGYAOABkADcAMQA5ADQAMwBmAGYANQBhADEAYQBjADcANABkADIANgBhADUANwBlADgAMAAyADQANgA1ADIAOQA0AGMAZQA0ADEAMwAzADcANQAyADUANAAzADYAMAA1AGEANgAzADEAMQA5ADAAYwBmADQAZAA2AGQA"
TSV ファイルに格納された暗号化されたパスワードの暗号化を解除します。
#>
Param(
[Parameter(Mandatory=$true)]
[String]
$EncryptedPassword、
[Parameter(Mandatory=$true)]
[String]
$EncryptionKey
)
$Sha 256 = new-object System.Security.Encryptiony.SHA256CryptoServiceProvider
$SecureStringKey = $Sha 256.ComputeHash([System.Text.UnicodeEncoding]::Unicode.GetBytes($EncryptionKey))
[SecureString]$SecureStringPassword = ConvertTo-SecureString -String $EncryptedPassword -Key $SecureStringKey
Write-Output ([System.Runtime.InteropServices.Marshal]::P trToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($SecureStringPassword)))
}
管理者は、Active Directory グループを作成し、[基本設定] -> [ローカル グループ] を使用 グループ ポリシーしてローカル管理者グループに追加することで、ローカル管理者アカウントをコンピューターに追加できます。 このアクションでは、資格情報はキャッシュされません。 ダイアログ ボックスは次のようになります。 この回避策では、ユーザーがこれらの資格情報を使用してログオンしたときにActive Directory Domain Servicesする接続が必要です。
シナリオ 2: マップされたドライブ
管理者はドライブ マップを使用して、ネットワークの場所をユーザーに割り当てます。 パスワード保護機能は、ドライブへの承認されたアクセスを確認するために使用されます。 次の設定が影響を受ける:
- ユーザー構成 -> Windows 設定 -> ドライブ マップ -> 新しい -> マップされたドライブ
重要な変更
アクション: 作成、更新、または置換
- [ユーザー名]、[パスワード]、[パスワードの確認] の各フィールドは無効になっています。
アクション: 削除
- 動作に変更はありません
回避策
認証にパスワード方式を使用する代わりに、Windows エクスプローラーを使用して共有アクセス許可を管理し、ユーザーに権限を割り当てることができます。 Active Directory オブジェクトを使用して、フォルダーへのアクセス許可を制御できます。
シナリオ 3: サービス
サービスの基本設定を使用して、元のセキュリティ コンテキスト以外のコンテキストで実行されるようにサービス プロパティを変更できます。 次の設定が影響を受ける:
- コンピューターの構成 -> コントロール パネル設定 -> Services -> New -> Service
重要な変更
スタートアップ: 変更なし、自動、または手動
- [ パスワード] フィールドと [ パスワードの確認 ] フィールドは無効になっています。
- 管理者は組み込みのアカウントのみを使用できます。
スタートアップ: 無効にする
- 動作に変更はありません
[新しい] ダイアログ ボックス
- このアカウントに組み込みユーザー以外のユーザーを使用しようとする管理者は、次の警告を受け取ります。
回避策
サービスは引き続きローカル システム アカウントとして実行できます。 サービスのアクセス許可は、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 基本設定を見つけるのに役立ちます。
.説明
このスクリプトは、RSAT と共にインストールされている DC またはクライアント コンピューターで実行して、
GPO、基本設定名、GPEdit パスなどの情報を含むパスワード。この基本設定が定義されています。
影響を受ける基本設定の一覧を取得したら、グループ ポリシー管理コンソールのエディターを使用して、これらの基本設定を削除できます。
.構文
Get-SettingsWithCPassword.ps1 [-Path <String>]
.例
Get-SettingsWithCPassword.ps1 -Path %WinDir%\SYSVOL\domain
Get-SettingsWithCPassword.ps1 -Path <GPO Backup Folder Path>
.ノート
PS モジュールグループ ポリシー見つからない場合、出力には GPO 名ではなく GPO GUID が含まれます。 を実行できます。
このスクリプトをドメイン コントローラーにインストールするか、RSAT をインストールした後にクライアントでスクリプトを再実行します。
グループ ポリシー モジュールを有効にしました。
または、GET-GPO コマンドレットを使用して 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" }
#----------------------------------------------------------------------------------------------------------------
グループ olicy モジュールをインポートする (使用可能な場合)
#----------------------------------------------------------------------------------------------------------------
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 コマンドレット (DC 上) を使用して GPO guid から GPO 名を取得します。
}
}
else
{
$isGPModuleAvailable = $true
}
関数 Enum-SettingsWithCpassword ( [string]$sysvolLocation )
{
# GPMC ツリー パス
$commonPath = " -> 基本設定 -> コントロール パネル 設定 -> "
$driveMapPath = " -> 基本設定 -> Windows 設定 -> "
# SYVOL の場所内のすべての xml ファイルを再帰的に取得する
$impactedXmls = Get-ChildItem $sysvolLocation -Recurse -Filter "*.xml" |Where-Object { $impactedPrefs -cmatch $_.名前 }
# 各 xml ファイルには、複数の基本設定が含まれています。 各基本設定を反復処理して、チェックするかどうか
# には cpassword 属性が含まれており、それを表示します。
foreach ( $impactedXmls の$file )
{
$fileFullPath = $file。Fullname
# GPP カテゴリを設定します。 ファイルが SYSVOL のコンピューター フォルダーの下にある場合
# 設定はコンピューターの構成で定義されます。それ以外の場合は
# の設定は ユーザー構成に対する です
if ( $fileFullPath.Contains("Machine") )
{
$category = "コンピューターの構成"
}
elseif ( $fileFullPath.Contains("User") )
{
$category = "ユーザー構成"
}
else
{
$category = "不明"
}
# ファイルコンテンツを XML として取得する
try
{
[xml]$xmlFile = get-content $fileFullPath -ErrorAction Continue
}
catch [Exception]{
$_を Write-Host します。Exception.Message
}
if ($xmlFile -eq $null)
{
続行する
}
switch ( $file。BaseName )
{
グループ
{
$gppWithCpassword = $xmlFile.SelectNodes("Groups/User") |where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }
$preferenceType = "ローカル ユーザー"
}
ScheduledTasks
{
$gppWithCpassword = $xmlFile.SelectNodes("ScheduledTasks/*") |where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }
$preferenceType = "スケジュールされたタスク"
}
データソース
{
$gppWithCpassword = $xmlFile.SelectNodes("DataSources/DataSource") |where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }
$preferenceType = "データ ソース"
}
ドライブ
{
$gppWithCpassword = $xmlFile.SelectNodes("Drive/Drive") |where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }
$preferenceType = "ドライブ マップ"
}
サービス
{
$gppWithCpassword = $xmlFile.SelectNodes("NTServices/NTService") |where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }
$preferenceType = "Services"
}
既定
{ # clear gppWithCpassword and preferenceType for next item.
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。成功)
{
$gpoGuid = $match.groups[1].value
$gpoName = $gpoGuid
}
else
{
$gpoName = "不明"
}
if($isGPModuleAvailable -eq $true)
{
try
{
$gpoInfo = Get-GPO -Guid $gpoGuid -ErrorAction Continue
$gpoName = $gpoInfo.DisplayName
}
catch [Exception] {
$_を Write-Host します。Exception.Message
}
}
# cpassword を含むプリフェンスを表示する
foreach ( $gppWithCpassword の$gpp )
{
if ( $preferenceType -eq "ドライブ マップ" )
{
$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
#-----------------------------------------------------------------------------------
Path が有効かどうかを確認します。 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 つの手順で任意の基本設定を削除できます。 手順は次のとおりです。
- GPMC で、CPassword データを含む基本設定を開きます。
- 設定に該当する場合は、アクションを [削除] または [無効] に変更します。
- [OK] をクリックして変更を保存します。
- 変更がクライアントに反映されるように、1 つまたは 2 つのグループ ポリシー更新サイクルを待ちます。
- すべてのクライアントに変更が適用されたら、基本設定を削除します。
- 必要に応じて手順 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 | 6641B1A9C95A7E4F0D5A247B9F48887AC94550B7F1D7B1198D5BCBA92F7A753 |
| Windows8.1-KB2928120-x86.msu | DE84667EC79CBA2006892452660EB99580D27306 | 468EE4FA3A22DDE61D85FD3A9D0583F504105DF2F8256539051BC0B1EB713E9C |
| Windows8.1-KB2961899-x64.msu | 10BAE807DB158978BCD5D8A7862BC6B3EF20038B | EC26618E23D9278FC1F02CA1F13BB289E1C6C4E0C8DA5D22E1D9CDA0DA8AFF51 |
| Windows8.1-KB2961899-x86.msu | 230C64447CC6E4AB3AD7B4D4655B8D8CEFBFBE98 | E3FAD567AB6CA616E42873D3623A777185BE061232B952938A8846A974FFA7AF |