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

第 22 章 BSM サービスの管理 (手順)

この章では、監査を組み込んだ Solaris 環境を設定および管理する手順について説明します。また、監査トレールおよびデバイス割り当ての管理方法についても説明します。この章では、次の作業マップについて説明します。

監査の概要については、第 20 章「BSM (概要)」を参照してください。計画時のヒントについては、第 21 章「監査の計画」を参照してください。

BSM サービスの管理 (作業マップ)

次の作業マップは、BSM サービスの管理に必要な主な作業の一覧です。

作業 

説明 

参照先 

監査プロセスの計画 

監査を構成する前に構成上の問題について考慮して判断する 

第 21 章「監査の計画」

監査ファイルの構成 

監査を必要とするイベント、クラス、およびユーザーを定義する 

監査ファイルの構成 (作業マップ)

監査プロセスの構成 

監査プロセスを利用できるように各ホストを構成する 

監査サービスの構成 (作業マップ)

監査レコードの管理 

監査データを組み合わせて分析する 

監査レコードの管理 (作業マップ)

デバイス割り当ての管理 

デバイス割り当てメカニズムを通して、アクセスするデバイスを定義する 

デバイス割り当ての管理 (作業)

監査ファイルの構成 (作業マップ)

ネットワーク上で監査プロセスを有効にする前に、監査構成ファイルを編集します。このあとに説明する手順の多くは、サービスの再開またはローカルシステムのリブートが必要です。監査構成ファイルの編集は、できるだけ BSM サービスを開始する前に完了してください。

次の表は、この節で説明する操作の一覧です。

作業 

説明 

参照先 

監査フラグの選択、audit_control 設定の変更

監査対象イベントを事前に選択する。audit_control ファイルに設定された値を変更する

監査フラグの選択方法

ユーザーの監査特性の変更 

システム全体の監査フラグ設定に対してユーザー固有の例外を設定する 

ユーザーの監査特性の変更方法

監査クラスの追加 

新しい監査クラスを定義する 

監査クラスの追加方法

イベントからクラスへの割り当ての変更 

特定のイベントが属するクラスを変更する 

監査イベントの所属先クラスの変更方法

監査イベントの追加 

新しいユーザーレベルのイベントをaudit_event ファイルに追加する

監査イベントの追加方法

監査フラグの選択方法

監査フラグは、/etc/security/audit_control ファイルに定義されます。監査フラグを使用して、監査ログに記録する監査レコードのクラスを選択します。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. (省略可能) audit_control ファイルのバックアップコピーを保存します。


    # cp /etc/security/audit_control /etc/security/audit_control.save
    
  3. audit_control ファイルに新しいエントリを追加します。

    各エントリの書式は次のとおりです。


    title:string
    
    title

    行の種類を定義する。dir:flags:minfree:、または naflags: を選択できる

    string

    この種類の行に関連付けるデータを指定する

  4. 監査デーモンを実行して、新しい audit_control ファイルを読み込みます。

    監査デーモンの内部に、読み込んだ情報が格納されます。新しい情報を使用するには、システムをリブートするか、次のコマンドを入力します。


    # audit -s
    

例 — 監査トレールファイルの位置を変更する

dir: で始まる行には、監査トレールファイルの格納に使用する監査ファイルシステムを定義します。この例では、監査トレールファイルの位置を 2 つ追加定義しています。


# cat /etc/security/audit_control
dir:/etc/security/audit/host.1/files
dir:/etc/security/audit/host.2/files
dir:/var/audit
flags:
minfree:10
naflags:lo

例 — すべてのユーザーに適用される監査フラグを変更する

audit_control ファイルの flags 行には、監査するイベントのクラスを定義します。このフラグは、ホスト上のすべてのユーザーに適用されます。クラスは空白を入れずにコンマで区切ります。この例では、すべてのユーザーを対象に lo クラスのイベントが監査されます。


# cat /etc/security/audit_control
dir:/var/audit
flags:lo
minfree:10
naflags:lo

例 — 警告に対するソフト制限値を変更する

audit_control ファイルの minfree 行には、すべての監査ファイルシステムの最小空き領域レベルを定義します。この例では、利用できるファイルシステムの領域が 10 % だけになったときに警告が発行されるように、ソフト制限値を設定しています。


# cat /etc/security/audit_control
dir:/var/audit
flags:
minfree:10
naflags:lo

例 — ユーザーに起因しないイベントの監査を変更する

