2021年4月22日木曜日

WSUS でカタログからインポートできない場合の対処策

WSUS サーバーに着信しない更新プログラムというのが存在するのですが、これをWSUS サーバー経由でクライアントに配信、展開したい場合は、カタログサイトからインポートをする必要があります。



上記の「更新のインポート」からインポートしたいKB 番号の更新プログラムを選択して、下記のインポートのボタンを押します。

しかし、構築したての何も設定を変更していないWSUS サーバーだと、下記のように失敗してしまいます。

よくある回避策として、w3wp.exe.config を利用したやり方がありますが、こちらは.NET Framework に、OS 側で設定されている暗号化方式を参照してね、という設定をすることになるのですが、SchUseStrongCrypto のレジストリを追加したやり方の場合、.NET Framework に、強力な暗号化を構成してね、という設定となり、現時点ではTLS1.2 を利用するように構成されることになります。

ただ、.NET Framework に強力な暗号化を構成するように指定したとしても、OS 側の設定も結局のところ参照することにはなるので、OS側でTLS1.2 が無効になっていたら通信できないはずです。(現時点でTLS1.2 を無効にする人はいないと思いますが。。。)

また、TLS1.2 が使えない場合は、TLS1.1, 1.0 というようにバージョンを下げてリトライしますが、これを無効化する場合は、下記の過去記事を参照ください。

Nautilus: Windows Server 2016 でのTLS の設定について (dah8ra.blogspot.com)

ということで、SchUseStrongCrypto を追加するやり方ですが、下記の過去記事にまとめてありますので、ご参照ください。


また、公開情報としても下記に情報がありますので、こちらもご参照いただくとよいかと思います。

Windows Server 2016 でRC4 を無効化

Windows Server 2016 でRC4 を無効化する場合、以下の2つの方法があります。

レジストリ キー:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319

値:SchUseStrongCrypto
値の種類:REG_DWORD
設定値:0x1

SchUseStrongCrypto については、下記の公開情報を参照するとよいでしょう。


================================
強力な暗号化の構成
強力な暗号化をサポートするように .NET Framework を構成します。 SchUseStrongCrypto レジストリ設定を DWORD:00000001 に設定します。 この値により、RC4 ストリーム暗号が無効になります。また、再起動が必要です。================================


もしくは、下記の レジストリを作成して設定することで、RC4 を無効化することができます。
既定では存在しないキー、値となりますので、存在しない場合は手動で作成してください。

レジストリ キー:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 40/128

値の名前: Enabled
値の種類: REG_DWORD
設定値: 0x0

レジストリ キー:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 56/128

値の名前: Enabled
値の種類: REG_DWORD
設定値: 0x0

レジストリ キー:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 128/128

値の名前: Enabled
値の種類: REG_DWORD
設定値: 0x0

こちらはOS 再起動は不要です。

Windows Server 2016 でのTLS の設定について

Windows Server 2016 では、既定でTLS1.2 が有効となっております。
しかし、TLS1.1 や1.0 、そしてSSL3.0 まで利用できてしまいます。
そのため、下記のレジストリを設定することで、TLS1.2 以外の通信ができないように制御することが可能です。

TLS 1.0 の無効化
====================================================
以下のレジストリを作成して設定することで、TLS 1.0 を無効化することができます。
既定では存在しないキー、値となりますので、存在しない場合は手動で作成してください。

レジストリ キー:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client

レジストリ キー:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server

値: Enabled
値の種類: REG_DWORD
設定値: 0x0

値: DisabledByDefault
値の種類: REG_DWORD
設定値: 0x1

TLS 1.1 の無効化
====================================================
以下のレジストリを作成して設定することで、TLS 1.1 を無効化することができます。
既定では存在しないキー、値となりますので、存在しない場合は手動で作成してください。

レジストリ キー:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client

レジストリ キー:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server

値: Enabled
値の種類: REG_DWORD
設定値:       0x0

値: DisabledByDefault
値の種類: REG_DWORD
設定値:       0x1

