Solaris のシステム管理 (セキュリティサービス)

第 29 章 Solaris 監査の計画

この章では、インストールした Solaris に対して監査サービスを設定する方法について説明します。特に、監査サービスを有効にする前に、考慮する必要のある問題について説明します。この章の内容は次のとおりです。

監査の概要は、第 28 章Solaris 監査 (概要)を参照してください。ご使用のシステムで監査を設定する手順については、第 30 章Solaris 監査の管理 (作業)を参照してください。参照情報については、第 31 章Solaris 監査 (参照)を参照してください。

Solaris 監査の計画 (作業マップ)

次の作業マップは、ディスク容量および記録するイベントの計画に必要とされる主要な作業を示しています。

作業 

参照先 

非大域ゾーンの監査計画を決定します 

「ゾーン内の監査の計画方法」

監査トレールの記憶領域容量を計画します 

「監査レコード用の記憶領域を計画する方法」

監査対象者と監査対象イベントを決定します 

「監査対象者と監査対象イベントの計画方法」

Solaris 監査の計画 (作業)

監査する動作の種類を適切に選択し、有用な監査情報を収集することが望まれます。監査ファイルはすぐに大きくなり、空き領域がなくなる可能性があるため、十分なディスク容量を割り当てる必要があります。監査対象者と監査対象も注意して計画する必要があります。

Procedureゾーン内の監査の計画方法

システムでゾーンが実装されている場合、監査を構成する方法が 2 つあります。

トレードオフについては、「ゾーンを含むシステムでの監査」を参照してください。

  1. 次のいずれかの方法を選択します。

    • オプション 1 - すべてのゾーンに対して単一の監査サービスを構成します。

      すべてのゾーンを同様に監査する場合、単一イメージの監査トレールが作成される可能性があります。単一イメージの監査トレールが作成されるのは、システム上のすべてのゾーンが 1 つの管理ドメインの一部になっている場合です。その場合、すべてのゾーン内のレコードが同一の設定に基づいて事前選択されるため、監査レコードの比較が容易に行えます。

      この構成では、すべてのゾーンが 1 つのシステムの一部として扱われます。大域ゾーンがシステム上で唯一の監査デーモンを実行して、すべてのゾーンに対して監査ログを収集します。監査構成ファイルのカスタマイズを大域ゾーン内でのみ行ったあと、それらの監査構成ファイルをすべての非大域ゾーンにコピーします。

      1. audit_control ファイルを大域ゾーンからすべての非大域ゾーンにコピーします。

      2. すべてのゾーンで同じ audit_user データベースを使用します。

        audit_user データベースは、ローカルファイルでも、共有されたネームサービスから取得してもかまいません。

      3. ゾーンに基づいて監査レコードを選択できるようにします。

        ゾーン名を監査レコードの一部として含めるには、大域ゾーンで zonename ポリシーを設定します。次に、auditreduce コマンドで、監査証跡からゾーンに基づいて監査イベントを選択できます。例については、auditreduce(1M) のマニュアルページを参照してください。

      単一イメージ監査証跡を計画するには、「監査対象者と監査対象イベントの計画方法」を参照してください。最初の手順から始めます。また、大域ゾーン管理者は、「監査レコード用の記憶領域を計画する方法」の説明に従って記憶領域を確保する必要もあります。

    • オプション 2 - ゾーンごとに監査サービスを 1 つずつ構成できます。

      ゾーンごとにネームサービスファイルが異なる場合や、ゾーン管理者が自身のゾーン内の監査を制御しようとする場合には、ゾーンごとの監査の構成を選択します。

      • ゾーンごとの監査を構成する場合は、大域ゾーンに監査を構成する必要があります。大域ゾーンで perzone 監査ポリシーを設定します。監査ポリシーを設定するには、「ゾーンごとの監査を構成する方法」を参照してください。


        注 –

        ネームサービスファイルが非大域ゾーンでカスタマイズされ、perzone ポリシーが設定されていない場合は、使用可能なレコードの選択に監査ツールを注意して使用する必要があります。あるゾーン内のユーザー ID は、異なるゾーン内の同じ ID とは異なるユーザーを指している可能性があります。


      • 発生元のゾーンを追跡できるレコードを生成するには、大域ゾーンで zonename 監査ポリシーを設定します。大域ゾーン内で、zonename を使用して auditreduce コマンドを実行します。次に、zonename ゾーン内で、auditreduce の出力に対して praudit コマンドを実行します。

      • 各ゾーン管理者がゾーンの監査ファイルを構成します。

        非大域ゾーン管理者は、perzoneahlt 以外のすべてのポリシーオプションを設定できます。

      • 各ゾーン管理者はゾーン内で監査を有効化または無効化できます。

      すべてのゾーン内の監査構成ファイルをカスタマイズするには、「監査対象者と監査対象イベントの計画方法」を参照して、すべてのゾーン用に計画します。最初の手順は省略できます。また、各ゾーン管理者は、「監査レコード用の記憶領域を計画する方法」の説明に従って各ゾーンの記憶領域を確保する必要もあります。

