EC2インスタンスにログインすると、以下のようにパッケージアップデートのメッセージが表示されます。この通りにsudo yum update
すればアップデートされるのですが、他のアプリが動いている時に行っても良いのか、アップデート後に再起動は必要なのかなど気になることがあったので、少し調べてみました。
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
41 package(s) needed for security, out of 79 available
Run "sudo yum update" to apply all updates.
利用可能なセキュリティパッチを確認する
まず、アップデートが必要と言われているパッケージの具体的な一覧は yum check-update
または yum updateinfo
コマンドで確認できます。
$ yum check-update --security
(なんかすごく色々と表示されたので省略)
41 package(s) needed for security, out of 79 available
bzip2.x86_64 1.0.6-13.amzn2.0.3 amzn2-core
(省略)
systemd-sysv.x86_64 219-78.amzn2.0.14 amzn2-core
Obsoleting Packages
grub2.x86_64 1:2.06-2.amzn2.0.3 amzn2-core
grub2.x86_64 1:2.02-35.amzn2.0.4 installed
(省略)
$ yum updateinfo
amzn2-core/2/x86_64 | 3.7 kB 00:00
Updates Information Summary: updates
33 Security notice(s)
6 important Security notice(s)
4 low Security notice(s)
23 medium Security notice(s)
updateinfo summary done
yum updateinfo
は33件の Security notices と最初のメッセージと数が異なりますが、これはALAS(Amazon Linux AMI Security Advisory)と呼ばれるパッチの単位のようで(Amazon Linux Security Centerで確認できます)、yum updateinfo list
で緊急度を含めた一覧を確認できます。
$ yum updateinfo list
ALAS2-2021-1652 low/Sec. bzip2-1.0.6-13.amzn2.0.3.x86_64
(省略)
ALAS2-2021-1647 medium/Sec. systemd-sysv-219-78.amzn2.0.14.x86_64
updateinfo list done
ALASの詳細の確認は yum check-update
の --advisory
オプションでできます(カンマ区切りで複数指定も可)。
$ yum check-update --advisory=ALAS2-2021-1652
(省略)
2 package(s) needed for security, out of 79 available
bzip2.x86_64 1.0.6-13.amzn2.0.3 amzn2-core
bzip2-libs.x86_64 1.0.6-13.amzn2.0.3 amzn2-core
セキュリティパッチを適用する
セキュリティパッチの適用は sudo yum update
で行います。試しにALASを1つだけ指定して実行してみます。
$ sudo yum update --advisory=ALAS2-2021-1652
(省略)
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Updating:
bzip2 x86_64 1.0.6-13.amzn2.0.3 amzn2-core 52 k
bzip2-libs x86_64 1.0.6-13.amzn2.0.3 amzn2-core 40 k
Transaction Summary
================================================================================
Upgrade 2 Packages
Total download size: 92 k
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/2): bzip2-libs-1.0.6-13.amzn2.0.3.x86_64.rpm | 40 kB 00:00
(2/2): bzip2-1.0.6-13.amzn2.0.3.x86_64.rpm | 52 kB 00:00
--------------------------------------------------------------------------------
Total 755 kB/s | 92 kB 00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Updating : bzip2-libs-1.0.6-13.amzn2.0.3.x86_64 1/4
Updating : bzip2-1.0.6-13.amzn2.0.3.x86_64 2/4
Cleanup : bzip2-1.0.6-13.amzn2.0.2.x86_64 3/4
Cleanup : bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 4/4
Verifying : bzip2-1.0.6-13.amzn2.0.3.x86_64 1/4
Verifying : bzip2-libs-1.0.6-13.amzn2.0.3.x86_64 2/4
Verifying : bzip2-1.0.6-13.amzn2.0.2.x86_64 3/4
Verifying : bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 4/4
Updated:
bzip2.x86_64 0:1.0.6-13.amzn2.0.3 bzip2-libs.x86_64 0:1.0.6-13.amzn2.0.3
Complete!
すると、パッケージ単位だと2つ、ALAS単位だと1つが適用され、確認コマンドの結果にも反映されています。
$ yum check-update --security
39 package(s) needed for security, out of 77 available
$ yum updateinfo
Updates Information Summary: updates
32 Security notice(s)
6 important Security notice(s)
3 low Security notice(s)
23 medium Security notice(s)
updateinfo summary done
セキュリティーに関するものを全てアップデートする場合は --security
オプションを指定します。
$ sudo yum update --security
(省略)
Transaction Summary
================================================================================
Install 7 Packages (+2 Dependent packages)
Upgrade 33 Packages
Total download size: 59 M
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/42): chrony-4.0-3.amzn2.0.2.x86_64.rpm | 287 kB 00:00
(2/42): cloud-init-19.3-44.amzn2.noarch.rpm | 926 kB 00:00
(省略)
Complete!
確認してみると見事になくなっています。カーネルもアップデートされたものの、まだアップデート前のバージョンで動いているようです。
$ yum check-update --security
No packages needed for security; 37 packages available
Security: kernel-4.14.243-185.433.amzn2.x86_64 is an installed security update
Security: kernel-4.14.209-160.339.amzn2.x86_64 is the currently running version
$ yum updateinfo
Security: kernel-4.14.243-185.433.amzn2.x86_64 is an installed security update
Security: kernel-4.14.209-160.339.amzn2.x86_64 is the currently running version
updateinfo summary done
再起動が必要かを確認する
カーネルをアップデートしたのでOS再起動が必要なのは確実ですが、その前にサービスやOSの再起動が必要か確認するコマンドがあるので実行してみます。sudo needs-restarting
の -s
と -r
オプションです。
$ sudo needs-restarting -s
rpcbind.service
systemd-logind.service
network.service
postfix.service
dbus.service
lvm2-lvmetad.service
sshd.service
rngd.service
rsyslog.service
systemd-journald.service
$ sudo needs-restarting -r
Core libraries or services have been updated:
openssl-libs -> 1:1.0.2k-19.amzn2.0.7
kernel -> 4.14.243-185.433.amzn2
systemd -> 219-78.amzn2.0.14
Reboot is required to ensure that your system benefits from these updates.
More information:
https://access.redhat.com/solutions/27943
再起動(sudo reboot
)すると表示がなくなりました。
$ sudo needs-restarting -s
$ sudo needs-restarting -r
No core libraries or services have been updated.
Reboot is probably not necessary.
まとめ
セキュリティパッチの適用自体は簡単に行え、個別に適用したり、適用後の再起動の要否を確認したりする方法も分かりました。
他のシステムに影響を与えない場合もありますが、影響範囲は個別に調べる必要がありますし、サービスやOSの再起動が必要な場合もあるので、基本的にはシステムから切り離して行うものだと言えます。