Misc.

2018/02/16

WSUS と WUfB の関係とデュアルスキャン問題がわかった(気がする)+ KB4023057 の謎


Windows 10 を Windows Server Update Services (WSUS) でパッチ管理しようという場合、いろいろトラブルがあるようです。そんなトラブルに対する修正を含め、WSUS は後追いで Windows 10 に対応してきた感じです。

中でも、Windows 10 バージョン 1607 からは WSUS と Windows Update for Business (WUfB) の組み合わせがサポートされたんですが(WUfB の実装はバージョン 1511 から)、デュアルスキャン問題というのがあります。これが非常に分かり難い。以下のドキュメントやブログで理解しようとしてもかなり複雑。バージョン間でポリシーの名称とか変わっているのが、さらに分かり難くしている。

Windows Server Update Services (WSUS) を使った Windows 10 更新プログラムの展開
[URL] https://docs.microsoft.com/ja-jp/windows/deployment/update/waas-manage-updates-wsus
Windows Update for Business の管理ソリューションとの統合
[URL] https://docs.microsoft.com/ja-jp/windows/deployment/update/waas-integrate-wufb

WSUS での Windows 10 管理まとめ (Japan WSUS Support Team Blog)
[URL] https://blogs.technet.microsoft.com/jpwsus/2018/01/26/win10-matome/
(↑2019/3 にサイトが消えました。移転先不明)

まずは、基本から。WSUS クライアントは WSUS サーバーから、WUfB クライアントは Microsoft Update サービスから直接に更新を受け取ります。これは、WSUS と WUfB を組み合わせた場合でも変わらない。ここが重要...


WSUS クライアント ←(WSUS で承認されたQU/FU) ← WSUSサーバー ←(同期)← Microsoft Update 
WUfB クライアント ←(WUfBの遅延ポリシーに基づいた QU/FU)← Microsoft Update

WSUS クライアントとは WSUS サーバーを設置し、「Windows Update\イントラネットの Microsoft 更新サービスの場所を指定する」ポリシーを構成したクライアント。WUfB クライアントとは「Windows Update\Windows Update for Business」(バージョン1703 以前は「Windows Update\Windows Update の延期」)ポリシーを構成したクライアント。トラブルを避けたい人はいずれか一方で管理するのがベスト。


WSUS クライアントには、WSUS で管理者が承認(自動承認含む)した品質更新プログラム(QU)、機能更新プログラム(FU、Windows 10 の新バージョンへのアップグレード)、その他の更新プログラム(Microsoft 製品、ドライバー、WSUS にインポートしたサードベンダーの更新やドライバー)がすべて問答無用で(ただしその更新を必要とする場合に)適用されます。

WUfB は更新チャネルの宣言とその更新チャネルでの延期日数、および一時停止を管理するポリシー設定。 WUfB ポリシーに従って WSUS サーバーから更新を受け取ることはありません。ここが重要。

デュアルスキャン問題への対策が良く理解できない人は、おそらく、WSUS からすべて更新をダウンロードさせたい、インストールする更新は WUfB ポリシーで制御したいと思っているんだと思います。つまり、WUfB クライアントの接続先を Microsoft Update サービスではなく、社内の WSUS サーバーに中継(一本化)させるという使い方。そもそもそれは不可能なこと。

想定された WUfB & WSUS クライアントのシナリオとは、次のようなもの。


       ←(WUfBの遅延ポリシーに基づいた QU/FU)← Microsoft Update 
クライアント
       ←(その他の更新) ← WSUSサーバー

Microsoft 製品(MSI 版 Office など)の更新や Microsoft Update 提供ドライバーがどちらのルートで配布されるは、「Windows Update\自動更新を構成する」ポリシーの「他の Microsoft 製品の更新プログラムのインストール」のオン/オフと「Windows Update\Windows Update からドライバーを除外する」ポリシーの有効/無効で決まる。

問題は、QU/FU を WSUS サーバーから配布したいけど、意図せず Microsoft Update から取得してしまうというトラブル。すべて試してみたわけではないけど、理論上の動きを 6 つのケースで考えてみました(ただし、私の理解が正しければですが)。

ケース 1:WSUS クライアント
●自動更新または「更新プログラムのチェック」のクリック
       ←(WSUS で承認されたQU/FU) ← WSUSサーバー
