クマ松です。
Windowsサーバへパッチを適用する為にSystems Managerの一機能Patch Managerを用いている方も多いのでないでしょうか。
インターネットへの通信時にProxyサーバを経由させる環境でPatch Managerが異常終了した場合に、まず確認した方が良いことをご紹介します。
- SSM Agent のプロキシ設定(レジストリ)
- WinHTTP プロキシの設定
- LocalSystemユーザーアカウントのInternet Explorerのプロキシ設定
10.10.10.10:8080というプロキシとポートを利用しているような環境で、コマンドや確認結果を解説します。
##SSM Agent のプロキシ設定
SSM Agentのプロキシが設定されているかを確認します。
Environmentにhttp_proxyとno_proxyが設定されていることを確認しましょう。
PS C:\Windows\system32> $serviceKey = "HKLM:\SYSTEM\CurrentControlSet\Services\AmazonSSMAgent"
PS C:\Windows\system32> Get-ItemProperty -Path $serviceKey
Version : 3.0.882.0
Environment : {http_proxy=10.10.10.10:8080, no_proxy=169.254.169.254}
DependOnService : Winmgmt
Type : 16
Start : 2
ErrorControl : 1
ImagePath : "C:\Program Files\Amazon\SSM\amazon-ssm-agent.exe"
DisplayName : Amazon SSM Agent
ObjectName : LocalSystem
Description : Amazon SSM Agent
FailureActions : {128, 81, 1, 0...}
FailureActionsOnNonCrashFailures : 1
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AmazonSSMAgent
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
PSChildName : AmazonSSMAgent
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry
##WinHTTPプロキシ設定
管理者権限で起動したコマンドプロンプトにて、WinHTTPプロキシの設定を確認します。
netsh winhttp show proxy
現在の WinHTTP プロキシ設定:
プロキシ サーバー: 10.10.10.10:8080
バイパス一覧 : 169.254.169.254
##LocalSystemユーザーアカウントのInternet Explorerのプロキシ設定
SYSTEMユーザ(アカウントの実際の名前はnt authority/system)はAdministratorsグループのメンバーと同じ権限レベルを持つ強力なユーザです。
Linuxでいうrootユーザに当たりますが、ユーザプロファイル情報を持たないので「SYSTEMユーザのレジストリ設定をSYSTEMユーザでRDP接続して確認」なんてことはできません。
SYSTEMユーザのInternet Explorerのプロキシ設定は以下の手順で確認します。
①Microsoftのサイトから PsTools をダウンロードします
https://docs.microsoft.com/en-us/sysinternals/downloads/psexec
②ダウンロードしたzipを解凍します
③管理者権限でコマンドプロンプトを起動します
④先ほどzipを解凍して作成されたフォルダへ cd コマンドを使用して移動します
⑤psexec.exe -i -s -d "C:\Program Files\Internet Explorer\iexplore.exe" コマンドを実行します
PsExecの初回起動時のみ、使用許諾(PsExec License Agreement)のダイアログが表示されます。
内容を読んで[Agree]ボタンをクリックします。
これでIEをSystemユーザ権限で起動することが出来ます。
⑥設定 > インターネットオプション > 接続タブ > LAN の設定 を開きます
##3点とも問題なかった場合
SSMエージェント・Patch Managerを利用する為に通信が必要な宛先が3つあります。
以下の宛先をプロキシサーバでブロックしていないかを確認します。
- ssm.ap-northeast-1.amazonaws.com
- ec2messages.ap-northeast-1.amazonaws.com
- s3.ap-northeast-1.amazonaws.com
##何故WinHTTPとIE設定の両方の設定が必要なのか
IEってブラウザですよね。何かを検索するときにしか利用しないイメージがあります。
IEのプロキシ設定はもちろん IE が通信を行う際に利用されます。
しかし一部のWindowsアプリケーションでは、IEと同様の通信モジュールであるwininet.dllを利用しています。
その場合、IEの設定値を利用してインターネットへ通信しようとします。
IEの設定を参照しないアプリも存在します。
WinHTTPの設定とIEの設定は揃えるのが無難です。
以下のコマンドでIEのプロキシ設定をWinHTTPの設定にインポートし、両方の設定を揃えることが出来ます。
netsh winhttp import proxy source=ie
##参考サイト
SSM エージェント が Windows Server インスタンス用にプロキシを使用するように設定する
グループ ポリシーを使用して Windows クライアントに WinHTTP プロキシ設定を適用する
Windows Server EC2インスタンスのプロキシ設定で気を付けるべきこと
IE からみるプロキシの設定について
System Account in Windows