Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第3章 システムを最新の状態に保つ

この章では、システムを最新の状態に保つためのプロセスについて説明します。これには、セキュリティー更新のインストール方法の計画と設定、新しく更新されたパッケージによって導入された変更の適用、およびセキュリティー勧告を追跡するための Red Hat カスタマーポータルの使用が含まれます。

3.1. インストール済みソフトウェアのメンテナーンス

セキュリティー上の脆弱性が検出されると、潜在的なセキュリティーリスクを制限するために、影響を受けるソフトウェアを更新する必要があります。ソフトウェアが現在サポートされている Red Hat Enterprise Linux ディストリビューション内のパッケージの一部である場合、Red Hat では、脆弱性を修正する更新されたパッケージをできるだけ早くリリースするよう尽力しています。
多くの場合、特定のセキュリティーの不正使用に関する発表には、問題を修正するパッチ (またはソースコード) も含まれます。このパッチは、その後、Red Hat Enterprise Linux パッケージに適用され、エラータ更新としてテストされ、リリースされます。しかし、発表にパッチが含まれていない場合、Red Hat の開発者はまずソフトウェアのメンテナーと協力して問題を解決します。問題が修正されると、パッケージはエラータ更新としてテストされ、リリースされます。
お使いのシステムで使用されているソフトウェアのエラータ更新がリリースされた場合は、システムが潜在的に脆弱となる時間を最小限に抑えるため、影響を受けるパッケージをできるだけ早く更新することを強く推奨します。

3.1.1. セキュリティーの更新の立案と設定

すべてのソフトウェアにはバグが含まれます。多くの場合、これらのバグは、システムを悪意のあるユーザーにさらす可能性のある脆弱性をもたらすことがあります。更新されていないパッケージは、コンピューターへの不正侵入の原因としてよく知られています。発見された脆弱性を迅速に排除し、悪用されないようにするために、セキュリティーパッチを適時にインストールする計画を実施します。
セキュリティー更新が利用可能になったらテストし、インストールするようにスケジュールします。更新がリリースされてからシステムにインストールされるまでの間、システムを保護するために追加の制御を行う必要があります。これらの制御は脆弱性そのものによって異なりますが、追加のファイアウォールルール、外部ファイアウォールの使用、またはソフトウェア設定の変更が含まれる場合があります。
サポート対象パッケージのバグは、エラータメカニズムを使用して修正されます。エラータは、1 つ以上のRPMパッケージとそのエラータが対処する問題の簡単な説明で設定されています。すべてのエラータは、アクティブなサブスクリプションをお持ちのお客様に Red Hat Subscription Management サービスで配布されます。セキュリティー問題に対処するエラータは、Red Hat セキュリティーアドバイザリー と呼ばれます。
セキュリティーエラータを使った作業についての詳細情報は、「カスタマーポータルでのセキュリティーアドバイザリーの表示」を参照してください。RHN Classic からの移行方法など、Red Hat Subscription Management サービスの詳細は、Red Hat Subscription Management に関するドキュメントを参照してください。

3.1.1.1. Yum のセキュリティー機能の使用

Yum パッケージマネージャーには、セキュリティーエラータの検索、一覧表示、表示、インストールに使用できるセキュリティー関連の機能が複数含まれています。これらの機能を使用すると、Yum を使用してセキュリティー更新以外のものをインストールすることもできます。
システムで利用可能なセキュリティー関連の更新を確認するには、root で以下のコマンドを入力します。
~]# yum check-update --security
Loaded plugins: langpacks, product-id, subscription-manager
rhel-7-workstation-rpms/x86_64                  | 3.4 kB  00:00:00
No packages needed for security; 0 packages available
上記のコマンドは非対話型モードで実行されるため、利用可能な更新があるかどうかを自動チェックするためのスクリプトで使用できることに注意してください。このコマンドは、利用可能なセキュリティー更新がある場合は 100 を、ない場合は 0 を終了値として返します。エラーが発生すると、1 が返されます。
同様に、以下のコマンドを使用して、セキュリティー関連の更新のみをインストールします。
~]# yum update --security
updateinfo サブコマンドを使用して、利用可能な更新に関するリポジトリーが提供する情報を表示または操作します。updateinfo サブコマンド自体は、多くのコマンドを受け入れ、セキュリティー関連の使用に関連するいくつかのコマンドを利用できます。これらのコマンドの概要については、表3.1「yum updateinfo で使用できるセキュリティー関連コマンドです。」 を参照してください。

