AWS Systems Manager Patch Managerで自動的にWindows Updateを実行する方法

記事タイトルとURLをコピーする

こんにちは!技術4課のイーゴリです。

オンプレミス環境を担当した時にWindows UpdateのためにWSUS(Windows Server Update Services)を使いましたが、AWSで自動的にWindows Updateを適用させるとても楽な方法があります!

本件の記事では、AWS Systems Manager Patch Managerで自動的にWindows Updateを実行する方法をご紹介したいと思います。

企業の中でアプリケーションに影響が出る可能性があるため、Windows Updateを無効にしているケースが多いようですが、脆弱性は、一般に知られるようになってから数時間以内に悪用される可能性がありますので、セキュリティアップデートが利用可能になったら、マルウェア攻撃からシステムを保護するための修正プログラムのインストールを計画する必要があります。

「Critical」及び「Security」のWindows Updateを適用しない場合、ソフトウェアの破損、データの損失、または個人情報の盗難の可能性が高まりますので、それも考慮しないといけません。

f:id:swx-korotkov:20220331125332p:plain

記事の環境

本件の記事の対象サーバーが下記となります。

# サーバー名 OS
1 DC1 Windows Server 2016
2 DC2 Windows Server 2016
3 DC3 Windows Server 2022

事前準備

SSM Agentの確認

AWS Systems Managerを使うには、各インスタンスにSSM Agentをインストールする必要がありますが、下記に書いてある通り、本件の記事のOSの場合、すでにSSM Agentがインストール済みですので、このステップをスキップします。

SSM Agent は、 で使用する各インスタンスにインストールする必要があります。AWS Systems Managerデフォルトで、SSM Agent は、以下の Amazon Machine Images (AMIs) で作成されたインスタンスにプレインストールされています。

Amazon Linux

Amazon Linux 2

Amazon Linux 2 ECS に最適化されたベース AMIs

macOS 10.14.x (Mojave)、10.15.x (Catalina)、11.x (Big Sur)

SUSE Linux Enterprise Server(SLES) 12 と 15

Ubuntu Server 16.04、18.04 および 20.04

2016 年 11 月以降に公開された Windows Server 2008-2012 R2 AMIs

Windows Server 2016 および 2019

docs.aws.amazon.com

Powershell確認コマンド:

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, Size, InstallDate | Format-Table -AutoSize

SSM Agentの確認結果

DC1及びDC2

PS C:\Users\Administrator> Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, Size, InstallDate | Format-Table -AutoSize

DisplayName                                                    DisplayVersion Publisher             Size InstallDate
-----------                                                    -------------- ---------             ---- -----------


AWS PV Drivers                                                 8.4.1          Amazon Web Services        20220112
Microsoft Visual C++ 2019 X64 Additional Runtime - 14.29.30135 14.29.30135    Microsoft Corporation      20220209
Microsoft Visual C++ 2019 X64 Minimum Runtime - 14.29.30135    14.29.30135    Microsoft Corporation      20220209
aws-cfn-bootstrap                                              2.0.10         Amazon Web Services        20220209
Amazon SSM Agent                                               3.1.804.0      Amazon Web Services        20220209

f:id:swx-korotkov:20220329170431p:plain

DC3

PS C:\Users\Administrator.TEST> Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, Size, InstallDate | Format-Table -AutoSize

DisplayName                                                    DisplayVersion Publisher             Size InstallDate
-----------                                                    -------------- ---------             ---- -----------


AWS PV Drivers                                                 8.4.1          Amazon Web Services        20220112
Microsoft Visual C++ 2019 X64 Additional Runtime - 14.29.30135 14.29.30135    Microsoft Corporation      20220209
Microsoft Visual C++ 2019 X64 Minimum Runtime - 14.29.30135    14.29.30135    Microsoft Corporation      20220209
aws-cfn-bootstrap                                              2.0.10         Amazon Web Services        20220209
Amazon SSM Agent                                               3.1.804.0      Amazon Web Services        20220209
Amazon EC2Launch                                               2.0.698.0      Amazon Web Services        20220209

f:id:swx-korotkov:20220329170344p:plain

IAMロールの作成

[サービス]>[IAM]>[ロール]>[ロールを作成]をクリックします。

f:id:swx-korotkov:20220329164155p:plain

AWS Systems Managerの「フリートマネージャー」の画面に表示させるために、新規IAMロールの作成時に「AmazonSSMManagedInstanceCore」ポリシーをアタッチします。

EC2用のロールを作成します。

f:id:swx-korotkov:20220329170858p:plain

「AmazonSSMManagedInstanceCore」ポリシーをアタッチします。

f:id:swx-korotkov:20220329171016p:plain

ロール名を指定した上、[ロールを作成]をクリックします。

f:id:swx-korotkov:20220329171112p:plain f:id:swx-korotkov:20220329171122p:plain f:id:swx-korotkov:20220329171132p:plain

上記のロールを対象EC2に付与します。