audit_control ファイルの naflags: 行には、ホスト上のすべてのユーザーを対象に監査する、ユーザーに起因しないイベントのクラスを定義します。クラスは空白を入れずにコンマで区切ります。この例では、na イベントクラスが追加されます。


# cat /etc/security/audit_control
dir:/var/audit
flags:
minfree:10
naflags:lo,na

ユーザーの監査特性の変更方法

ユーザーごとの定義は、/etc/security/audit_user ファイルに格納されます。これらの定義は、audit_control ファイル内のフラグに対する例外です。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. (省略可能) audit_user ファイルのバックアップコピーを保存します。


    # cp /etc/security/audit_user /etc/security/audit_user.save
    
  3. audit_user ファイルに新しいエントリを追加します。

    各エントリの書式は次のとおりです。


    username:always:never
    
    username

    監査するユーザー名を選択する

    always

    常に監査する監査クラスの一覧を選択する

    never

    監査しない監査クラスの一覧を選択する

    複数のフラグを指定するには、監査クラスをコンマで区切ります。監査ファイルの詳細は、監査クラスと監査フラグを参照してください。

  4. 監査デーモンで新しいデータが使用できるようにします。

    新しいデータを使用するには、システムをリブートします。該当のユーザーをいったんログアウトさせてからログインし直させることもできます。

例 — 1 人のユーザーの監査を変更する

この例のエントリでは、ユーザー sue がログインクラス (lo) の任意のプログラムにアクセスすると、監査レコードが生成されます。


# grep sue /etc/security/audit_user
sue:lo:

例 — 監査管理ログインを作成する

ログインを監査対象としている場合にすべての監査パーティションがいっぱいになると、ユーザーがホストにログインできなくなる可能性があります。この状況を回避するために、監査を行わない特別なアカウントを設定できます。特別なアカウントは、監査パーティションがいっぱいになった場合でもホストにログインできるため、このようなパーティションの問題を解決することができます。この例では、アカウント auditadm を監査しないように定義します。


# grep auditadm /etc/security/audit_user
auditadmin:no:yes

注 –

監査管理アカウントの使用を許されたユーザーについては、別の方法で監視する必要があります。


監査クラスの追加方法

監査クラスは、/etc/security/audit_class ファイルに定義されます。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. (省略可能) audit_class ファイルのバックアップコピーを保存します。


    # cp /etc/security/audit_class /etc/security/audit_class.save
    
  3. audit_class ファイルに新しいエントリを追加します。

    各エントリの書式は次のとおりです。


    0xnumber:name:description
    
    0x

    number が 16 進であることを示す

    number

    一意の監査クラスマスクを定義する

    name

    監査クラスの 2 文字の名前を定義する

    description

    監査クラスの記述名を定義する

  4. BSM サービスで新しいデータが使用できるようにします。

    新しいデータを使用するには、システムをリブートするか、次のコマンドを入力します。


    # auditconfig -conf
    

例 — 新しい監査クラスを設定する

この例では、次のようなエントリを audit_class ファイルに追加します。このエントリによって、ta という名前の新しい監査クラスが作成されます。


0x01000000:ta:test application

監査イベントの所属先クラスの変更方法

イベントからクラスへの割り当ては、/etc/security/audit_event ファイル内に定義されています。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. (省略可能) audit_event ファイルのバックアップコピーを保存します。


    # cp /etc/security/audit_event /etc/security/audit_event.orig
    
  3. 特定のイベントの flag を変更して、そのイベントが属するクラスを変更します。

    各エントリの書式は次のとおりです。


    number:event:program:flag
    
    number

    監査イベント ID を定義する

    event

    監査イベントの名前を定義する

    program

    監査レコードの作成を開始するシステムコールまたはユーザーレベルのプログラム実行可能ファイルを定義する

    flag

    監査クラスの 2 文字の名前を定義する

  4. BSM サービスで新しいデータが使用できるようにします。

    新しいデータを使用するには、システムをリブートするか、次のコマンドを入力します。


    # auditconfig -conf
    # audit -s
    

例 — サイト固有の監査イベントの割り当てを作成する

