5 Oracle Linuxでのソフトウェアの更新
ULNとOracle Linux yumサーバーのどちらを使用する場合でも、ソフトウェア更新は標準のdnfコマンドを使用してシステムで実施します。どちらを使用するかは、システムが適切なULNチャネルをサブスクライブしているか、システムでyumリポジトリを有効にしているかによって異なります。
dnf installおよびdnf updateコマンドを使用すると、一般的なパッケージのインストールまたは更新を処理できます。
入手可能な最新のパッケージを使用するようにシステムを更新するには、次のコマンドを実行します。
sudo dnf upgrade
ノート:
dnf update
コマンドは、dnf upgrade
を自動的に実行します。
システムを頻繁に更新し、パッケージに最新のセキュリティ・パッチとバグ修正が含まれるようにします。システムのソフトウェアが適切に保守されるように、自動更新の使用を検討してください。
すでにインストールされているソフトウェアに対してdnf installコマンドを使用すると、指定したソフトウェア・パッケージも、入手可能な最新バージョンに更新されます。
ソフトウェアの自動更新
DNF自動ツールは、最新のセキュリティ・パッチおよびバグ修正でシステムを自動的に更新するために使用できる追加パッケージとして提供されます。このツールは、更新の通知を提供し、更新をダウンロードして、systemdタイマーを使用して自動的に更新をインストールできます。
dnf-automatic
パッケージをインストールして、systemd dnf-automatic.timer
タイマー・ユニットを有効にすると、このサービスの使用を開始できます。
sudo dnf install -y dnf-automatic
sudo systemctl enable --now dnf-automatic.timer
DNF自動ツールを構成する場合は、/etc/dnf/automatic.conf
構成ファイルを編集してからタイマー・ユニットを再起動します。
他のタイマー・ユニットが使用可能であり、構成ファイルで指定されたデフォルト構成をオーバーライドできることに注意してください。多くの場合、そのようなタイマー・ユニットは、特定の動作を実行するための便利なショートカットとして使用されます。
-
dnf-automatic-notifyonly.timer
: 使用可能な更新について通知します -
dnf-automatic-download.timer
: パッケージの更新をダウンロードしますが、インストールしません -
dnf-automatic-install.timer
: パッケージの更新をダウンロードして自動的にインストールします
必要な動作を有効にするには、次のコマンドを実行します。
sudo systemctl enable --now dnf-automatic-install.timer
詳細は、dnf-automatic(8)
マニュアル・ページを参照してください。
重要:
Oracle Kspliceを使用すると、再起動することなく、Oracle Linuxカーネルに常にパッチを適用して、最新の状態に保つことができます。Oracle Linux Supportのお客様にとって、Kspliceはシステムの安全性、セキュリティ、最新の状態を維持するために不可欠なツールです。詳細は、『Oracle Linux: Kspliceユーザーズ・ガイド』を参照してください。
特定パッケージの更新の無効化
/etc/dnf/dnf.conf
ファイルの[main]
セクションにexclude
文を追加します。たとえば、VirtualBox
とkernel
の更新を除外するには、次のように指定します。 exclude=VirtualBox* kernel*
ノート:
特定のパッケージを更新から除外すると、他のパッケージに対する依存性エラーを引き起こす可能性があります。最新の更新をインストールしないと、システムもセキュリティ関連の問題に対して脆弱になる可能性があります。
セキュリティ更新およびエラッタ・リリースの追跡
Oracleでは、Oracle LinuxおよびOracle VMソフトウェアの重要な変更をエラッタと呼ばれる個別のパッケージ更新としてリリースします。これらのパッケージ更新は、リリースに集約されるか、_patch
チャネルを介して配布される前に、ULN上でダウンロードできるようになります。
エラッタ・パッケージには、次のものが含まれます。
-
セキュリティ・アドバイザ: 名前に接頭辞
ELSA-*
(Oracle Linuxの場合)とOVMSA-*
(Oracle VMの場合)が付いています。 -
名前の先頭に
ELBA-*
(Oracle Linuxの場合)およびOVMBA-*
(Oracle VMの場合)が付いているバグ修正アドバイザ。 -
名前の先頭に
ELEA-*
(Oracle Linuxの場合)およびOVMEA-*
(Oracle VMの場合)が付いている機能拡張アドバイザ。
新しいエラッタ・パッケージの公開時に通知を受けるには、Oracle Linuxエラッタ・メーリング・リスト(https://oss.oracle.com/mailman/listinfo/el-errata)およびOracle VMエラッタ・メーリング・リスト(https://oss.oracle.com/mailman/listinfo/oraclevm-errata)をサブスクライブできます。
ULNにログインしている場合、これらのメーリング・リストは、エラッタ・タブに示されるEnterprise Linuxエラッタ・メーリング・リストのサブスクライブリンクとOracle VMエラッタ・メーリング・リストのサブスクライブリンクに従うことでもサブスクライブできます。
Oracleは、ULNで利用可能になったエラッタの完全なリストを公開しています(https://linux.oracle.com/errata)。共通脆弱性(CVE)の公開されたリストを確認して、その詳細とステータスを調べることもできます(https://linux.oracle.com/cve)。
Oracle Linux yumサーバー・リポジトリへの更新は、https://yum.oracle.com/whatsnew.htmlにアクセスして追跡することもできます。ここでは、各リポジトリ内で過去6か月間に更新されたパッケージを確認できます。
ノート:
Oracleは、https://linux.oracle.com/errataにあるエラッタの告知を除いて、既存のセキュリティ脆弱性についてはコメントしません。Oracleは、すべてのOracleのお客様に最高のセキュリティ体制を提供するために、重大なセキュリティ脆弱性を重大度順に修正します。したがって、もっとも重要な問題が常に最初に修正されます。セキュリティ脆弱性の修正は、次の順序で作成されます。- 最新のコード行は、Oracle製品の次回メジャー・リリースに向けて開発されているコードです。
- すべての非ターミナル・リリースのための次回パッチセット
セキュリティ更新を確認するためのDNFの使用
DNFには、Oracle Linuxにインストールされているパッケージで利用可能なセキュリティおよびエラッタの更新を管理するための要件を処理する統合オプションが含まれています。
次のようにして、システムで使用可能なエラッタをリストします。
sudo dnf updateinfo list
コマンドからの出力では、使用可能なエラッタがID順にソートされ、次のいずれかのタイプが識別されます。
- セキュリティ・パッチ(
severity/Sec.
) - バグ修正(
bugfix
) - 機能拡張(
enhancement
)
また、セキュリティ・パッチは重大度(Critical
、Important
、Moderate
またはLow
)に応じてリストされます。
次の例のように、--sec-severityオプションを使用すると、セキュリティ・エラッタを重大度でフィルタ処理できます。
sudo dnf updateinfo list --sec-severity=Critical
エラッタIDではなく、共通脆弱性(CVE) ID順にセキュリティ正誤表をリストするには、キーワードcvesを引数として指定します。
sudo dnf updateinfo list cves
同様に、キーワードbugfix、enhancementおよびsecurityを使用して、すべての不具合修正、拡張およびセキュリティ・エラッタのリストをフィルタ処理します。
--cveオプションを使用すると、特定のCVE IDに対応するエラッタを表示できます。次に例を示します。
sudo dnf updateinfo list --cve CVE-2022-3545
CVEの詳細情報を表示するには、listではなくinfoを指定します。次に例を示します。
sudo dnf updateinfo info --cve CVE-ID
セキュリティ関連のエラッタが利用可能なすべてのパッケージを最新バージョンのパッケージ(パッケージにバグ修正または新機能が含まれるがセキュリティ・エラッタは含まれない場合でも)に更新するには、次のコマンドを使用します。
sudo dnf --security update
すべてのパッケージをセキュリティ・エラッタが含まれる最新バージョン(セキュリティ・エラッタが含まれない新しいパッケージは対象外)に更新するには、次のコマンドを使用します。
sudo dnf --security upgrade-minimal
すべてのカーネル・パッケージを、セキュリティ・エラッタが含まれる最新バージョンに更新するには、次のコマンドを使用します。
sudo dnf --security upgrade-minimal kernel*
CVEまたはエラッタに対応するパッケージのみを更新するには、dnf update --cveコマンドを使用します。次に例を示します。Enterprise Linux Security Advisory (ELSA)パッチの場合は、dnf update --advisoryを使用します。
sudo dnf update --cve CVE-ID
sudo dnf update --advisory ELSA-ID
ノート:
一部の更新では、システムを再起動する必要があります。デフォルトでは、ブート・マネージャによって最新のカーネル・バージョンが自動的に有効化されます。
詳細は、dnf(8)
マニュアル・ページを参照してください。
本番環境での制御された更新の計画
ソフトウェアとOSの更新は、最小限の停止時間が求められるミッション・クリティカルなアプリケーションがある複雑な本番環境で問題になることがあります。1つの解決策として、テスト済の単一のOracle Linuxリリースと更新レベルに環境をロックして、OSを頻繁に更新しないようにすることが考えられます。ただし、この方法ではセキュリティの脆弱性によるリスクが高まり、統合テストがより困難になる可能性があります。
ソフトウェア更新戦略を実装し、本番システム上のOSと基礎となるソフトウェアが頻繁に更新され、ソフトウェアの更新によるアプリケーションの破損のリスクを管理できるようにすることをお薦めします。
次のガイドラインは、ベスト・プラクティスに沿って、予期しない変更から本番システムを保護するソフトウェア更新戦略を実装するために役立ちます。
-
ローカルULNミラーを作成します。
システムに更新をロールアウトする際の課題の1つは、統合およびテスト環境で更新をテストしていたとしても、更新されたパッケージのソースを管理していないと、統合テストの期間と本番環境でパッケージの更新をロールアウトする時点までの間に、パッケージに変更が実施されている可能性があることです。
ローカルULNミラーを作成すると、チャネルをミラー・サーバーに同期するタイミングと頻度を制御できます。パッケージの選択は同期期間の間は静的であるため、パッケージのセットをテストしてから、本番環境を既知のワーキング・セットに更新する機会が得られます。
ミラー・サービスにULNを使用すると、Ksplice更新が含まれているチャネルをミラーリングできるため、オフラインのKspliceサービスを利用できます。オフラインKspliceを使用すると、インメモリー・カーネル更新を使用して再起動を回避できます。同時に、これらの更新をまず統合環境でテストしてから、本番環境に更新を適用できます。
-
リスクと脅威の軽減に基づいた段階的な更新戦略を検討します。
すべての更新が同じであるとはかぎりません。ULNミラー・チャネルの時間同期は、要件に応じて実行できます。これらの要件に基づいて、システムを異なるスケジュールで異なる更新タイプを実行するように構成できます。たとえば、次のような戦略で作業できます。
- カーネルおよびユーザー・スペースのOracle Ksplice更新を、少なくとも毎週実行するようにスケジュールします。必要に応じて、まず統合テスト環境内でこれらの更新を精査できます。
- セキュリティ関連のパッケージ更新については、毎月のメンテナンス・スケジュールに従い、セキュリティ・ツールからのアラートやエラッタ通知に沿って実行してください。これらのタイプの更新には、dnf update --securityコマンドを使用します。
- ULNミラー・スナップショットを使用するフル・パッケージ更新を実行するには、少なくとも四半期ごとのメンテナンス・スケジュールを適用します。これらの更新を本番サーバーに実装する前に、まず統合テスト環境で更新を精査してください。
アトミック更新を定期的に実行すると、統合の問題が発生したときの解決が容易になり、潜在的なセキュリティ問題からより適切に環境を保護できます。統合テスト環境とYumまたはULNミラーを使用することは、プラットフォームの安定性の維持と侵害からの保護のために重要です。