クライアント 
       ×(最新の QU/FU)← Microsoft Update
●「オンラインでMicrosoft Updateから更新プログラムを確認します」のクリック
クライアント  ←(最新の QU/FU)← Microsoft Update

※ユーザーによる操作で、意図せず WSUS で承認していない QU/FU が適用される(→解決策はケース 2)
※バージョン 1607 の場合、ユーザーが「詳細オプション」で「更新を延期する」をオンにしちゃうと、WUfB クライアントとみなされる(ケース 3 と同じ状況、→解決策はケース 5)。 バージョン 1703 からは WSUS クライアントになると、クライアント側の「詳細オプション」の更新チャネル選択オプションは非表示になるので、この問題はなし。

ケース 2:WSUS クライアント+「Windows Update\インターネット上のWindows Updateに接続しない:有効」または「インターネット通信の設定\Windows Update のすべての機能へのアクセスをオフにする:有効」
●自動更新または「更新プログラムのチェック」のクリック
       ←(WSUS で承認されたQU/FU) ← WSUSサーバー
クライアント
       ×(最新の QU/FU)← Microsoft Update
●「オンラインでMicrosoft Updateから更新プログラムを確認します」は非表示
クライアント ×(最新の QU/FU)← Microsoft Update

※「Windows Update\インターネット上のWindows Updateに接続しない:有効」は、ストアアプリのインストールと更新をできなくしちゃうらしいので要注意。「インターネット通信の設定」の方のポリシーなら大丈夫らしい。

ケース 3:WSUS&WUfB クライアント
●自動更新または「更新プログラムのチェック」のクリック
       ←(WSUS で承認されたQU/FU) ← WSUSサーバークライアント
       ←(WUfBの遅延ポリシーに基づいた QU/FU)← Microsoft Update
●「オンラインでMicrosoft Updateから更新プログラムを確認します」のクリック
クライアント ←(WUfBの遅延ポリシーに基づいた QU/FU)← Microsoft Update

※自動更新または手動更新時にデュアルスキャン問題発生(→解決策はケース 5)

ケース 4:WSUS&WUfB クライアント+「Windows Update\インターネット上のWindows Updateに接続しない:有効」または「インターネット通信の設定\Windows Update のすべての機能へのアクセスをオフにする:有効」
●自動更新または「更新プログラムのチェック」のクリック
       ←(WSUS で承認されたQU/FU) ← WSUSサーバー
クライアント
       ←(WUfBの遅延ポリシーに基づいた QU/FU)← Microsoft Update
●「オンラインでMicrosoft Updateから更新プログラムを確認します」は非表示
クライアント ×(WUfBの遅延ポリシーに基づいた QU/FU)← Microsoft Update
※自動更新または手動更新時にデュアルスキャン問題発生。Windows Update に接続させない設定は WUfB の検索をブロックしない(→解決策はケース 5)

ケース 5:WSUS&WUfB クライアント+「Windows Update\インターネット上のWindows Updateに接続しない:有効」または「インターネット通信の設定\Windows Update のすべての機能へのアクセスをオフにする:有効」+「Windows Updateに対するスキャンを発生させる更新遅延ポリシーを許可しない:有効」
●自動更新または「更新プログラムのチェック」のクリック
       ←(WSUS で承認されたQU/FU) ← WSUSサーバー
クライアント
       ×(WUfBの遅延ポリシーに基づいた QU/FU)← Microsoft Update
●「オンラインでMicrosoft Updateから更新プログラムを確認します」は非表示
クライアント ×(WUfBの遅延ポリシーに基づいた QU/FU)← Microsoft Update 

「Windows Updateに対するスキャンを発生させる更新遅延ポリシーを許可しない(Do not allow update deferral policies to cause scans against Windows Update)」の更新遅延ポリシーとは WUfB ポリシーのこと。WSUS クライアントの自動更新、「更新プログラムのチェック」のクリックのときにデュアルスキャンをさせないためのもの。「オンラインでMicrosoft Updateから更新プログラムを確認します」のクリックについては(ケース 5 では非表示)、WUfB ポリシーに基づいて更新を取得。
※ ユーザー操作により意図せず WUfB クライアントになってしまうことがあるバージョン 1607 の場合、「詳細オプション」の「機能の更新を延期する」をユーザーがチェックできないように、WUfB ポリシーを適当に構成する(これで選択オプションがグレーアウト)