表3.1 yum updateinfo で使用できるセキュリティー関連コマンドです。

コマンド 説明  
[アドバイザリー] 1 つ以上のアドバイザリーに関する情報を表示します。advisories をアドバイザリー番号に置き換えます。 
cves CVE (Common Vulnerabilities and Exposures) に関連する情報のサブセットを表示します。 
セキュリティー または すべてのセキュリティー関連情報を表示します。 
severity [severity_level] または sev [severity_level] 指定された severity_level のセキュリティー関連パッケージに関する情報を表示します。 

3.1.2. パッケージの更新とインストール

システムでソフトウェアを更新する場合は、信頼できるソースから更新をダウンロードすることが重要です。攻撃者は、問題を解決するはずのパッケージと同じバージョン番号で、異なるセキュリティーエクスプロイトを施したパッケージを簡単に作り直し、インターネット上で公開することができます。こうした事態が発生すると、元の RPM に対するファイル検証などのセキュリティー対策を講じても、不正アクセスを検知することができません。このため、RPM は Red Hat などの信頼できるソールからのみダウンロードし、その保全性を検証するためにパッケージの署名を確認することが極めて重要になります。
Yum パッケージマネージャーの使用方法に関する詳細情報は、Red Hat Enterprise Linux 7 システム管理者のガイドの Yum の章を参照してください。

3.1.2.1. 署名パッケージの検証

すべての Red Hat Enterprise Linux パッケージは、Red Hat GPG キーで署名されます。gpgGNU Privacy Guard または GnuPG の略です。これは、分散ファイルの信頼性を確保するために使用するフリーソフトウェアパッケージです。パッケージ署名の検証に失敗した場合は、パッケージが改ざんされている可能性があるため、信頼することができません。
Yum パッケージマネージャーを使用すると、インストールまたはアップグレードするすべてのパッケージを自動的に検証できます。この機能はデフォルトで無効にされています。システムでこのオプションを設定するには、/etc/yum.conf 設定ファイルで gpgcheck 設定ディレクティブが 1 に設定されていることを確認します。
ファイルシステム上のパッケージファイルを手動で確認するには、次のコマンドを使用します。
rpmkeys --checksig package_file.rpm
Red Hat パッケージの署名のプラクティスに関する追加情報は、Red Hat カスタマーポータルの Product Signing (GPG) Keys の記事を参照してください。

3.1.2.2. 署名パッケージのインストール

ファイルシステムから検証済みのパッケージをインストールするには、「署名パッケージの検証」 を参照してください。パッケージの検証方法は、以下のように rootyum install コマンドを実行します。
yum install package_file.rpm
シェルグロブを使用して、複数のパッケージを一度にインストールします。たとえば、次のコマンドは、現在のディレクトリーにすべての .rpm パッケージをインストールします。
yum install *.rpm
重要
セキュリティーエラータをインストールする前に、エラータレポートに含まれる特別な指示を必ず読み、それに従って実行してください。エラータ更新に基づく変更の適用についての全般的な指示は、「インストールされた更新によって導入された変更の適用」 を参照してください。

3.1.3. インストールされた更新によって導入された変更の適用