EC2にIAMロールを付与

[サービス]>[EC2]>対象EC2に上記で作成したIAMロールを付与します。

f:id:swx-korotkov:20220329171442p:plain

[EC2-SSM1]を選択した上、[保存]をクリックします。

f:id:swx-korotkov:20220329171646p:plain

SSMでEC2確認

[サービス]>[Systems Manager]>[フリートマネージャー]をクリックします。

f:id:swx-korotkov:20220329172443p:plain

下記の画面のように対象インスタンスが表示されたら、事前準備が完了です。

f:id:swx-korotkov:20220329172527p:plain

注意点

EC2にIAMロールを設定してもすぐSystems Managerにインスタンスが表示されないので、15分程度待ちましょう!

AWS Systems Manager Patch Managerの設定

パッチグループの設定

各対象EC2のタグとして「キー:Patch Group」、「値:{名前}」を設定します。今回の記事では、下記の通り設定します。

タグ変更

f:id:swx-korotkov:20220329185341p:plain

タグ追加

f:id:swx-korotkov:20220329185159p:plain

タグ確認

f:id:swx-korotkov:20220329185353p:plain

メンテナンスウィンドウの作成

[サービス]>[Systems Manager]>[メンテナンスウィンドウ]>[メンテナンスウィンドウの作成]をクリックします。

  • 初めて設定する場合、下記の画面が表示されます。

f:id:swx-korotkov:20220329173741p:plain

  • 過去に設定を行った場合、下記の画面が表示されます。

f:id:swx-korotkov:20220329173731p:plain

[名前]欄で、「WinUpdMaintenanceWindow」を入力します。

f:id:swx-korotkov:20220329174431p:plain

スケジュールを下記の画像の通り、設定します。

f:id:swx-korotkov:20220329174536p:plain

今回の記事では、検証環境で設定を行っているため、スケジュール設定として「毎日15:35(日本時間)に実行する」という設定にしました。

[タスクの開始を停止する]欄で1時間を指定します。
17時35分以降はメンテナンスウィンドウのタスクを開始できなくなります→15時35分(開始時間)+3時間(メンテナンスウィンドウの期間)ー1時間(タスクの開始を停止する)。

[メンテナンスウィンドウの作成]をクリックします。

f:id:swx-korotkov:20220329174953p:plain

作成が完了しました。下記の画面にUTCが表示されるため、「15:35」の代わりに「6:35:00」と記載されます。

f:id:swx-korotkov:20220329175111p:plain

パッチベースラインの作成

[サービス]>[Systems Manager]>[パッチマネージャー]をクリックします。

Windows Updateのために[事前定義されたパッチベースラインを表示する]にある「AWS-DefaultPatchBaseline」を使っても問題ないですが、今回は記事のためにパッチベースラインの詳細設定をご紹介したいため、パッチベースラインを作成します。ちなみに、AWSにあるパッチベースラインは編集できませんので、例えば、自分で「AWS-DefaultPatchBaseline」を少しだけ変えたい場合、自分のパッチベースラインを作成しないといけませんので、ご注意ください(自分で作成したパッチベースラインは編集できます)。

f:id:swx-korotkov:20220329181421p:plain
AWS-DefaultPatchBaseline

[パッチベースラインの作成]をクリックします。

f:id:swx-korotkov:20220329182115p:plain

  • [名前]欄で「PatchBaseline_WinSrv」を入力します。
  • [オペレーティングシステム]で「Windows」のまま残します。

f:id:swx-korotkov:20220329182419p:plain

[オペレーティングシステムの承認ルール]で下記の通り設定します。 製品:All f:id:swx-korotkov:20220329182852p:plain 重要度:Critical、Important f:id:swx-korotkov:20220329182923p:plain 分類:CriticalUpdates、SecurityUpdates f:id:swx-korotkov:20220329183103p:plain

日数の指定:普通は「7」を設定したほうがいいと思いますが、検証のため、「0」のまま残します。

f:id:swx-korotkov:20220329182818p:plain

今回は不要ですが、アプリケーションの承認ルールも設定できますので、仮にSQLサーバーのパッチなどを適用したい場合、[ルールを追加する]ボタンを押すことで、下記の画面の通り、簡単に実現できます。

f:id:swx-korotkov:20220329183855p:plain

ちなみに、Windows OS及びアプリケーションの更新がしたい場合、既存の「AWS-WindowsPredefinedPatchBaseline-OS-Applications」が使えます。

f:id:swx-korotkov:20220330205919p:plain
AWS-WindowsPredefinedPatchBaseline-OS-Applications

パッチの例外の設定

なお、パッチベースラインを作成する時に(作成後にも)「承認済みパッチ」及び「拒否されたパッチ」を入力できますので、とても便利です。

f:id:swx-korotkov:20220331104242p:plain
「パッチの例外」の画面

パッチベースラインにパッチグループの追加