この例では、新しいクラスを定義して、そのクラスにイベントを追加します。割り当てを使用するには、新しいクラスを audit_control ファイル内に記述してから、システムをリブートします。

  1. audit_class ファイルで、監視したい監査イベントのみを収集するため、サイト固有のクラスを定義します。


    0x00000800:sc:site class
  2. audit_event ファイルで、一連の監査イベントの所属先を新しいクラスに変更します。


    26:AUE_SETGROUPS:setgroups(2):sc
    27:AUE_SETPGRP:setpgrp(2):sc
    40:AUE_SETREUID:setreuid(2):sc
    41:AUE_SETREGID:setregid(2):sc
    214:AUE_SETEGID:setegid(2):sc
    215:AUE_SETEUID:seteuid(2):sc
  3. audit_controlファイルで新しいフラグを使用します。次のエントリは、ログインを監査するとともに、sc クラスに属するイベントのすべての正常な起動を監査します。


    flags:lo,+sc
  4. 新しい構成によってすべてのプロセスが確実に監査されるようにするには、システムをリブートします。または、次の一連のコマンドを使えば、そのマシンを使用する各ユーザーが正しく監査されるようになります。auid はユーザー ID です。


    # auditconfig -conf
    # audit -s
    # setumask auid lo,+sc
    

監査イベントの追加方法

監査イベントの定義は、/etc/security/audit_event ファイルに格納されます。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. (省略可能) audit_event ファイルのバックアップコピーを保存します。


    # cp /etc/security/audit_event /etc/security/audit_event.save
    
  3. audit_event ファイルに新しいエントリを追加します。

    各エントリの書式は次のとおりです。


    number:name:description:classes
    
    number

    一意の監査イベント番号を定義する。32767 以降の番号を指定する

    name

    一意の監査イベント名を定義する

    description

    監査イベントの説明を記述する。監査イベントのマニュアルページ名が含まれることが多い

    classes

    このイベントを含む監査クラスを選択する

  4. 監査デーモンで新しいデータが使用できるようにします。

    新しいデータを使用するには、システムをリブートするか、次のコマンドを入力します。


    # auditconfig -conf
    

例 — 新しい監査イベントを追加する

この例のエントリは、ローカルアプリケーションの新しい監査イベントを定義しています。


# grep localapp /etc/security/audit_event
32768:AUE_localapp:localapp(1):ta

監査サービスの構成 (作業マップ)

この節では、監査サービスを構成して有効にするために必要な作業について説明します。次の作業マップは、監査サービスの構成に必要な作業の一覧です。

作業 

説明 

参照先 

1. (省略可能) 監査構成ファイルの変更 

監査を必要とするイベント、クラス、およびユーザーを選択する 

監査ファイルの構成 (作業マップ)

2. 監査パーティションの作成 

監査ファイルのパーティションを作成する 

監査パーティションの作成方法

3. audit_warn 別名の作成

電子メール警告を送信するユーザーを定義する 

audit_warn 別名の構成方法

4. (省略可能) 監査ポリシーの変更 

追加の監査レコードや監査条件を定義する 

監査ポリシーを有効または無効にする方法

5. 監査の有効化 

監査を有効にする 

監査を有効にする方法

6. (省略可能) 監査の無効化 

監査を無効にする 

監査を無効にする方法

7. (省略可能) デバイス割り当ての開始 

より安全にアクセスできるリムーバブルメディアを選択する 

デバイス割り当ての管理 (作業)

監査パーティションの作成方法

