AmazonLinux2023のカーネルをアップデートする

AWS

奥さん、大変ですよ! AmazonLinux2023に脆弱性が発見されたそうですよ!(2023/07/12)

では、kernelをupdateする方法について

kernelバージョンが6.1.25-37.47だとマズイそうなので、これを上げます。

まず、自分のところで動いているEC2のどれがAmazonLinux2023か調べます。2023年3月以降に起動された物で、一個一個以下の様にシステムログを見るか、「接続」してバナーを見ればわかります。

別に何の設定もしなくてもコマンドプロンプト画面に入れる「EC2 Instance Connect」が今春実装されているから、シスログみなくていいかな? プライベートネットワークでも踏み台なしで入れるのは嬉しいよね。プライベートネットワークもSSMでのupdateはできます。

で、対象のEC2はSSMエージェントがデフォで動いているはずだから、

sudo systemctl status amazon-ssm-agent

で、確認。あとはSSMの高速セットアップをする。インスタンスの選択は手動でできるので、入れたくないEC2には入れなくて良い。高速セットアップにはいろいろな機能があって、エージェントのインストールとIAMの設定しておけば無理に高速セットアップしなくていい(むしろ、競合する)。

なお、セットアップされたかどうかはインスタンスの「接続」で「セッションマネージャー」で接続ボタンがオレンジになったらOK。IAMの設定に5分ほど掛かるので待つこと。いつまでも「接続」がオレンジにならなかったときがあって、

sudo systemctl restart amazon-ssm-agent

したら直った。Active(Running)だったけどおかしかったらしい。

コマンドプロンプトに入って、以下を打ってリリースバージョンを確認。

sudo dnf check-update

一番下が該当リリースバージョンだったので、下記のYAMLデータに入れる。

dnf upgrade –releasever=2023.1.20230705ね。ご丁寧にコマンドを表示してくれます。これにsudoを付けます。

次にSSMの左ペインから「ドキュメント」をクリック。

「create document」で、以下のYAMLデータを流し込む。

---
description: "Update kernel and reboot"
schemaVersion: "0.3"
parameters: {}
mainSteps:
- action: "aws:runCommand"
  name: "runCommands"
  inputs:
    DocumentName: "AWS-RunShellScript"
    Targets:
    - Key: "InstanceIds"
      Values: 
      - "i-0123456789abcde"
    Parameters:
      commands:
      - "uname -r"
      - "dnf upgrade --releasever=2023.1.20230705  kernel -y"
      - "sudo reboot"

i-0123456789abcdeはインスタンスIDなので自分のリソースを入れてね。複数入れることもできます。やってることはバージョン表示して、kernelのアップデートして、再起動しているだけ。

さて、これを特定の時間に動かします。SSMの左ペインから「メンテナンスウィンドウ」を指定。

時間はcronなどでこんな感じ。今回一回だけなので、週一のスケジュールで後日消す予定。

タスクを登録します。

重みとか1でいいです。あまり気にする作業じゃないんで。

で、ターゲットも選択しときましょう。ドキュメントに指定してるからって忘れてしまい、30分ほど悩みました。

5分で終わるので、その後、システムログに出ているバージョンを確かめるか、コマンドプロンプトで以下のコマンドを打って確認します。

uname -r

これで上手くkernelのアップデートができるはずです。

コメント

タイトルとURLをコピーしました