SSL 3.0 の無効化
====================================================
以下のレジストリを作成して設定することで、SSL 3.0 を無効化することができます。
既定では存在しないキー、値となりますので、存在しない場合は手動で作成してください。

レジストリ キー:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client

レジストリ キー:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server

値: Enabled
値の種類: REG_DWORD
設定値:       0x0

値: DisabledByDefault
値の種類: REG_DWORD
設定値:       0x1


Enabled は OS で TLS 1.0、1.1 及びSSL 3.0 を有効/無効にするかを決めるレジストリです。
一方、DisabledByDefault はアプリケーションが明示的に TLS/SSL のバージョンを指定しない場合に、OS が自動的にそのバージョンの TLS/SSL 通信を行うかどうかを決定します。
"DisabledByDefault" を 0 に設定しますと、該当の TLS/SSL のバージョンが "既定で有効" になり、1 に設定しますと "既定で無効" になります。
しかしながら、"DisabledByDefault" がいずれの設定の場合でもアプリケーションが明示的に指定した場合には、指定されたバージョンの TLS/SSL 通信が行われます。
また、レジストリ キーとして上記の通り Client と Server の 2 つありますが、"Client" はクライアント側として動作するときの設定、"Server" はサーバー側として動作するときの設定となります。

より詳細な公開情報は下記にありますので、参照してみてください。



2021年4月17日土曜日

カタログ情報をDB から削除するコマンド

 WSUS に着信しない更新プログラムは、手動でインポートする必要があります。

インポートのやり方は管理コンソールの右側に[更新のインポート] という項目があるので、こちらをクリックしてカタログサイトからインポートを実施します。



初めてインポートする場合は、エラーがでてインポートできないかもしれませんので、その場合は、%SystemRoot%\system32\inetsrv にw3wp.exe.config ファイルを生成して、ファイルの内容に下記を追加して保存すれば、大体うまくインポートできるようになります。
---------------------------------
$wsus = Get-WSUSServer
$wsus.DeleteUpdate("XXXXXXXXXXXXX")
---------------------------------
※ "XXXXXXXXXXXXX" の部分につきましては UpdateID を入力します。

上記コマンドを実施して以下のエラーが発生する場合は、対象の更新プログラムが承認済みの状態だったりしますので、元の未承認の状態に戻すことで、事象が解消しますのでご確認ください。

===================================
PS C:\Users\administrator> $wsus.DeleteUpdate("628f5572-7e1a-4934-b864-3e6e24d3c758")
"1" 個の引数を指定して "DeleteUpdate" を呼び出し中に例外が発生しました: "spDeleteRevision: cannot delete revisionid: 11
3652 because it is still deployed to a Non DSS Target Group
spDeleteUpdate got error from spDeleteRevision
spDeleteUpdateByUpdateID got error from spDeleteUpdate"
発生場所 行:1 文字:1
+ $wsus.DeleteUpdate("628f5572-7e1a-4934-b864-3e6e24d3c758")
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : SqlException
===================================

Japan Microsoft Endpoint Manager Support Team のブログ公開

下記のリンクから、Japan Microsoft Endpoint Manager Support Team のブログにいけます。

日本マイクロソフト サポート情報 (cssjpn.github.io)



今までのフォーラムの情報もアーカイブとして残っていますが、いつ削除されるかわからないので、保存しておきたい情報はスクショしておきましょう。


ちなみにブログのリンクは以下。

Japan Microsoft Endpoint Manager Support Blog (jpmem.github.io)





2021年4月10日土曜日

MECM/SCCM でのBranchCache とPeerCache を併用した場合の動作について

MECM/SCCM では、BranchCache とPeerCache の設定を両方有効にすることが可能です。

その場合、どちらの機能を利用してコンテンツをダウンロードするの?という疑問が湧いてきます。

これは結論から言うと、通常の環境であれば、PeerCache が有効になるケースがほとんどとなります。