次の手順では、監査ファイル用のパーティションの作成方法、および監査に対応するファイルシステムとディレクトリの作成方法について説明します。すでに空のパーティションがある場合、またはすでに空のファイルシステムをマウントしている場合は、必要に応じて手順を省略してください。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. 必要なディスク容量を決定します。

    ホストごとに 200M バイト以上を割り当てます。ただし、ディスク容量の要件は、実行する監査のボリュームによって異なります。つまり、ディスク容量の要件が割り当てる数値を超えることがあります。予備ディレクトリのパーティション領域も含めてください。

  3. 必要に応じて、監査パーティションを作成します。

    この手順は、サーバーのインストール時に実行するのが最も簡単です。サーバーにマウントされていないディスク上にパーティションを作成することもできます。パーティション作成方法の詳細については、『Solaris のシステム管理 (基本編)』の「UFS ファイルシステムの作成」を参照してください。


    # newfs /dev/rdsk/cwtxdysz
    

    /dev/rdsk/cwtxdysz は、パーティションの raw デバイス名です。

    ローカルホストを監査する場合は、予備の監査ディレクトリも作成します。

  4. 新しいパーティションのマウント先を作成します。


    # mkdir /var/audit/server-name.n
    

    server-name.n は、サーバー名と各パーティションの識別番号を結合したものです。この識別番号は省略できますが、多数の監査ディレクトリを作成する場合はこの番号を使用すると便利です。

  5. 新しいパーティションを自動的にマウントするエントリを追加します。

    /etc/vfstab ファイルに次のような行を追加します。


    /dev/dsk/cwtxdysz /dev/rdsk/cwtxdysz /var/audit/server-name.n   ufs  2  yes
  6. (省略可能) 各パーティションの最小空き容量のしきい値を削除します。

    デフォルトの構成を使用した場合、ディレクトリの 80% がいっぱいになった時点で警告が生成されます。このため、パーティション上に空き容量を予約する必要はありません。


    # tunefs -m 0 /var/audit/server-name.n
    
  7. 新しい監査パーティションをマウントします。


    # mount /var/audit/server-name.n
    
  8. 新しいパーティションに監査ディレクトリを作成します。


    # mkdir /var/audit/server-name.n/files
    
  9. マウント先と新しいディレクトリへのアクセス権を訂正します。


    # chmod -R 750 /var/audit/server-name.n/files
    
  10. (省略可能) ファイルサーバー上で、ほかのホストからアクセスできるファイルシステムを定義します。

    通常は、監査レコードを格納するために、ディスクファームをインストールします。監査ディレクトリを複数のシステムで使用する場合は、そのディレクトリを NFS サービスを通して共有する必要があります。/etc/dfs/dfstab ファイルに対して、次のようなエントリをディレクトリごとに追加します。


    share -F nfs /var/audit/server-name.n/files
  11. (省略可能) ファイルサーバー上で、NFS サービスを起動し直します。

    share コマンドまたは share コマンドセットをはじめて実行する場合、NFS デーモンが動作していないことがあります。次のコマンドでデーモンを終了し、再起動してください。NFS サービスの詳細については、『Solaris のシステム管理 (資源管理とネットワークサービス)』の「NFS サービスの設定」 を参照してください。


    # /etc/init.d/nfs.server stop
    # /etc/init.d/nfs.server start
    

例 — 予備の監査ディレクトリを作成する

監査サブシステムを実行するすべてのシステムには、利用できるファイルシステムがほかにない場合に使用するローカルファイルシステムが必要です。この例では、ファイルシステムが egret という名前のシステムに追加されます。このファイルシステムは、ローカルシステムだけで使用されるため、続いてファイルサーバーの手順は必要ありません。


# newfs /dev/rdsk/c0t2d0
# mkdir /var/audit/egret
# grep egret /etc/vfstab
/dev/dsk/c0t2d0s1  /dev/rdsk/c0t2d0s1  /var/audit/egret ufs  2  yes  -
# tunefs -m 0 /var/audit/egret
# mount /var/audit/egret
# mkdir /var/audit/egret/files
# chmod -R 750 /var/audit/egret/files

例 — 新しい監査パーティションを作成する

この例では、新しいファイルシステムが、2 つの新しいディスクに作成されます。この 2 つのディスクは、ネットワーク上のほかのシステムと共有します。


# newfs /dev/rdsk/c0t2d0
# newfs /dev/rdsk/c0t2d1
# mkdir /var/audit/egret.1
# mkdir /var/audit/egret.2
# grep egret /etc/vfstab
/dev/dsk/c0t2d0s1  /dev/rdsk/c0t2d0s1  /var/audit/egret.1 ufs  2  yes  -
/dev/dsk/c0t2d1s1  /dev/rdsk/c0t2d1s1  /var/audit/egret.2 ufs  2  yes  -
# tunefs -m 0 /var/audit/egret.1
# tunefs -m 0 /var/audit/egret.2
# mount /var/audit/egret.1
# mount /var/audit/egret.2
# mkdir /var/audit/egret.1/files
# mkdir /var/audit/egret.2/files
# chmod -R 750 /var/audit/egret.1/files /var/audit/egret.2/files
# grep egret /etc/dfs/dfstab
 share -F nfs /var/audit/egret.1/files
 share -F nfs /var/audit/egret.2/files
# /etc/init.d/nfs.server stop
# /etc/init.d/nfs.server start

audit_warn 別名の構成方法