ケース 6:WSUS&WUfB クライアント+「Windows Updateに対するスキャンを発生させる更新遅延ポリシーを許可しない:有効」
●自動更新または「更新プログラムのチェック」のクリック
       ←(WSUS で承認されたQU/FU) ← WSUSサーバー
クライアント
       ×(WUfBの遅延ポリシーに基づいた QU/FU)← Microsoft Update
●「オンラインでMicrosoft Updateから更新プログラムを確認します」のクリック
クライアント ←(WUfBの遅延ポリシーに基づいた QU/FU)← Microsoft Update

「Windows Updateに対するスキャンを発生させる更新遅延ポリシーを許可しない」ポリシーは、WSUS クライアントの自動更新、「更新プログラムのチェック」のクリックのときにデュアルスキャンをさせないためのもの。「オンラインでMicrosoft Updateから更新プログラムを確認します」のクリックについては、WUfB ポリシーに基づいて更新を取得。
※ 社内は WSUS サーバーから、外出時に Microsoft Update から更新を取得できるようにするシナリオ。WUfB ポリシーで最大限延期することで、WSUS で承認していない FU でアップグレードされないようにする。QU (定義の更新は除く)は WSUS ポリシーの承認/拒否に関係なく適用されちゃうけど、WUfB ポリシーで最大 30 日延期することは可能。

書いてる途中で混乱してきた。間違っていたらごめんなさい。WUfB で WSUS から QU/FU を取得することはできない(管理者が承認した QU/FU が来る)ということが分かれば、なんとなくわかった気がすると思います。

おまけ

WSUS と WUfB の併用時の動作を確認していたら、これまでがんばって維持してきたバージョン 1607(CBB の延期設定は当の昔に過ぎ去り、Show or Hide ツールで 1703 と 1709 の FU を非表示にしてきたもの)で、2 月の Windows Update を実行したら、突然、アップグレードのダウンロードが始まっちゃいました。これって、英語が苦手な人にとっては、マルウェアにしか見えないんでは。


とりあえず、「Hide」ボタンをクリックして閉じ(それで中止になるのではないと思う、バックグラウンドで継続だと思う)、インストールされた更新をを探してみると、「プログラムと機能」のほうに怪しげな 「Update for Windows 10 ... (KB4023057)」と「Windows 10 Update Assistant」が。これらをアンインストールして再起動したら、アップグレードは収まった模様。その後、Show or Hide ツールを実行しても KB4023057 は現れず。

KB4023057 のサポート情報(https://support.microsoft.com/ja-jp/help/4023057/)には、アップグレード云々の話は出てこない。更新プログラムの信頼性のための更新プログラムで、バージョン 1507、1511 にも来るらしい。これが犯人なら、誠実さのかけらもない。

仮想マシンだったのでロールバックして、Windows Update 前に「プログラムと機能」を除いてみたら、既に 1 月下旬(前回更新時)に KB4023057 が入り込んでいて、未発動で待機していた模様。KB4023057 を削除後に、Show or Hide ツールを実行して、検出された KB4023057 を非表示にしたら... それでも次に Windows Update を実行したときに 強引?に KB4023057 がインストールされ、発動しました。また、KB4023057 と Update Assistant を削除して、もう一度、Show or Hide ツールを実行すると、今度も KB4023057 は現れず。なんだかとても怪しい。テスト環境のために残しているものなので、アップグレードは困るんですけど。永久に「機能更新しない(最後のその日まで QU だけ頂戴)」という塩漬けオプションが欲しい。

WSUS 環境では、Microsoft Update 接続時にこんなこともあるので注意しないといけませんね。「オンラインでMicrosoft Updateから更新プログラムを確認します」のクリックで取り込まれちゃいました。なお、KB4023057 は Microsoft Update Catalog では提供されず、Windows Update のみの提供のため、WSUS には同期されないと思います。

追記)
KB4023057 をいったん取り込んでしまうと、KB4023057 や Windows 10 Update Assistant をアンインストールしたあとも、Microsoft Update に接続していないのに Windows 10 Update Assistant (C:\Windows10Upgrade\Windows10Upgrade.exe とそのショートカットがデスクトップに作成され動き出す)がゾンビのように復活することがありました。タスク スケジューラーを探していったら、Microsoft\Windows\UpdateOrchestrator の中に UpdateAssistant、UpdateAssistantCalendarRun、UpdateAssistantWakeupRun が登録されていて、それらが %Windir%\UpdateAssistant\UpdateAssistant.exe を開始し、ゾンビを復活させている模様。3 つのタスクの無効化と %Windir%\UpdateAssistant の削除でやっつけられるかも?