パッチグループをパッチベースラインに追加します。対象のパッチベースラインを選択し、[アクション]-[パッチグループの変更]をクリックします。

f:id:swx-korotkov:20220330101224p:plain

  • [パッチグループ]:DC

[追加]をクリックします。

f:id:swx-korotkov:20220330101839p:plain

パッチ適用を設定

  • 初めて設定を行う場合、下記の画面が表示されるので、[パッチ適用を設定]をクリックします。

f:id:swx-korotkov:20220330102509p:plain

  • 過去に設定された場合、下記の画面が表示されるので、同じく[パッチ適用を設定]をクリックします。

f:id:swx-korotkov:20220330102824p:plain

[パッチ適用を設定]の画面で、[パッチグループを選択する]を選択した上、前回作成したパッチグループ(DC)を入力します。

ちなみに、パッチグループを作らなくても、パッチの適用ができます(インスタンスを手動で選択するかインスタンスに別のタグを入力するという方法もあります)。

[パッチ適用スケジュール]で、[既存のメンテナンスウィンドウを選択する]を残したまま、以前作成した[WinUpdMaintenanceWindow]を選択します。

f:id:swx-korotkov:20220330104327p:plain

[パッチ適用操作]で、[スキャンとインストール]のまま残し、[パッチ適用を設定]をクリックします。

f:id:swx-korotkov:20220330104505p:plain

ダッシュボードの画面で下記のような画面になります。

f:id:swx-korotkov:20220330104843p:plain

SNS通知やS3の設定など行いたい場合

SNS通知やS3の設定など行いたい場合、[メンテナンスウィンドウ]でウィンドウIDを選択して、[タスク]タブを選択します。

表示された[ウィンドウのタスクID]を選択して、「編集」ボタンをクリックします。

f:id:swx-korotkov:20220330113839p:plain

S3への出力結果やCloudWatchやSNS通知などの設定ができますので、下記の画面をご参考ください。

f:id:swx-korotkov:20220330114414p:plain

実行のプロセス

Run Commandでの確認

メンテナンスウィンドウの時間になりましたら、[サービス]>[Systems Manager]>[Run Command]をクリックしますと、下記の結果が表示されます。

f:id:swx-korotkov:20220330105210p:plain

詳細を確認するために、[コマンドID]をクリックします。

f:id:swx-korotkov:20220330105307p:plain

下記の画面のように対象インスタンスの適用のプロセスが見られます。Windows Updateが終わったら、[ステータス]は[進行中]から[成功]に変わります。

f:id:swx-korotkov:20220330105559p:plain

下記のような画面になったら、パッチの適用が完了です。

f:id:swx-korotkov:20220330114739p:plain

結果の確認

メンテナンスウィンドウでの確認

過去の履歴が見たい場合、[Systems Manager]>[メンテナンスウィンドウ]>対象ウィンドウIDを選択します。

f:id:swx-korotkov:20220330110628p:plain

[履歴]>対象のウィンドウIDを選択した上、[詳細の表示]をクリックします。

f:id:swx-korotkov:20220330110905p:plain

対象のIDを選択した上、[詳細の表示]をクリックします。

f:id:swx-korotkov:20220330111242p:plain

Run command実行時の画面が表示されます。

f:id:swx-korotkov:20220330112036p:plain

Run commandでの確認

[サービス]>[Systems Manager]>[Run Command]>[コマンド履歴]をクリックしますと、下記の結果が表示されます。

f:id:swx-korotkov:20220330111609p:plain

Systems Managerでの適用の結果確認

下記の画面で対象インスタンスを選択しますと、適用の結果が見られます。

f:id:swx-korotkov:20220330112312p:plain

[Output]を開くと、下記のような結果が出るので、詳細が見られます (KBXXXXX)。

f:id:swx-korotkov:20220330112514p:plain

Windowsでの適用の結果確認

Powershellコマンド:

Get-Hotfix

適用前の確認

f:id:swx-korotkov:20220330111717p:plain

適用後の確認

2つのKBXXXXXが適用されたことを確認できます。

f:id:swx-korotkov:20220330111735p:plain

その他

SSM Agentの自動更新の方法

定期的にSSM Agentの自動更新をしたい場合、下記の手順をご参考ください。

docs.aws.amazon.com

Systems Managerコンソールの画面がよく変わりますので、上記の手順を参考したほうがいいと思いますが、2022/03時点の画面をご紹介致します。

f:id:swx-korotkov:20220330120811p:plain

f:id:swx-korotkov:20220330120833p:plain

デフォルトだと14日ごとにSSM Agentの更新が実行されますが、スケジュールを変更することができます。

f:id:swx-korotkov:20220330121048p:plain

以上、御一読ありがとうございました。

イーゴリ (記事一覧)

クラウドインテグレーション部・技術4課・エンジニア

特にTerraform(自動化)、ネットワーク系、VDI、Windows Serverに興味があります

日本国内旅行・ドライブが好きです