第 3章. セキュリティの更新

セキュリティの脆弱性が発見された場合、セキュリティ上の危険を最小限にするために、 影響を受けるソフトウェアを更新する必要があります。 そのソフトウェアが Red Hat Enterprise Linux 製品に入っているパッケージの一部で、 現在サポートされている場合、Red Hat, Inc. からできる限り早急に脆弱性を修正する更新パッケージを リリースすることが約束されています。 多くの場合、一定のセキュリティ不正アクセスに関する告知にはパッチ(または問題を解決するソースコード) が付いています。 このパッチを Red Hat Enterprise Linux のそのパッケージに適用します。 パッチは Red Hat 品質保証チームによって検証され、エラータ更新としてリリースされています。 もしも、告知にパッチが付いていない場合は、 Red Hat の開発者がそのパッケージのメインテナーと共に問題の解決にあたります。 問題解決後、パッケージを検証して、エラータ更新としてリリースします。

システムで使用しているソフトウェア用のセキュリティエラータがリリースされた場合、 影響を受けるパッケージをできるだけ早く更新し、 システムが攻撃を受けやすくなる期間を最小限にすることを強くおすすめします。

3.1. パッケージを更新する

システムのソフトウェアを更新する場合は、 信頼できるソースから更新をダウンロードすることが重要です。 攻撃者は簡単に、問題を解決するはずのパッケージと同じバージョン番号を使い しかしこれに別のセキュリティ不正アクセスを付けてパッケージを構築し直し、 インターネットでリリースすることができます。 こうした事態が発生した場合、 オリジナルのRPMに対してファイルを検証するなどのセキュリティ手段では不正アクセスは検知されません。 従って、Red Hat, Inc. などの信頼できるソースからのみRPMをダウンロードし、 パッケージの署名を確認してその健全性を確かめることが非常に重要となります。

Red Hat のセキュリティエラータ更新には2通りの取得方法があります。

  1. Red Hat Network からのダウンロード

  2. Red Hat のエラータウェブサイトからダウンロード

3.1.1. Red Hat Network を利用

Red Hat Network ならほとんどの更新処理を自動化することができます。 ご使用のシステムに必要なRPMパッケージを判定して、 安全なリポジトリからダウンロードしてきます。 RPM署名を検証し、改変されていないか確認、 それから更新します。 パッケージのインストールはすぐに行なうこともできますが、 一定の時間をおいてから行なうよう予定組みすることもできます。

Red Hat Network では更新をしたいマシンはそれぞれシステムプロフィールを作成する必要があります。 システムプロフィールにはシステムに関するハードウェアとソフトウェアの情報が 含まれます。 この情報は機密扱いとされ他の人に渡ることはありません。 それぞれのシステムに適用すべきエラータ更新を判定する目的のためだけに使用されます。 この情報がないと Red Hat Network は特定システムに更新が必要かどうかを判定することができません。 セキュリティエラータが(または、いずれの種類のエラータでも)リリースされた場合、 Red Hat Network は、エラータの詳細及び影響を受けるシステムの一覧を 通知する電子メールを送信します。 更新を適用するには、Red Hat 更新 エージェントを使用するか、 ウェブサイト、http://rhn.redhat.comからそのパッケージを更新するようスケジュールに入れます。

ティップヒント
 

Red Hat Enterprise Linux にはRed Hat Network 通知ツールが入っています。 これは便利なパネルアイコンで、Red Hat Enterprise Linux システム用の更新があるときは視覚的な警告を表示してくれます。 アプレットについての詳細は次のURLを参照してください。 http://rhn.redhat.com/help/basic/applet.html

Red Hat Network の利点に関する詳細は、 http://www.redhat.com/docs/manuals/RHNetwork/Red Hat Network Reference Guideを参照するか、 http://rhn.redhat.com でご覧ください。

誓要項目重要
 

セキュリティエラータをインストールする前に、 必ず、エラータ報告に特別な指示が記載されていないかどうかよくお読みください。 指示がある場合には、それに従ってインストールを実行してください。 エラータ更新による変更の適用についての全般的な解説は、 項3.1.3 を参照してください。

3.1.2. Red Hat エラータウェブサイトを使用