セキュリティーエラータや更新をダウンロードしてインストールした後は、古いソフトウェアの使用を停止し、新しいソフトウェアの使用を開始することが重要です。これがどのように行われるかは、更新されたソフトウェアのタイプによって異なります。以下のリストは、ソフトウェアの一般的なカテゴリーを項目別に分類し、パッケージのアップグレード後に更新されたバージョンを使用するための手順を示したものです。
注記
一般に、システムを再起動することが、ソフトウェアパッケージの最新バージョンが使用されていることを確認する最も確実な方法です。ただし、このオプションは必ずしも必須ではなく、システム管理者が常に利用できるわけでもありません。
アプリケーション
ユーザースペースアプリケーションとは、ユーザーが起動することができるすべてのプログラムのことです。通常、このようなアプリケーションは、ユーザー、スクリプト、または自動タスクユーティリティーが、これらのアプリケーションを起動したときにのみ使用されます。
このようなユーザースペースのアプリケーションが更新されたら、システム上のアプリケーションのインスタンスをすべて停止し、プログラムを再度起動して更新されたバージョンを使用します。
カーネル
カーネルは、Red Hat Enterprise Linux 7 オペレーティングシステムの中核となるソフトウェアコンポーネントです。メモリー、プロセッサー、周辺機器へのアクセスを管理し、すべてのタスクをスケジューリングします。
カーネルはその中心的なロールを担っているため、コンピューターを再起動せずにカーネルを再起動することはできません。そのため、システムを再起動するまで、更新されたバージョンのカーネルを使用することはできません。
KVM
qemu-kvm および libvirt のパッケージが更新されると、すべてのゲスト仮想マシンを停止して、関連の仮想化モジュールを再読み込みし (またはホストシステムを再起動し)、仮想マシンを再起動する必要があります。
lsmod コマンドを使用して、kvm、kvm-intel、または kvm -amd からのモジュールが読み込まれます。次に、modprobe -r コマンドを使用して modprobe -a コマンドを削除してから、影響を受けるモジュールを再読み込みします。以下に例を示します。
~]# lsmod | grep kvm
kvm_intel             143031  0
kvm                   460181  1 kvm_intel
~]# modprobe -r kvm-intel
~]# modprobe -r kvm
~]# modprobe -a kvm kvm-intel
共有ライブラリー
共有ライブラリーは、多くのアプリケーションやサービスで使用される glibc などのコードの単位です。共有ライブラリーを利用するアプリケーションは、通常、アプリケーションの初期化時に共有コードをロードするため、更新されたライブラリーを利用するアプリケーションはすべて、一旦停止して再スタートする必要があります。
実行中のどのアプリケーションが特定のライブラリーにリンクするかを確認するには、lsof コマンドを使用します。
lsof library
たとえば、実行中のアプリケーションが libwrap.so.0 ライブラリーにリンクするものを確認するには、以下を入力します。
~]# lsof /lib64/libwrap.so.0
COMMAND     PID USER  FD   TYPE DEVICE SIZE/OFF     NODE NAME
pulseaudi 12363 test mem    REG  253,0    42520 34121785 /usr/lib64/libwrap.so.0.7.6
gnome-set 12365 test mem    REG  253,0    42520 34121785 /usr/lib64/libwrap.so.0.7.6
gnome-she 12454 test mem    REG  253,0    42520 34121785 /usr/lib64/libwrap.so.0.7.6
このコマンドは、ホストアクセス制御に TCP ラッパーを使用する実行中のすべてのプログラムの一覧を返します。したがって、tcp_wrappers パッケージの更新時に一覧表示されるプログラムをすべて停止し、再起動する必要があります。
systemd サービス
systemd サービスは通常ブートプロセス中に起動する永続的なサーバープログラムです。systemd サービスの例としては、sshd または vsftpd などがあります。
これらのプログラムは通常、マシンが実行されている限りメモリーに保持されるため、更新された各 systemd サービスは、パッケージがアップグレードされた後に停止して再起動する必要があります。これは、systemctl コマンドを使用して、root ユーザーとして実行できます。
systemctl restart service_name
service_name を、sshd など、再起動するサービスの名前に置き換えます。
他のソフトウェア
下のアプリケーションを正しく更新するには、以下のリンク先のリソースに記載されている手順に従ってください。