最初の Windows 10 Update Assistant には、Microsoft\Windows\rempl\shell (%ProgramFiles%\rempl\remsh.exe) が関係しているような、いないような。KB4023057 をアンインストールすると、%ProgramFiles%\Rempl\Logs とタスクを残してバイナリ(remsh.exe)は消えます。KB4023057 をアンインストールしてShow or Hide ツールで非表示にするか、KB4023057 をあえて残して rempl\shell と shell-* タスクを無効にすると、当面は大丈夫そうです。

しかし、ほんとにいろいろとマルウェア的です(だます、隠れる、よみがえる)。

2/23 さらに追記)ついさっき(たぶん)更新された。1703 も対象?
Update to Windows 10 Versions 1507, 1511, 1607, and 1703 for update reliability: February 22 March 8, 2018
[URL] https://support.microsoft.com/en-us/help/4023057/
3/10 さらにさらに追記) 3 月に入って、Windows 10 Update Assistant が「Windows 10更新アシスタント」にめでたく日本語化されたみたいです。1703 でも発動する場合があります。ブロックやタスクの無効化していても、別バージョンなのでまたやってきます。
 

3 件のコメント:

  1. 助かりました!
    本当に起動するたびにゾンビだったのでタスクスケジューラの無効化と
    UpdateAssistantフォルダの消去でスッキリしました…(今実行したばかりなので
    まだなんとも言えませんが)
    とにかく諸悪の根源をゴミ箱にぶちこめたのでスッキリしました。
    でもタスクスケジューラのトリガー設定をみて恐ろしくなりました…私は英語が
    できないので出てくるたびに怖くてしょうがなかったのでこのブログを見つけられてよかったです。

    返信削除
  2. どうもです。
    気になった事が有るので出来れば追記願えればお願いします。
    当方では Ver.1607 を維持して使用中でサポート期限が切れた後に Ver.1703 へ移行する予定にしています、(@ITの記事では)「しかし、wushowhide.diagcabで機能更新プログラムをブロックしていたとしても、機能更新プログラムではないWindows 10 Update Assistantがやってきて、ダウンロードとアップグレードが始まるのです。」と成っていますが現状その様な事は無く平穏無事。
    先日 Ver.1703 が UPDATE に来ていましたが wushowhide.diagcab でブロックして使用中で Windows 10 Update Assistant は来ていません(Ver.1703 は猶予期間に入ったタイミングで来たようです)。
    何か特別な AP を使用して細工はしておらず ポリシー 設定で CBB と 機能更新プログラムの遅延設定 を MAX 、適用時期を 7日 遅延 させています、本文中に 機能更新プログラム の遅延設定は「延期可能な最大日数を既に過ぎているので有効で無い」とだけ書かれていてこの設定をどの様にしている環境なのか不明です。
    もし「遅延設定」をぜずに wushowhide.diagcab でブロックを行っているなら「遅延設定」を行った場合はどの様な結果に成るのか確認願えればと思います。

    Windows 10 PRO エディション
    Ver.1607
    WSUS 等は有りません

    返信削除
  3. 機能更新プログラムの遅延設定は、CBとCBBのそれぞれの公開日が基準日であり、設定した延期間が過ぎれば機能更新がやってくる(設定に従って遅延設定が過ぎたと判断した上で検出している)というだけだと思います。それ以上でもそれ以下でもないと思いますし、wushowwide.diagcabは来てしまうものを一時的にブロックするためのものだと思います。遅延設定していない=遅延設定0(CBなら公開日+0日、CBBならCBBへの公開日+0日)。

    あくまでもすべて私の想像ですのでご了承ください(何も確認はできません)。

    返信削除

注: コメントを投稿できるのは、このブログのメンバーだけです。