audit_warn スクリプトは、audit_warn という別名に対してメールを生成します。このメールを有効な電子メールアドレスに送信するには、次のいずれかのオプションを行います。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. audit_warn メール別名を構成します。

    「オプション 1」 –

    audit_warn スクリプトで、audit_warn 別名をほかのメールアカウントに置き換えます。

    audit_warnroot アカウントに置き換えると、電子メールメッセージを送信する行は次のようになります。


    /usr/ucb/mail -s "$SUBJECT" root
    

    audit_warn スクリプト内の 10 行にこの変更を適用する必要があります。

    「オプション 2」 –

    audit_warn の電子メールをほかのメールアカウントにリダイレクトします。

    この場合、audit_warn 別名を適切なメール別名ファイルに追加します。別名の追加先として、ローカルの /etc/mail/aliases ファイル、名前空間の mail_aliases データベースのいずれかを選択します。root メールアカウントを audit_warn 別名のメンバーとして登録する場合、新しいエントリは次のようになります。


    audit_warn: root

監査ポリシーを有効または無効にする方法

監査ポリシーを使用して、ローカルホストの監査レコードの特性を決定します。デフォルトでは、すべての監査ポリシーが無効になっています。使用する監査ポリシーは、有効にする必要があります。各ポリシーについては、監査ポリシーを参照してください。

プログラムレベルで auditon() システムコールを行なって、現在の監査ポリシーを調査したり、有効または無効にしたりすることができます。また、auditconfig コマンドを実行して同じタスクを行うこともできます。また、監査ポリシーの変更内容を固定するために、audit_startup スクリプト内で auditconfig コマンドの監査ポリシーオプションを変更することも可能です。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. (省略可能) 既存の監査ポリシーを確認します。

    監査ポリシーを変更するときは、現在使用されているポリシーをすべて確認してください。次のコマンドを実行すると、有効なポリシーがすべて表示されます。


    # auditconfig -lspolicy
    
  3. 監査ポリシーを有効または無効にします。


    # auditconfig -setpolicy flagpolicyname
    
    flag

    flag+ を指定すると、ポリシーが有効になる。flag- を指定すると、ポリシーが無効になる

    policyname

    有効または無効にするポリシーを選択する

    このポリシーの設定は、次回ブートするまで、または auditconfig -setpolicy コマンドを使ってポリシーを変更するまで持続します。

例 — cnt ポリシーを設定する

cnt ポリシーを設定すると、監査パーティションがいっぱいになっても、プロセスはブロックされません。パーティションがいっぱいになるとレコードは破棄されますが、システムは機能し続けます。cnt ポリシーを有効にすると、破棄された監査レコードのカウント数が記録されます。セキュリティを重視する場合は、cnt ポリシーは設定しないでください。ファイルシステムがいっぱいになると、イベントが記録されないことがあるためです。

次のコマンドを実行すると、cnt ポリシーが有効になります。


# auditconfig -setpolicy +cnt

リブートしてもポリシーの設定を維持させるには、auditconfig -setpolicy +cnt コマンドを audit_startup ファイルに追加する必要があります。

監査を有効にする方法

この操作では、監査サービスが開始されます。監査サービスが構成されている場合は、ホストをリブートしたときにもサービスが開始します。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. システムをシングルユーザーモードにします。


    # /etc/telinit 1
    

    詳細は、telinit(1M) のマニュアルページを参照してください。

  3. スクリプトを実行して、システムが監査を実行するように構成します。

    /etc/security ディレクトリに移動し、bsmconv スクリプトを実行します。このスクリプトは、リブート後に標準 Solaris マシンが監査を実行するよう設定します。bsmconv(1M) のマニュアルページを参照してください。


    # cd /etc/security
    # ./bsmconv
    
  4. システムをマルチユーザーモードにします。


    # /etc/telinit 6
    

    システムがマルチユーザーモードに移行すると、起動ファイル /etc/security/audit_startup によって監査デーモンが自動的に動作します。

監査を無効にする方法

監査が不要になった時点で、bsmunconv コマンドを実行して、監査サブシステムを無効にすることができます。bsmconv(1M) のマニュアルページを参照してください。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. システムをシングルユーザーモードにします。


    # /etc/telinit 1
    

    詳細は、telinit(1M) のマニュアルページを参照してください。

  3. スクリプトを実行して、監査を無効にします。

    /etc/security ディレクトリに移動し、bsmunconv スクリプトを実行します。


    # cd /etc/security
    # ./bsmunconv
    

  4. システムをマルチユーザーモードにします。


    # /etc/telinit 6
    

監査レコードの管理 (作業マップ)

監査トレールを管理することによって、ネットワーク上のユーザーの動作を監視することができます。監査プロセスを行うと、大量のデータが生成される可能性があります。次の手順では、さまざまな監査データを使用して作業を行う方法について説明します。

