Trusted Solaris 管理の概要

第 6 章 監査の管理

この章では、Trusted Solaris 環境での監査について説明します。「監査」とは、ユーザーのアクティビティや、他のシステム上のイベントを取り出し、その情報を「監査トレール」と呼ばれる一連のファイルに格納して、サイトのセキュリティポリシーにかなったシステムアクティビティレポートを作成するプロセスです。万一セキュリティ違反が発生した場合は、監査記録を見れば、違反がどのように発生し、誰が関わっているかなどを特定することができます。監査プロセスの全詳細については、『Trusted Solaris の監査管理』を参照してください。

監査の計画と設定

サイトに適した監査を設定する前に次の作業を行います。

監査クラス

まず、監査の対象となるイベントを決定します。監査では、ユーザーアクションや、原因を特定できないイベント (割り込みなど、特定のユーザーが原因とは考えられないイベント) を取り出すことができます。ユーザーアクションについては、成功したトランザクションと失敗したトランザクションに分けることができます。監査イベントは、Trusted Solaris に定義されたクラスに編成されます。ファイルの監査クラスは、次のような一般領域に分類されます。

必要に応じて独自のクラスやイベントを作成したり、イベントとクラスの対応関係を再編成することもできます。そのほかのクラスが追跡するイベントには、プロセス操作、ネットワークイベント、ウィンドウ操作、IPC 操作、管理処理、ログイン、ログアウト、アプリケーション特有のイベント、ioctl システムコール、プログラムの実行、X サーバーの操作など、さまざまなイベントがあります。監査情報の記録には、かなりの容量が必要となるため、監査対象とするイベントは慎重に決定し、サイトのセキュリティポリシーに不可欠なイベントに対応したクラスだけを選択するようにします。

公開オブジェクト

監査情報の量を減らすには、特定のファイルとディレクトリを「公開オブジェクト」として指定するのが効果的です。公開オブジェクトは一般に読み取り専用の情報を保持し、通常のユーザーでは変更できないようになっています。また、セキュリティ上の制約がないため、オブジェクトにアクセスしたユーザーを追跡する必要はありません。システムクロックなどが公開オブジェクトの良い例です。公開オブジェクトであることを示す公開オブジェクトフラグを設定すれば、そのオブジェクトを指定する監査フラグがあっても無視されます。

監査情報の格納

監査には大量のディスク容量が必要になるため、情報の収集先は慎重に考えてください。

ネットワークに接続されていない個別のワークステーションを使用しているサイトでは、ワークステーションごとに監査レコード専用のディスクを用意するのが良いでしょう。専用ディスクには、次の 2 つの領域を設定する必要があります。

ワークステーションがネットワークに接続されている場合は、監査情報を収集する専用のサーバーを少なくとも 1 台、監査データの管理と分析専用のサーバーを 1 台設置する必要があります。

いずれの場合も、データの完全性を維持し、セキュリティ違反を防止するため、監査ファイルとディレクトリを MAC と DAC によって保護する必要があります。

監査構成ファイル

サイトで実施する監査の仕様は、/etc/security サブディレクトリにある次の構成ファイルに格納されます。

イベント番号、イベント名、監査クラスを識別する監査フラグなどが格納されます。ネットワークの監査を設定する場合は、各ワークステーションで同じ audit_useraudit_classaudit_event ファイルを使用する必要があります。

監査ツール

この節では、監査の管理に使用する主なユーティリティプログラムとスクリプトについて説明します。監査はシステムのインストール時に有効になっていますが、/etc/init.d/audit スクリプトと /etc/system ファイルを編集することによって無効にしたり、再度有効にすることができます。監査が有効になっている場合、監査デーモンは auditd コマンドで呼び出され、audit コマンドで停止します。ただし、監査レコードの記録が中断している間も、レコードの収集は続行されます。audit コマンドには、このほかにもデーモンを制御するための各種オプションがあります。audit_startup スクリプトを実行すると、システムの始動時に監査パラメータを構成できます。audit_warn スクリプトでは、監査障害が生じたときに発信する警告メッセージや処置を指定できます。praudit コマンドは監査レコードを表示したい場合に、auditreduce コマンドは監査トレールを 1 つにまとめて監査レコードを選択しやすくしたい場合に、auditstat は監査統計を表示したい場合に使用します。

audit

audit(1M) コマンドは、現在の監査デーモンを制御するためのインタフェースです。監査デーモン (auditd) は、audit_control ファイルの情報を使用して、監査トレールファイルの生成と配置場所を制御します。audit コマンドで、次の操作が可能です。

auditconfig

auditconfig(1M) コマンドは、カーネルの監査パラメータを取得、設定するためのコマンド行インタフェースを提供します。これには、監査ポリシーのさまざまな部分の設定が含まれます。

audit_startup

audit_startup(1M) スクリプトは、監査デーモンが起動する前に、監査サブシステムを初期化します。このスクリプトは、システムのデフォルトポリシーの設定や、イベントとクラスの対応関係の初期値をダウンロードするために使用する、一連の auditconfig コマンドで構成されています。セキュリティ管理者は、アプリケーションマネージャの「システム管理 (System_Admin)」フォルダを開いて、audit_startup を使用します。このスクリプトは、サイトでの必要に応じて構成できます。

audit_warn

audit_warn(1M) スクリプトは、監査デーモンから取得した警告およびエラーメッセージを処理します。問題点が検出されると、監査デーモンは適切な引数を使用して audit_warn を呼び出します。オプションの引数は、エラーの種類を指定するために使用します。audit_warn 状況が発生したときに通知を受けるユーザーのリストは、aliases(4) で audit_warn と呼ばれるメールエイリアスに定義します。

praudit

praudit(1M) コマンドは、監査トレールファイルの内容を、ユーザーが読める形式で出力します。

auditreduce

auditreduce(1M) コマンドを使用すると、1 台以上のコンピュータに格納された監査トレールファイルからレコードを選択したり、複数のレコードを 1 つにまとめる (併合する) ことができます。merge 機能によって、1 つ以上の入力監査トレールファイルの監査レコードが 1 つの出力ファイルに併合されます。select 機能では、レコードの内容に関連付けられた基準に沿って、監査レコードを選択できます。praudit コマンドで、mergeselect 機能をスクリプト内で組み合わせることによって、サイト用にカスタマイズされたレポートを作成することもできます。

auditstat

auditstat(1M) コマンドでは、処理された監査レコードの数、カーネルの監査モジュールが使用しているメモリ容量など、カーネルに関する監査統計を表示することができます。