理由としては、BranchCache は配布ポイントからダウンロードされる場合に有効となりますが、コンテンツのダウンロードソースの優先順位はPeerCache ソースの方が優先順位が高いため、PeerCache が有効になります。

ただ、PeerCache ソースがダウンしているような状況であれば、配布ポイントからのコンテンツダウンロードが動作するため、その場合はBranchCache が利用される動作となります。

コンテンツのダウンロードソースの優先順位は下記の公開情報に情報がありますので、確認してみてください。

 コンテンツ管理の基礎 - Configuration Manager | Microsoft Docs

MECM/SCCM のピアキャッシュの一部ダウンロードの動作検証

MECM では、ピアキャッシュという機能があります。

簡単にいうと、ピアキャッシュソースというコンテンツを持つクライアント端末に対して、他のコンテンツを持たないクライアントが、ピアキャッシュソースからコンテンツをダウンロードする、というもので、配布ポイントからのダウンロードをしない動作となります。 


クライアントのピア キャッシュ - Configuration Manager | Microsoft Docs


この中で、MECM の管理コンソールの下記のチェックを有効にした場合に、上記の公開情報にある一部ダウンロードという機能が有効になります。



このチェックを入れてピアキャッシュの機能を検証してみたところ、下記のようなログが出力されました。
黄色の部分と白色の部分で、別端末のログを示しています。


まず緑の部分を上から見ていくと、最初に白のクライアントがブロック2をダウンロードしています。このダウンロード上に黄色のクライアントがブロック3をダウンロードしています。
その後、白のクライアントがブロック2をダウンロード完了し、次にブロック4をダウンロードしようとしています。
その後、黄色のクライアントがブロック3をダウンロード完了し、白のクライアントがすでにダウンロード完了した、ブロック2をダウンロードし始めます。

つまり、この機能は同時に同じブロックのコンテンツを複数端末にダウンロードさせないように制御されています。
そのため、最大でもファイルのコンテンツサイズのダウンロード分の帯域しか利用されないため、設定のところにも記載があるように、「WAN の使用率を下げる」ことができる、ということになるようです。

WSUS にインポートしたカタログ情報を削除

 WSUS から配信できない更新プログラムを手動でインポートしたが、これを消したいということがあるかと思います。

その場合、下記のコマンドをPowerShell から実行すればカタログ情報から削除できます。

- サンプル コマンド
--------------------------------
$wsus = Get-WSUSServer
$wsus.DeleteUpdate("13b5a526-7f85-4546-adde-95ced26276e5")
--------------------------------
※ "13b5a526-7f85-4546-adde-95ced26276e5" の部分は UpdateID を入力します。

UpdateID を確認する場合、カタログサイトの対象の更新プログラムを選択した時に表示されるURL 情報を確認するとよいでしょう。

Microsoft Update カタログ













Windows10 2004 にKB5001567 をWSUS 経由で配布すると適用できない

KB5001567 ですが、こちらの更新プログラムは既定でWSUS からの配信ができない更新プログラムとなります。
そのため、WSUS を利用して配信したい場合、WSUS へのインポート作業が必要となります。


WSUS へKB5001567 を無事インポートできたところで、こちらの更新プログラムをWindows10 2004 のクライアントへ配信すると、クライアント側には何故か適用できていないが、WSUS レポート上はKB5001567 がインストール済みと表示されます。
※Windows10 20H2 は問題なく適用できます。



原因は不明ですが、私の検証だと、KB5000802 をインストールすると、KB5001567 がインストール済みと判定されてしまうようです。
また、KB5000802 をインストールすると、同梱されているサービススタックの更新プログラム、KB5000858 がインストールされますので、KB5000802 かKB5000858 がインストールされると、KB5001567 がインストール済み、という判定がされてしまうようです。

現状こちらの更新プログラムを適用したい場合は、Windows Update カタログサイトからスタンドアロンの更新プログラムをダウンロードして適用するか、Windows Update から適用するしか方法がないようです。

しかしながら、すでにKB5001649 がリリースされているので、こちらを適用するのが正解でしょう。