次の表は、この節で説明する操作の一覧です。

作業 

説明 

参照先 

監査レコードの書式の表示 

特定の監査イベントのトークンの順番を表示する 

監査レコードの書式の表示方法

監査レコードの表示 

監査レコードをユーザーが読める書式で表示する 

監査レコードの表示方法

監査レコードのマージ 

複数のマシンの監査ファイルを 1 つの監査トレールに結合する 

監査レコードのマージ方法

監査トレールのオーバーフローの防止 

監査ファイルシステムが完全にいっぱいになるのを防止する 

監査トレールのオーバーフローを防ぐ方法

監査レコードの書式の表示方法

bsmrecord コマンドは、監査イベントの監査 ID、監査クラス、選択マスク、およびレコード書式を表示します。このコマンドは、audit_class ファイル内と audit_event ファイル内のレコードを使用します。

次のように -a オプションを指定してコマンドを実行すると、すべての監査イベントのレコード書式が表示されます。-h オプションを指定すると、HTML 形式で一覧が出力されます。出力されたファイルは、ブラウザを使って表示できます。

    bsmrecord コマンドを使ってすべての監査イベントのレコード書式を HTML ファイルに出力します。


    % bsmrecord -a -h> audit.events.html
    

    *html ファイルはブラウザを使って表示できます。ブラウザの検索ツールを使って特定のレコードを検索します。

    詳細は、bsmrecord(1M) のマニュアルページを参照してください。

例 — プログラムの監査レコード書式を表示する

この例では、login プログラムによって生成されたすべての監査レコードの書式を表示します。


% bsmrecord -p login

terminal login
  program     /usr/sbin/login      see login(1)
  event ID    6152                 AUE_login
  class       lo                   (0x00001000)
      header
      subject
      text                         error message or "successful login"
      return

login: logout
  program     /usr/sbin/login      see login(1)
  event ID    6153                 AUE_logout
  class       lo                   (0x00001000)
      header
      subject
      text                         "logout" username
      return

rlogin
  program     /usr/sbin/login      see login(1) - rlogin
  event ID    6155                 AUE_rlogin
  class       lo                   (0x00001000)
      header
      subject
      text                         success/fail message
      return

telnet login
  program     /usr/sbin/login      see login(1) - telnet
  event ID    6154                 AUE_telnet
  class       lo                   (0x00001000)
      header
      subject
      text                         success/fail message
      return

例 — 監査クラスの監査レコード書式を表示する

この例では、fd クラスに属するすべての監査レコードの書式を表示します。


% bsmrecord -c fd

ftruncate
    Not used.

truncate
    Not used.

unlink
  system call unlink               see unlink(2)
  event ID    6                    AUE_UNLINK
  class       fd                   (0x00000020)
      header
      path
      [attribute]
      subject
      return

監査レコードのマージ方法

次のタスクでは、すべての監査ディレクトリのすべての監査ファイルをマージする方法について説明します。監査トレールの内容を分析する場合は、次の手順を行います。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. 一次監査ディレクトリに移動します。


    # cd /etc/security/audit/server-name.1/files
    

    マージされたファイルは、/etc/security/audit/server-name.1/files ディレクトリ内に格納されます。このディレクトリは保護されています。

  3. 監査レコードをマージします。


    # auditreduce> merged.log
    

    server-name 上の audit_control ファイル内の dir: 行に指定されているすべてのディレクトリがマージされます。マージされたレコードは、カレントディレクトリの merged.log ファイル内に格納されます。

例 — 監査トレール全体を表示する

監査トレール全体を一度に表示するには、auditreduce コマンドの出力を praudit コマンドにパイプします。


# auditreduce | praudit

例 — 監査トレール全体を印刷する

出力を lp コマンドにパイプすると、その出力はプリンタに送られます。


# auditreduce | praudit | lp

例 — 監査ファイルの結合と削減

auditreduce-O オプションを使用して、複数の監査ファイルを 1 つのファイルに結合し、そのファイルを指定した出力ファイルに保存します。auditreduce を使用すると、このような結合と削除を自動的に実行できます。auditreduce(1M) のマニュアルページの -C オプションと -D オプションを参照してください。ただし、ファイルを手動で選択したほうが効率的です。find コマンドを使用したあと、auditreduce を使用して指定した一連のファイルだけを結合します。

