VMware HOLで、Apache Log4j のワークアラウンド手順確認(PythonスクリプトをHOLへ持ち込み)
久しぶりのブログ更新は、恒例のvExperts Advent Calendarです。
今年(2021)は、12/22分を担当しました。
今回は、Apache Log4j のVCSA 脆弱性対策のワークアラウンドを例に、VMware HOLで外部から持ってきたスクリプト(Python)を実行してみます。
脆弱性対策が必要だが自前で検証環境が準備できない方におすすめです。
実際の手順は単純に、”SEND TEXT”で、HOL環境にテキストとしてコピーするだけです。
本来、HOL環境に外部からデータを持ち込むことはできませんが、この方法であれば、他のスクリプトもHOL環境に持ち込むことが可能です。
(エンコードなどは気を付けてください。)
試したKBはこちらになります。
https://kb.vmware.com/s/article/87088
【注意】VCSAのLog4Jの対応は、下記87081を見てください。
https://kb.vmware.com/s/article/87081
KB87088は、KB87081のワークアラウンドの一部として公開されていましたが、現状はリンクが消えています。
※KB87081は、頻繁に更新されており、今日見たら消えてました。。。
今回の投稿が12/22必須だったため、KB87088で一旦掲載しますが、まぎらわしいので、どこかでKB87081の内容に更新するかも。
■Apache Log4Jとは
ご存じの方も多いともいますが、攻撃がApache Log4jは、かなり影響範囲が大きな脆弱性です。
https://japan.zdnet.com/article/35181084/
■VMware関連のApache Log4J
VMware関連の対応状況は、優秀なvExpertの方々の情報が非常に参考になります。
(私も実務で活用させていただきました。ありがとうございます。)
https://blogs.networld.co.jp/entry/2021/12/12/210529
https://blog.tcpninja.net/entry/2021/12/12/173456
■HOLできること
vCenterをメンテナンスする場合、大まかにはこんな流れになるかと思います。
HOLが活用できるのは、2~4あたりです。
(本番環境のみで実施しようとすると、1からいきなり5に飛ぶことになるかと思います。)
本記事では、”2.2 vCenterへのスクリプト実行”をやってみます。
例. vCenterメンテナンス時の作業の流れ
No |
作業名 |
説明 |
できる〇 or できない× |
1 |
机上確認(ナレッジ、マニュアル |
作業内容、流れをマニュアルなどを使って確認 |
- HOLがなくても可能 |
2 |
評価環境で検証、影響確認 |
||
2.1 |
vCenterへの設定変更 |
SSHやブラウザからvCenterを操作 |
〇 |
2.2 |
vCenterへのスクリプト実行 |
外部からスクリプトをダウンロードして適用 |
〇 |
2.3 |
vCenterと連携するVMware製品への影響確認 |
該当する製品のHOLを探せば可 |
〇 |
3 |
vCenterの変更手順作成 |
コマンドや操作画面の画像入り手順を作成可能 |
〇 |
4 |
変更管理作成、変更管理承認(ITIL) |
||
4.1 |
変更対象確認 |
机上でも確認可能 |
- HOLがなくても可能 |
4.2 |
ユーザー影響、作業リスク |
机上確認だけだと不足※ |
〇 |
4.3 |
メンテナンス時間 |
〇 |
|
4.4 |
作業計画、切り戻し計画 |
〇 |
|
5 |
本番環境への実施 |
|
- HOLがなくても可能 |
※事前に影響確認、切り戻しの計画などしていないと予期せぬトラブルへの対処が困難になります。
■HOLでできないこと
外部からのパッチなどのバイナリの持ち込み、サードパーティ製品との連携などは試せないです。
作業名 |
説明 |
できる〇 or できない× |
評価環境で検証、影響確認 |
||
vCenterへのパッチ適用 |
外部からパッチをダウンロードして適用 |
× |
vCenterと連携するサードパーティ製品への影響確認 |
・バックアップ製品 ・セキュリティ製品 など |
× |
例えば、NSX-TのApache Log4Jの対応は、dpkgのパッケージをダウンロードする必要があり、HOLで確認できませんでした。(ほんとは、こちらを試したかった。)
NSX-T
https://kb.vmware.com/s/article/87086
”unified-appliance-log4j2-patch_3.1.3.6.0.19078151_all.deb”
https://kb.vmware.com/sfc/servlet.shepherd/version/download/0685G00000d7LrfQAE
■事前準備
今回はこのKBのPythonスクリプト(vmsa-2021-0028-kb87081.py)です。
https://kb.vmware.com/s/article/87088
https://kb.vmware.com/sfc/servlet.shepherd/version/download/0685G00000d7ovWQAQ
■VMware HOL への接続
1.HOLのURLにアクセスし、”Get Started”をクリック。
2.使いたいVMware製品の製品名を”Search all catalogs”に製品名を入れてください。
今回はVirtualization 101 を利用します。
3.“ENROLL”をクリック。
4.“Username”、”Password”を入力します。新規の場合は、”Register”をクリック。
5.”START THIS LAB”をクリック。
6.”Start Lab”をクリック。
7.Labが起動してきます。
今回は必須ではないですが、デスクトップ上の”README.txt”にアカウントとパスワードがまとまっているので、見ておいたほうが便利です。
■外部のPythonスクリプトをHOLへ持ち込み
実際に、PythonスクリプトをHOLに持ち込み実行していきましょう。
1.まずHOL環境で、エディタを起動します。(今回は、”Notepad++”を使用)
2.”Notepad++”で、”File”から”New”をクリックし新しいファイルを開きます。
3.次に手元のPCのテキストエディタで、vmsa-2021-0028-kb87081.py を開き、100行程度選択してコピーします。
4.VMware HOLで”SEND TEXT”をクリックし先ほどのテキストを貼り付けます。
5.これを繰り返していけば、HOL環境へスクリプトを持ち込むことが可能です。
テキストの貼り付けが完了したら、vmsa-2021-0028-kb87081.py をHOLのdesktopに保存します。
補足
・ちなみに、コピペは1時間ぐらいかかると思うので気長にやってください。
・エディタは、文字エンコードと行数がわかるものがおすすめです。
■vCenterに、Pythonスクリプトをコピー
pscpを使用して、vCenterに、vmsa-2021-0028-kb87081.pyをコピーします。
1.VMware HOLでコマンド起動
2.コマンドプロンプトで、次を実行します。
pscp Desktop\vmsa-2021-0028-kb87081.py root@vcsa-01a.corp.local:/tmp/
※PuTTyにroot@vcsa-01a.corp.localが保存されているからか、パスワードは求められません。
■vCenterで、Pythonスクリプトを実行
1.VMware HOL 上で、PuTTYを起動し、vcsa-01a.corp.local へ接続します。
2.SSH接続後、次を実施します。
cd /tmp/
"python /tmp/vmsa-2021-0028-kb87081.py"
質問には、Yを入力
以上で、スクリプトの適用は完了です。
■作業中の影響確認
ちなみに、適用中にブラウザから、vCenterへアクセスすると、一時的にアクセスできないことを確認できました。
作業による影響確認を本番環境への実施前にHOLで確認できるので、評価環境の準備が難しい方にはおすすめの使い方だと思います。
・適用前
・適用中
・適用後