Systems Manager Patch Manager で特定パッチを適用する

2021.01.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

sudo の脆弱性情報が公開され、界隈でざわざわ...としていますね。

Amazon Linux2(以下 AL2)は、対応としてパッチが適用されたバージョンへ sudo を更新することが案内されています。 AL2 では更新された AMI も既に提供されています。

[root@ip-192-168-1-40 ~]# cat /var/log/yum.log
[root@ip-192-168-1-40 ~]# rpm -qa|grep sudo
sudo-1.8.23-4.amzn2.2.1.x86_64
[root@ip-192-168-1-40 ~]# sudoedit -s /
usage: sudoedit [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] file ...
[root@ip-192-168-1-40 ~]#

脆弱性に関する詳細な内容や各ディストリビューションでの対応などは、既にスペシャリストの方々が発信されているので、お任せしたいと思います。。

本記事では、今回のような特定パッチ(アップデート作業)を複数対象に実施する方法として AL2 を例として Systems Manager Patch Manager(以下 Patch Manager)で適用してみます!

事前準備

脆弱性を含む EC2 を2台用意します。

Systems Manager に必要な Role と ユーザーデータに下記の内容を記載して、新規起動時にアップデートが実行されないようにします。

#cloud-config
repo_upgrade: none

sudo が脆弱性を含むバージョンであることを確認します。

root@ip-192-168-0-252 ~]# cat /var/log/yum.log
[root@ip-192-168-0-252 ~]# rpm -qa |grep sudo
sudo-1.8.23-4.amzn2.2.x86_64
[root@ip-192-168-0-252 ~]# sudoedit -s /
sudoedit: /: not a regular file
[root@ip-192-168-0-252 ~]#

[root@ip-192-168-0-62 ~]# cat /var/log/yum.log
[root@ip-192-168-0-62 ~]# rpm -qa |grep sudo
sudo-1.8.23-4.amzn2.2.x86_64
[root@ip-192-168-0-62 ~]# sudoedit -s /
sudoedit: /: not a regular file
[root@ip-192-168-0-62 ~]#

パッチ適用

Patch Manager 自体の説明はここでは割愛します。弊社メンバーがとてもわかりやすい記事を書いてくれていますので、Patch Manager を知りたい!という方は是非、お読みください。

パッチベースライン作成

  • AWS Systems Manager >>> パッチマネージャー >>> (事前に定義されたパッチベースライン表示する >>>) パッチベースラインの作成

「オペレーティングシステム」 に Amazon Linux 2 を指定します。

「ルールの削除」 を選択し、承認ルールがない状態にします(ここが残っていると適用したい以外のパッチも適用される可能性があります)。

「承認済みパッチ」 に、下記情報にそって パッチを適用します。
今回は CVE-2021-3156 を指定します。

Amazon Linux、Amazon Linux 2、CentOS、Oracle Linux、Red Hat Enterprise Linux (RHEL)

「パッチベースラインの作成」を選択します。

デフォルトパッチベースライン設定

  • AWS Systems Manager >>> パッチマネージャー >>> 作成したベースラインを選択 >>> アクション >>> デフォルトパッチベースラインの設定 >>> デフォルトの設定

パッチ適用

  • AWS Systems Manager >>> パッチマネージャー >>> 今すぐパッチ適用

実行すると、概要へ遷移します。

結果確認

OS でのログを確認すると 指定したパッチ( sudo のアップデート )のみ実行された履歴が確認できます。

[root@ip-192-168-0-252 ~]# cat /var/log/yum.log
Jan 27 11:28:48 Updated: sudo-1.8.23-4.amzn2.2.1.x86_64
[root@ip-192-168-0-252 ~]# sudoedit -s /
usage: sudoedit [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] file ...
[root@ip-192-168-0-252 ~]# 

[root@ip-192-168-0-62 ~]# cat /var/log/yum.log
Jan 27 11:28:20 Updated: sudo-1.8.23-4.amzn2.2.1.x86_64
[root@ip-192-168-0-62 ~]# sudoedit -s /
usage: sudoedit [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] file ...
[root@ip-192-168-0-62 ~]#

Patch Manager の履歴からも確認できます。

インスタンス単位で詳細を確認します。

さいごに

本番環境への適用ではバックアップなど付随する作業も想定されますが、今回のような比較的シンプルな対応内容であれば、対象に一つずつ実施するよりも Patch Manager のようなサービスを活用し、迅速に適用することが望ましいかと思います。

また平時から、こういった脆弱性への対応方法の検討や準備を行っておくといざという時に、自分たちを救ってくれるので、(面倒ではありますが、、)運用フェーズでは大切なことの一つだと改めて思いました。