この方法で auditreduce コマンドを使用すると、入力ファイルのすべてのレコードが 1 つの出力ファイルにマージされます。マージが完了したら、入力ファイルは削除する必要があります。また、出力ファイルは、/etc/security/audit/server-name /files という名前のディレクトリに保存し、auditreduce が出力ファイルを検索できるようにする必要があります。


# auditreduce -O combined-filename

auditreduce コマンドを使用すると、出力ファイル内のレコード数を減らすこともできます。このコマンドは、入力ファイルの結合時に不要なレコードを除外できます。たとえば、auditreduce コマンドを使用して、1 か月以上経過した監査ファイルから、ログインレコードとログアウトレコード以外のレコードを削除することができます。監査トレール全体が必要になった場合は、バックアップテープから監査トレールを復元できます。


# auditreduce -O daily.summary -b 19990413 -c lo; compress *daily.summary
# mv *daily.summary /etc/security/summary.dir

例 — 選択した日付のユーザーの動作を表示する

次の例では、1999 年 4 月 13 日におけるユーザー tamiko のログイン時刻とログアウト時刻を、システム管理者が確認します。管理者は、lo イベントクラスを要求します。短い書式の日付は、yymmdd 形式で出力されます。長い書式については、auditreduce(1M) のマニュアルページを参照してください。


# auditreduce -d 990413 -u tamiko -c lo | praudit

例 — 選択レコードを 1 つのファイルにコピーする

この例では、特定の日付におけるログイン、ログアウトのメッセージが監査トレールから選択されます。これらのメッセージは対象ファイルにマージされます。対象ファイルは、通常の監査ルートディレクトリ以外のディレクトリに書き込まれます。


# auditreduce -c lo -d 990413 -O /usr/audit_summary/logins 

-O オプションを使用すると、開始時刻と終了時刻を示す 14 文字のタイムスタンプと接尾辞 logins が付いた監査ファイルが作成されます。


/usr/audit_summary/19990413000000.19990413235959.logins

例 — not_terminated 監査ファイルを整理する

監査ファイルが開いている状態で監査デーモンが終了してしまうことがあります。また、サーバーがアクセス不能になって、強制的に別のサーバーに切り替わってしまうことがあります。このような場合、その監査ファイルは監査レコードとして使用されなくなりますが、監査ファイルの終了時刻として文字列 not_terminated が付いたままになります。このようなファイルが見つかった場合、ファイルが使用されていないことを手動で確認します。開いたままのファイルを整理するには、正しいオプションを使用してファイル名を指定します。


# audit -s
19990414121112.not_terminated.egret
# auditreduce -O egret 19990413120429.not_terminated.egret

audit コマンドは、現在の監査ファイル名を確認します。auditreduce コマンドは、正しいファイル名と正しいタイムスタンプを持つ新しい監査ファイルを作成します。正しいファイル名には、正しい接尾辞 (egret) が含まれます。auditreduce は、すべてのレコードをこのファイルにコピーします。

監査レコードの表示方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. /usr/audit_summary/logins などの監査ファイルディレクトリに移動します。


    # cd /usr/audit_summary/logins
    
  3. praudit コマンドを使ってファイルを読み取ります。


    # praudit 19990413000000.19990413235959.logins | more
    

例 — 監査レコードを XML 形式に変換する

この例では、監査レコードを XML 形式に変換します。XML 形式はブラウザで表示できます。この形式は、報告を作成する際にも使用できます。


# praudit -x 19990413000000.19990413235959.logins> 19990413.logins.xml

*xml ファイルはブラウザを使って表示できます。スクリプトを使えば、XML ファイルの内容を操作して目的の情報を抽出できます。

監査トレールのオーバーフローを防ぐ方法

セキュリティポリシーの関係ですべての監査データを保存する必要がある場合は、次の手順に従います。

  1. 監査ファイルを定期的に保存するスケジュールを設定します。保存した監査ファイルを監査ファイルシステムから削除するスケジュールを設定します。

  2. 監査ファイルを手動でテープにバックアップします。これらのファイルを保存ファイルシステムに移動することもできます。

  3. 監査レコードの解釈に必要な、内容に対応する情報を、監査トレールとともに格納します。

  4. オフラインで移動した監査ファイルをを示すレコードを保管します。

  5. 保存したテープを適切な方法で保管します。

  6. サマリーファイルを作成して、格納する監査データのボリュームを削減します。

    監査トレールからサマリーファイルを抽出するには、auditreduce コマンドのオプションを使用します。サマリーファイルには、指定された種類の監査イベントのレコードだけが含まれます。例 — 監査ファイルの結合と削減例 — 選択レコードを 1 つのファイルにコピーするの例を参照してください。