セキュリティエラータ報告がリリースされると、Red Hat のエラータウェブサイト、 http://www.redhat.com/apps/support/errata/で公布されます。 このページからご使用のシステムの製品とバージョンを選択して、 ページの上部にあるsecurityを選択すると、 Red Hat Enterprise Linux セキュリティアドバイザリーのみを表示します。 アドバイザリー概要のどれかがシステムで使用しているパッケージについて記述している場合は、 その概要をクリックすると詳細が見られます。

詳細ページには、 セキュリティ不正アクセスについての解説と、セキュリティの欠陥を修正するパッケージ更新と同時に行なう必要がある特別の指示について記載されています。

更新されたパッケージをダウンロードするには、パッケージ名をクリックしてハードドライブに保存します。 /tmp/updatesなどのような新しいディレクトリを作成して、 ダウンロードしたすべてのパッケージをそこへ保存することを強くおすすめします。

すべてのRed Hat Enterprise Linux パッケージは Red Hat, Inc. の GPG 鍵で署名されています。 Red Hat Enterprise Linux の RPM ユーティリティは、 インストール前に自動的に RPM のGPG 署名の検証を試みます。 Red Hat, Inc. の GPG 鍵をインストールしていない場合は、 Red Hat Enterprise Linux インストール CD-ROM などからの安全で静的な場所からインストールしてください。

CD-ROM が /mnt/cdrom にマウントされていると仮定して、 次のコマンドを使いキーリングにインポートします。

rpm --import /mnt/cdrom/RPM-GPG-KEY

RPM検証用としてインストールされたすべての鍵の一覧を表示するには、 次のコマンドを実行します。

rpm -qa gpg-pubkey*

Red Hat, Inc. 鍵なら、出力は以下のようになります。

gpg-pubkey-db42a60e-37ea5438

特定の鍵についての詳細を表示するには、rpm -qiコマンドを入力、 その後に前のコマンドからの出力をつけます。

rpm -qi gpg-pubkey-db42a60e-37ea5438

RPM をインストールする前に、RPMファイルの署名の検証を行なうことは極めて重要なことです。 これにより Red Hat, Inc. のパッケージリリースに改変が加えられていないことを確認します。 ダウンロードしたパッケージすべてを一度に検証するには、次のコマンドを発行します。