Procedure監査レコード用の記憶領域を計画する方法

監査トレールには専用のファイル領域が必要です。監査ファイル用の専用ファイル領域は、使用可能でセキュリティー保護されている必要があります。各システムには、監査ファイル用に構成されたいくつかの監査ディレクトリが必要です。システム上で監査を有効にする前に、最初に監査ディレクトリの構成方法を決定する必要があります。次の手順は、監査トレール記憶領域を計画するときに、解決する必要のある問題を扱っています。

始める前に

非大域ゾーンを実装している場合は、この手順を行う前に 「ゾーン内の監査の計画方法」の手順を完了してください。

  1. サイトで必要な監査の程度を決定します。

    サイトのセキュリティー上の必要性を考慮して、監査トレールに使用できるディスク容量を決定します。

    サイトのセキュリティーを確保しながら領域要件を削減する方法と、監査記憶領域を設定する方法については、「監査コストの制御」「効率的な監査」を参照してください。

  2. 監査対象のシステムを決定します。

    これらのシステム上で、少なくとも 1 つのローカル監査ディレクトリに 容量を割り当てます。監査ディレクトリを指定する方法は、例 30–3 を参照してください。

  3. 監査ファイルを格納するシステムを決定します。

    一次および二次監査ディレクトリを保持するサーバーを決定します。監査ディレクトリ用のディスクの構成例は、「監査ファイルのパーティションの作成方法」を参照してください。

  4. 監査ディレクトリの名前をつけます。

    使用するすべての監査ディレクトリの一覧を作成します。命名ガイドラインについては、「監査証跡の格納」およびauditreduce コマンド」を参照してください。

  5. システムと監査ディレクトリの対応付けを決定します。

    システムと監査ディレクトリのマッピングを作成します。このマッピングにより、監査作業の負荷を分散します。図については、図 31–1図 31–2 を参照してください。

Procedure監査対象者と監査対象イベントの計画方法

始める前に