デバイス割り当ての管理 (作業)

デバイス割り当てを使用して、さまざまなリムーバブルメディアに関連するセキュリティリスクを減らすことができます。

割り当て可能デバイスの追加 (作業マップ)

次の表は、新しい割り当て可能デバイスの定義に必要な、主な手順の一覧です。

作業 

説明 

参照先 

1. device_allocate ファイル内のエントリの作成または変更

デバイス割り当てメカニズムを使用して、制御するデバイスを定義する 

割り当て可能デバイスの変更方法

2. ロックファイルの作成 

デバイス割り当てメカニズムを有効にして、特定のデバイスを操作する 

割り当て可能デバイスのロックファイルの設定方法

3. (省略可能) デバイスクリーンスクリプトの作成 

物理デバイスからデータを一掃する 

デバイスクリーンスクリプト

4. デバイスの割り当て 

デバイス割り当てメカニズムにデバイスを追加する 

デバイスを割り当てる方法

5. (省略可能) デバイス割り当ての解除 

デバイスの使用を解除する 

デバイスの割り当てを解除する方法

割り当て可能デバイスのロックファイルの設定方法

ロックファイルとは、 /etc/security/dev ディレクトリに作成されるサイズ 0 のファイルです。割り当て可能デバイスごとに 1 つのファイルが作成されます。割り当て可能デバイスのロックファイルがない場合は、そのデバイスを割り当てることができず、誰もアクセスできません。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. dminfo コマンドを使用して、 device_maps ファイルのエントリからそのデバイスのデバイス名を取得します。

    device_maps ファイル と、dminfo(1M) および device_maps(4) のマニュアルページを参照してください。たとえば、デバイスタイプ st のデバイス名は st0 です。次の手順では、そのデバイス名をロックファイル名として使用します。

  3. touch コマンドを使用して、そのデバイスの空のロックファイルを作成します。

    ファイル名としてデバイス名を使用します。device-name に代入してください。


    # cd /etc/security/dev
    # touch device-name
    # chmod 600 device-name
    # chown bin device-name
    # chgrp bin device-name
    

割り当て可能デバイスの変更方法

次の手順では、デバイス割り当てメカニズムに使用できるデバイスを定義します。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. /etc/security/device_allocate ファイルに一覧されているデバイスを確認します。

  3. device_allocate ファイルには指定されていないデバイスのうち、割り当て可能にするデバイスを決定します。

  4. device_allocate ファイルを編集して新しいデバイスを追加します。

    各エントリの書式は次のとおりです。


    device-name;device-type;;;;program
    
    device-name

    デバイス名を指定する

    device-type

    デバイスタイプを指定する

    program

    実行するパージプログラムを指定する

デバイスを割り当てる方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. デバイス名を指定して allocate コマンドを使用します。


    sar1% allocate st0
    

allocate コマンドの - g オプションを使用して、デバイスタイプでデバイスを割り当てることもできます。

コマンドでデバイスを割り当てられない場合は、コンソールウィンドウにエラーメッセージが表示されます。割り当てのエラーメッセージについては、allocate(1) のマニュアルページを参照してください。

例 — プリンタを割り当てる

allocate コマンドを実行したユーザーだけがプリンタを使用できます。


sarl% allocate /dev/lp/chestnut

デバイスの割り当てを解除する方法

割り当てを解除すると、ほかのユーザーもユーザーの使用後にそのデバイスを割り当てて使用できるようになります。

  1. deallocate コマンドに続けてデバイスファイル名を使用し、デバイスの割り当てを解除します。


    sar1% deallocate st0
    

例 — プリンタの割り当てを解除する

chestnut という名前のプリンタの割り当てを解除するには、次のコマンドを入力します。


# deallocate /dev/lp/chestnut

例 — 強制的に割り当てを解除する

ユーザーに割り当てられたデバイスは、プロセスが終了するとき、またはそのユーザーがログアウトするときに、自動的にその割り当てが解除されません。次の書式の deallocate コマンドは、通常、ユーザーが特定のデバイスの割り当てを解除し忘れたときのために使用します。次のコマンドは、デバイス割り当てを解除して、ほかのユーザーがデバイス割り当てを行えるようにします。


# deallocate -F st0

例 — すべてのデバイスの割り当てを解除する


注意 – 注意 –

すべてのデバイスの割り当てを解除できるのは、システムを初期化しているときだけです。



# deallocate -I