rpm -K /tmp/updates/*.rpm

各パッケージごとに、 GPG 鍵が問題無く検証されると、 コマンドはgpg OK を返してきます。

GPG 鍵の検証とエラータ報告に関連するすべてのパッケージのダウンロードを終了したら、 シェルプロンプトでルートとしてこれらのパッケージをインストールします。

次のコマンドを発行すればほとんどのパッケージを安全にインストールすることができます (カーネルパッケージを除く)。

rpm -Uvh /tmp/updates/*.rpm

カーネルパッケージには次のコマンドの使用をおすすめします。

rpm -ivh /tmp/updates/<kernel-package>

上記の例にある<kernel-package>の部分には、 カーネルPRMの名前を入れてください。

新しいカーネルを使用してマシンが安全にリブートされたら、 次のコマンドを使用して古いカーネルを削除することができます。

rpm -e <old-kernel-package>

上記の例にある<old-kernel-package>は、 古いカーネルRPMの名前を入れてください。

注意注記
 

古いカーネルを削除する必要性はありません。

誓要項目重要
 

セキュリティエラータをインストールする前に、 必ず、エラータ報告に特別な指示が記載されていないかどうかよくお読みください。 指示がある場合には、それに従ってインストールを実行してください。 エラータ更新による変更の適用についての全般的な解説は、 項3.1.3 を参照してください。

3.1.3. 変更を適用する

Red Hat Network のエラータウェブサイトまたは Red Hat のエラータウェブサイトからセキュリティエラータを ダウンロードしてインストールしたら、 古いソフトウェアの使用を中止し、新しいソフトウェアの使用を開始することが大切です。 どのようにするかは更新したソフトウェアの種類によります。 以下の一覧では、ソフトウェアの全般カテゴリを項目別に別け、 パッケージアップグレード後の更新バージョンの使用方法について説明します。

注意注記
 

全般的には、 ソフトウェアパッケージの最新バージョンが使用されていることを確認するには、 システムをリブートするのが一番確実な方法です。 しかし、システム管理者の場合、常にこの方法がとれるとは限りません。

アプリケーション

ユーザースペースのアプリケーションはシステムのユーザーが開始できるすべてのプログラムです。 一般的に、このようなアプリケーションはユーザー、スクリプト、 自動化タスクユーティリティなどによって起動されたときのみ使用され、 持続し続けるものではありません。

こうしたユーザースペースのアプリケーションを更新したら、 システムのアプリケーションすべてのインスタンスを中止し、 もう一度そのプログラムを起動し直し更新したバージョンを使用します。

カーネル

カーネルは Red Hat Enterprise Linux オペレーティングシステムの核となるソフトウェアコンポーネントです。 カーネルはメモリ、プロセッサ、周辺機器などへのアクセスを管理する他、 すべてのタスクをスケジュールします。

中心的な役割を果たすため、カーネルはコンピュータを停止せずには再スタートできません。 したがって、カーネルの更新バージョンはシステムがリブートするまで使用できません。

共有ライブラリ

共有ライブラリ はglibcなどのコードのユニットで、 複数のアプリケーションやサービスによって使用されます。 共有ライブラリ を利用しているアプリケーションは、 一般的に、初期化されたとき共有コードを読み込むので、 更新したライブラリを使用するアプリケーションはすべて停止して起動し直す必要があります。

特定ライブラリに対してリンクする実行中のアプリケーションを見つけるには、 次の例のように、lsof コマンドを使用します。

lsof /usr/lib/libwrap.so*

このコマンドは、 ホストアクセス制御用 TCP ラッパーを使用するプログラムで稼働中のプログラム一覧を返してきます。 従って、tcp_wrappersパッケージを更新した場合には、これでリストアップされたプログラムはすべて停止して再起動し直す必要があります。

SysV サービス

SysV サービスは、ブートプロセスのあいだ起動される持続的サーバープログラムです。 SysV サービスの例としては、sshdvsftpdxinetdなどがあります。

こうしたプログラムは、たいていメモリ内でマシンがブートしているあいだずっと持続しているため、 パッケージをアップグレードしたら各更新 SysV サービスは停止して、再起動する必要があります。 これはサービス設定ツールで行なうか、 シェルプロンプトでルートとしてログインして、 次のように/sbin/serviceコマンドを発行します。

/sbin/service <service-name> restart

上記の例にある<service-name>の部分は、 sshdなどのサービス名を入れてください。

サービス設定ツールについての詳細は、 Red Hat Enterprise Linux システム管理ガイドにあるサービスへのアクセスの制御の章を参照してください。l

xinetd サービス

xinetd スーパーサービスに制御されているサービスは、 アクティブな接続があるときのみ実行します。 xinetd に制御されているサービスの例としては、 Telnet、IMAP、POP3 などがあります。

こうしたサービスの新規インスタンスは、新しいリクエストを受信する度にxinetd で起動されるため、 アップグレード後の接続は更新されたソフトウェアで扱われます。 しかし、xinetd制御のサービスをアップグレードするときに アクティブな接続があった場合は、古いバージョンで扱われます。

xinetd制御の特定サービスの古いインスタンスを停止するには、 サービスのパッケージをアップグレードしたら、現在実行中のすべてのプロセスを停止します。最初に、psコマンドを使用してプロセスが実行中であるか確認します。 それから、そのサービスの最新インスタンスを停止するためkillコマンド か killallコマンドを使用します。

例えば、セキュリティエラータのimapパッケージがリリースされた場合、 パッケージをアップグレードしたら、シェルプロンプトにルートとして次のコマンドを入力します。

ps -aux | grep imap

このコマンドはすべてのアクティブなIMAPセッションを返してきます。 これから、個々のセッションを次のコマンドを発行して終了できます。

kill -9 <PID>

上記の例にある<PID>の部分には、 IMAPセッションのプロセスID番号を入れてください。

すべてのアクティブなIMAPセッションを終了するには、次のコマンドを発行します。

killall imapd

xinetdについての全般情報は、 Red Hat Enterprise Linux リファレンスガイドにある TCP ラッパーとxinetdの章を参照してください。