非大域ゾーンを実装している場合は、この手順を行う前に 「ゾーン内の監査の計画方法」の手順を完了してください。

  1. 単一システムイメージの監査トレールが必要かどうかを決定します。

    システムが単一の管理ドメイン内にある場合、単一システムイメージの監査トレールを作成できます。各システムが異なるネームサービスを使用している場合は、次の手順から始めます。すべてのシステムごとに計画の手順を完了する必要があります。

    単一システムイメージ監査トレールは監査対象のシステムを 1 つのマシンとして扱います。サイト用の単一システムイメージ監査トレールを作成するには、インストール内のすべてのシステムを次のように構成する必要があります。

    • 同一のネームサービスを使用する。

      監査レコードを解釈するには、auditreducepraudit の 2 つのコマンドを使用します。監査レコードを正しく解釈するためには、passwdhosts、および audit_user ファイルの整合性がとれている必要があります。

    • すべてのシステムに対して、同じ audit_warnaudit_eventaudit_class、および audit_startup ファイルを使用します。

    • 同一の audit_user データベースを使用します。このデータベースは、NIS や LDAP などのネームサービス内に存在していてもかまいません。

    • audit_control ファイル内の flagsnaflags、および plugin エントリを同じにします。

  2. 監査ポリシーを決定します。

    auditconfig -lspolicy コマンドを使用して、使用可能なポリシーオプションを表示します。デフォルトでは、cnt ポリシーだけが使用可能になっています。詳細は、手順 8 を参照してください。

    ポリシーオプションの働きについては、「監査ポリシーの決定」を参照してください。監査ポリシーを設定するには、「監査ポリシーを構成する方法」を参照してください。

  3. イベントからクラスへのマッピングを変更するかを決定します。

    多くの場合、デフォルトのマッピングをそのまま使用できます。ただし、新しいクラスの追加、クラス定義の変更、あるいは、特定のシステムコールのレコードが役に立たないという判断をした場合は、イベントを別のクラスに移動する必要がある場合もあります。

    例は、「監査イベントの所属先クラスの変更方法」を参照してください。

  4. 事前選択する監査クラスを決定します。

    監査クラスの追加やデフォルトクラスの変更は、監査サービスを開始する前に行うことを推奨します。

    audit_control ファイル内の flagsnaflags、および plugin エントリの監査クラス値は、すべてのユーザーとプロセスに適用されます。事前選択されたクラスによって、監査クラスが監査されるのは成功の場合か、失敗の場合か、またはその両方の場合かが決定されます。

    監査クラスを事前選択するには、audit_control ファイルの変更方法」を参照してください。

  5. システム全体の事前選択された監査クラスのユーザー例外を決定します。

    一部のユーザーの監査をシステム全体の事前選択された監査クラスと異なる設定にするときは、audit_user データベース内の各ユーザーのエントリを変更します。

    例は、「ユーザーの監査特性の変更方法」を参照してください。

  6. 最小空きディスク容量を決定します。

    監査ファイルシステム上のディスク容量が minfree の割合を下回ると、auditd デーモンは次に利用できる監査ディレクトリに切り替えます。デーモンは、弱い制限値を超えたことを示す警告を送信します。

    最小空きディスク容量を設定するには、例 30–4 を参照してください。

  7. audit_warn 電子メールのエイリアスの管理方法を決定します。

    audit_warn スクリプトは、監査システムが管理上の注意を要求する状況を通知する必要があるときに実行されます。デフォルトでは、audit_warn スクリプトは、audit_warn のエイリアスに電子メールを送信し、コンソールにメッセージを送信します。

    エイリアスを設定するには、audit_warn 電子メールエイリアスの構成方法」を参照してください。

  8. すべての監査ディレクトリがいっぱいになったときの動作を決定します。

    デフォルトでは、監査トレールのオーバーフローが発生しても、システムは引き続き動作します。システムは破棄された監査レコードを数えますが、イベントを記録しません。セキュリティーをより向上させるためには、cnt ポリシーを無効にして、ahlt ポリシーを有効にします。ahlt ポリシーは、非同期イベントが監査キューに配置できない場合、システムを停止します。

    これらのポリシーオプションについては、「非同期イベントおよび同期イベントの監査ポリシー」を参照してください。これらのポリシーオプションを設定するには、例 30–16 を参照してください。

  9. 監査レコードを、バイナリ形式、syslog 形式、または両方の形式のいずれで収集するかを決定します。

    概要は、「監査ログ」を参照してください。

    例は、syslog 監査ログの構成方法」を参照してください。

監査ポリシーの決定

