このトピックでは、パッチマネージャーの仕組みと、システムパッチをスキャンしてステータスを確認し、不足しているパッチをインストールする方法について説明します。
Linux
パッチマネージャーでサポートされている Linux オペレーティングシステムには、CentOS、Alibaba Cloud Linux、Debian、Ubuntu などがあります。オペレーティングシステムが異なれば、使用するパッケージマネージャーも異なります。パッケージマネージャーが異なれば、システムパッチのスキャンとインストールの原則も異なります。
オペレーティングシステム | パッケージマネージャー |
CentOS 7、Alibaba Cloud Linux 2、および Red Hat Enterprise Linux 7 | YUM |
CentOS Stream 9、Alibaba Cloud Linux 3、Red Hat Enterprise Linux 8 および 9、Anolis OS 8、AlmaLinux OS 8 および 9、Rocky Linux 8 および 9、および Fedora 37、38、および 39 | DNF |
Ubuntu 16.04、18.04、20.04、22.04、および 24.04 | APT |
Debian 11/12 | APT |
SUSE Linux Enterprise Server (SLES) 12 および 15、および openSUSE 15 | Zypper |
YUM または DNF でのパッチベースラインの仕組み
CentOS、Alibaba Cloud Linux、Red Hat Enterprise Linux、Anolis OS などのオペレーティングシステムは、YUM または DNF を使用してソフトウェアパッケージを管理します。2 つのパッケージマネージャーはどちらも更新通知機能をサポートしています。ソフトウェアリポジトリでは、updateinfo.xml という名前のファイルにソフトウェアセキュリティ更新の通知が保存されます。更新通知には、特定の問題を修正するソフトウェアパッケージのセットが含まれています。更新通知に含まれるソフトウェアパッケージは、セキュリティパッケージと見なされます。パッチベースラインの作成時にセキュリティ以外の更新を含めるを選択しない場合、パッチマネージャーは、パッケージの最新のアップグレード可能なバージョンが更新通知に含まれている必要があります。
次の表に、updateinfo.xml ファイルのフィールドを示します。
パラメーター | 説明 |
type | 更新通知のタイプ。有効な値: Security Bugfix Enhancement Recommended Newpackage |
title | 更新通知のタイトル。 |
severity | 更新通知の重大度レベル。有効な値: Critical Important Moderate Low Unspecified |
summary | 更新通知の簡単な説明。 |
description | 更新通知の詳細な説明。 |
references | 更新通知の参照情報。参照情報には、一般的な脆弱性とエクスポージャー (CVE) および Bugzilla 情報が含まれる場合があります。 |
pkglist | 更新通知に関連付けられている RPM パッケージ。 |
パッチマネージャーは、パッチベースラインで指定されたルールに基づいて、updateinfo.xml ファイルに保存されている更新通知をフィルタリングします。たとえば、CentOS のパブリックベースラインでは、次のルールが指定されています。
'PatchFilterGroup': [
{
'Values': [
'*'
],
'Key': 'Product'
},
{
'Values': [
'Security',
'Bugfix'
],
'Key':'Classification'
},
{
'Values': [
'Critical',
'Important'
],
'Key': 'Severity'
}
]
上記のルールは、スキャンまたはインストールのために、Security または Bugfix タイプで、Critical または Important の重大度レベルの更新パッケージを照合するために使用されます。このルールは、次の yum コマンドと同等です。
yum check-update --security --bugfix --secseverity=Critical,Important
このルールは、次の dnf コマンドと同等です。
dnf check-update --security --bugfix --secseverity=Critical
dnf check-update --security --bugfix --secseverity=Important
作成するカスタムベースラインのルールで、スキャンまたはインストールする必要のあるパッチのタイプと重大度レベルを指定しない場合、そのルールは次の yum および dnf コマンドと同等です。
yum check-update --security
dnf check-update --security
インストールするパッチパッケージがフィルタリングされると、パッチマネージャーは yum(update api) または dnf update コマンドを実行してパッチパッケージをインストールします。パッチパッケージがインストールされると、パッチマネージャーはインスタンスを再起動します。再起動を許可パラメーターをいいえに設定すると、パッチマネージャーはインスタンスを再起動しません。
注:Alibaba Cloud Linux 2 はカーネルライブパッチをサポートしています。インスタンスでカーネルライブパッチが有効になっていて、インスタンスにカーネルライブパッチのみがインストールされている場合、パッチマネージャーはインスタンスを再起動しません。詳細については、「カーネルライブパッチ機能の概要」をご参照ください。
APT でのパッチベースラインの仕組み
Debian および Ubuntu では、パッチベースラインは DEB パッケージの Priority フィールドと Section フィールドに基づいてパッチを選択します。Priority フィールドはパッケージの優先度を示します。Section フィールドはパッケージのタイプを示します。
パッチマネージャーは、次の手順に基づいてシステムパッチをスキャンまたはインストールします。
1. apt update コマンドを実行して、ソフトウェアリポジトリのパッケージリストをリフレッシュします。
2. パッチベースラインを使用して、アップグレード可能なパッケージを照合します。セキュリティ以外の更新を含めるを選択しない場合、パッチマネージャーは、パッケージの最新のアップグレード可能なバージョンがセキュリティリポジトリにある必要があります。次のコンテンツは、さまざまなオペレーティングシステムのセキュリティリポジトリの名前をリストしています。
Debian Server 8: debian-security jessie
Debian Server 9: debian-security stretch
Debian Server 10: debian-security buster
Debian Server 11: debian-security bullseye
Debian Server 12: debian-security bookworm
Ubuntu Server 16.04 LTS: xenial-security
Ubuntu Server 18.04 LTS: bionic-security
Ubuntu Server 20.04 LTS: focal-security
Ubuntu Server 22.04 LTS: jammy-security
Debian または Ubuntu のパブリックベースラインでは、優先度が Required または Important のパッケージを照合するために、次のルールが指定されています。
'PatchFilterGroup': [
{
'Values': [
'*'
],
'Key': 'Product'
},
{
'Values': [
'Required',
'Important'
],
'Key': 'Severity'
}
上記のルールは、次の手順と同等です。
1. apt list --upgradable コマンドを実行して、すべてのアップグレード可能なパッケージをクエリします。
2. apt list -a package-name コマンドを実行して、パッケージのすべてのアップグレード可能なバージョンをクエリします。コマンド出力では、パッケージのバージョンは最新のものから順にソートされます。
3. apt show package-name=={Version} コマンドを実行して、パッケージのアップグレード可能なバージョンの優先度と、バージョンがベースラインルールを満たしているかどうかを確認します。
4. ベースラインルールを満たすパッケージのバージョンがセキュリティリポジトリにあるかどうかを確認します。
パッチマネージャーは apt update api コマンドを実行して、インストールする必要のあるパッチパッケージをインストールします。パッチパッケージがインストールされると、パッチマネージャーはインスタンスを再起動します。再起動を許可パラメーターをいいえに設定すると、パッチマネージャーはインスタンスを再起動しません。
Zypper でのパッチベースラインの仕組み
SLES および openSUSE では、Zypper はパッチを使用してシステムパッチを管理します。zypper list-patches コマンドを実行して、適用可能なパッチをリストできます。パッチは、特定のソフトウェアパッケージセットを修正するために使用されます。次の表に、パッチの属性を示します。
status | not needed: パッチは不要です。 applied: パッチはインストールされています。 need: パッチをインストールする必要があります。 |
カテゴリ Category |
|
重大度 Severity |
|
Created On | パッチが作成された日付。 |
Zypper パッチベースラインは、パッチの Category 属性と Severity 属性に基づいてパッチを選択します。例:
"PatchFilterGroup": [
{
"Values": [
"*"
],
"Key": "Product"
},
{
"Values": [
"security",
"recommended"
],
"Key": "Classification"
},
{
"Values": [
"Critical",
"Important",
"Moderate"
],
"Key": "Severity"
}
],
上記のルールは、重大度が Critical、Important、または Moderate の security および recommended パッチパッケージを照合するために使用されます。
Windows
Windows でのシステムパッチの更新方法
パッチ更新プログラムがスキャンまたはインストールされると、パッチ マネージャーは、パッチ リストの後続の更新プログラムによって置き換えられる更新プログラムを自動的に削除します。そのため、パッチ マネージャーには、インストールする最新の更新プログラムのみが表示されます。たとえば、パッチ KB4550961 がパッチ KB4556846 に置き換えられた場合、パッチ KB4556846 のみがパッチ更新プログラムとして使用されます。
必要なパッチ更新に依存関係がある場合は、最初に依存関係をインストールする必要があります。その後、パッチ更新が再度スキャンされた後に、必要な更新を検出してインストールできます。たとえば、パッチ KB5005076 がパッチ KB4566425 に依存しており、パッチ KB4566425 がインストールされていない場合、パッチ更新のスキャン後、パッチ KB5005076 は検出されません。この場合、最初にパッチ KB4566425 をインストールする必要があります。
注:パッチマネージャーは、Windows Server 2012 R2、Windows Server 2016、Windows Server 2019、および Windows Server 2022 のシステムパッチ更新のみをサポートしています。