監査ポリシーを使用して、ローカルシステムの監査レコードの特性を決定します。監査ポリシーオプションは、起動スクリプトによって設定されます。監査サービスを有効にする bsmconv スクリプトによって、/etc/security/audit_startup スクリプトが作成されます。audit_startup スクリプトは、auditconfig コマンドを実行することで監査ポリシーを設定します。スクリプトの詳細は、audit_startup(1M) のマニュアルページを参照してください。

ほとんどの監査ポリシーオプションがデフォルトで無効になっているのは、記憶領域要件とシステム処理要求を最小限に抑えるためです。監査ポリシーオプションを動的に有効または無効にするには、auditconfig コマンドを使用します。監査ポリシーオプションを永続的に有効または無効にするには、audit_startup スクリプトを使用します。

次の表を参照して、1 つまたは複数の監査ポリシーオプションを有効にしたときに発生する追加のオーバーヘッドを考慮しながら、サイトの要件を決定してください。

表 29–1 監査ポリシーオプションの働き

ポリシー名 

説明 

ポリシーオプションを変更する理由 

ahlt

非同期イベントにだけ適用されます。無効にすると、監査レコードが生成されないまま、イベントを完了できます。 

有効にすると、監査ファイルシステムがいっぱいになるとシステムを停止します。監査キューの再配置、監査レコードの空き容量の確保、および再起動は管理者の介入が必要です。大域ゾーンでだけ有効にできます。ポリシーはすべてのゾーンに影響します。 

セキュリティーよりシステムの可用性が重要な場合は、無効にします。 

セキュリティーを最優先する場合は、有効にします。 

arge

無効にすると、実行されたプログラムの環境変数が exec 監査レコードから除外されます。

有効にすると、実行されたプログラムの環境変数が exec 監査レコードに追加されます。監査レコードには、より詳細な情報が記録されます。

無効にすると、収集される情報が大幅に少なくなります。 

このオプションは、少数のユーザーを監査するときに有効にします。このオプションは、exec プログラムで使用される環境変数に問題があるときにも有用です。

argv

無効にすると、実行されたプログラムの引数が exec 監査レコードから除外されます。

有効にすると、実行されたプログラムの引数が exec 監査レコードに追加されます。監査レコードには、より詳細な情報が記録されます。

無効にすると、収集される情報が大幅に少なくなります。 

このオプションは、少数のユーザーを監査するときに有効にします。このオプションは、exec プログラムが正常に動作しないことがはっきりしているときにも有用です。

cnt

無効にすると、ユーザーまたはアプリケーションの実行がブロックされます。このブロックが発生するのは、空きディスク容量の不足により監査トレールに監査レコードが追加できない場合です。 

有効にすると、監査レコードが生成されないまま、イベントを完了できます。生成されなかった監査レコードのカウントは行われます。 

セキュリティーを最優先する場合は、無効にします。 

セキュリティーよりシステムの可用性が重要な場合は、有効にします。 

group

無効にすると、グループの一覧が監査レコードに追加されません。 

有効にすると、グループの一覧が特別なトークンとしてすべての監査レコードに追加されます。

通常は無効にしてもサイトのセキュリティー要件は満たします。 

どのグループが監査イベントを生成しているかを監査する必要があるときは、有効にします。 

path

無効にすると、1 つのシステムコールで使用されたパスが、あっても 1 つだけ監査レコードに記録されます。 

有効にすると、監査イベントで使用されたすべてのパスが、すべての監査レコードに記録されます。 

無効にすると、監査レコードにパスが、あっても 1 つだけ記録されます。 

有効にすると、1 つのシステムコールで使用された各ファイル名またはパスが、監査レコードに path トークンとして記録されます。

perzone

無効にすると、システムの単一の監査構成を保守します。大域ゾーン内で 1 つのデーモンが実行されます。zonename 監査トークンを事前選択すると、非大域ゾーンの監査イベントは、監査レコード内に置かれます。

有効にすると、各ゾーンの監査構成、監査キュー、および監査ログを別々に保守します。単独バージョンの監査デーモンが各ゾーンで実行されます。大域ゾーンでだけ有効にできます。 

各ゾーンごとに監査ログ、キュー、およびデーモンを保守する理由が特にない場合は、無効にすると便利です。 

単に zonename 監査トークンを事前選択することではシステムを効果的に監視できない場合は、有効にすると便利です。

public

無効にすると、ファイルの読み取りが事前に選択されている場合に、公開オブジェクトの読み取り専用イベントが監査トレールに追加されなくなります。読み取り専用イベントを含む監査クラスとしては、frfa、および cl があります。

有効にすると、適切な監査フラグが事前に選択されている場合、公開オブジェクトの読み取り専用監査イベントのすべてが記録されます。

通常は無効にしてもサイトのセキュリティー要件は満たします。 

このオプションを有効にするのはまれです。 

seq

無効にすると、すべての監査レコードに順序番号が追加されません。 

有効にすると、すべての監査レコードに順序番号が追加されます。順序番号は sequence トークンに格納されます。

監査が問題なく動作しているときは、無効にしても構いません。 

cnt ポリシーが有効なときは、有効にする意味があります。seq ポリシーにより、いつデータが破棄されるかを決定できます。

trail

無効にすると、trailer トークンが監査レコードに追加されません。

有効にすると、trailer トークンがすべての監査レコードに追加されます。

無効にすると、作成される監査レコードが小さくなります。 

有効にすると、各監査レコードの最後に trailer トークンが常に付加されます。trailer トークンは、多くの場合 sequence トークンと一緒に使用されます。trailer トークンを使用すると、監査レコードの再同期が容易で正確になります。

zonename

無効にすると、zonename トークンが監査レコードに含まれません。

有効にすると、zonename トークンが非大域ゾーンからのすべての監査レコードに含まれます。

ゾーン間で監査動作を比較する必要がない場合は、無効にすると便利です。 

ゾーン間で監査動作を特定し比較する場合は、有効にすると便利です。 

非同期イベントおよび同期イベントの監査ポリシー

ahlt ポリシーおよび cnt ポリシーは、監査キューがいっぱいで追加のイベントを受け入れられない場合の動作を管理します。ポリシーは独立して関連しています。ポリシーの組み合わせには、それぞれ次のような効果があります。

監査コストの制御

監査処理によってシステムリソースが消費されるため、どの程度詳しく記録するかを制御する必要があります。監査の対象を決めるときには、監査に伴う次の 3 つのコストを考慮してください。

監査データの処理時間の増大に伴うコスト

処理時間の増大に伴うコストは、監査に関連する 3 つのコストの中ではもっとも重要性の低い問題です。第 1 に、通常は、イメージ処理や複雑な計算処理などの計算集中型のタスクの実行中には、監査処理が発生しないからです。その他の理由として、単一ユーザーシステムのコストが通常は無視できるほど小さいことが挙げられます。

監査データの分析に伴うコスト

分析に伴うコストは、収集される監査データの量にほぼ比例します。分析コストには、監査レコードをマージして検討するための時間が含まれます。コストにはまた、監査レコードをアーカイブし、それを安全な場所に保管するための時間も含まれます。

生成されるレコードの数が少ないほど、監査トレールの分析にかかる時間も短くなります。次の節、「監査データの格納に伴うコスト」「効率的な監査」では、効率的に監査を行う方法について説明します。効果的な監査では、収集するデータの量を削減しながら、サイトのセキュリティー目標を達成します。

監査データの格納に伴うコスト

記憶領域コストは、監査コストのうちでもっとも重要です。監査データの量は次の要素によって左右されます。

これらの要因はサイトごとに異なるため、監査データの格納用に前もって確保しておくディスク容量を決定できるような計算式はありません。次の情報を参考にしてください。

効率的な監査

次の方法により、組織のセキュリティー目標を達成する一方で、監査効率を高めることができます。