Go to main content
Oracle® Solaris 11.3 での監査の管理

印刷ビューの終了

更新: 2016 年 11 月
 
 

監査サービスのトラブルシューティング

このセクションでは、監査に関する問題のデバッグに役立つ監査のさまざまなエラーメッセージ、設定、およびその他のツールで提供される監査について説明します。

一般に、監査サービスでエラーを警告するために、さまざまな通知が送信されます。監査サービスに問題が存在すると判断した場合は、電子メールおよびログファイルを確認します。

  • audit_warn エイリアスに送信された電子メールを読み取ります。

    audit_warn スクリプトは、audit_warn 電子メールエイリアスにアラートメッセージを送信します。正しく構成されたエイリアスが存在しない場合、メッセージは root アカウントに送信されます。

  • 監査サービスのログファイルを確認します。

    svcs -s auditd コマンドの出力には、監査サービスが生成する監査ログのフルパスが一覧表示されます。

  • システムログファイルを確認します。

    audit_warn スクリプトは、/var/log/syslog ファイルに daemon.alert メッセージを書き込みます。

    /var/adm/messages ファイルに情報が含まれている可能性があります。

問題を見つけて修正したあと、監査サービスを有効にするか、または再開します。

# audit -s

次のセクションでは、発生する可能性がある問題の事例および問題を解決する手順について説明します。


注 -  トラブルシューティングのタスクを実行する前に、適切な承認を持っていることを確認します。たとえば、監査を構成するには、Audit Configuration 権利プロファイルが割り当てられている管理者になる必要があります。詳細は、Oracle Solaris 11.3 でのユーザーとプロセスのセキュリティー保護 の 割り当てられている管理権利の使用を参照してください。

監査レコードが記録されていない

監査機能はデフォルトで有効になります。監査が無効になっていないにもかかわらず、監査レコードがアクティブなプラグインに送信されない場合は、このセクションで説明する次の要因のいずれか、または要因の組み合わせが原因である可能性があります。システムファイルを変更するには、solaris.admin.edit/path-to-system-file 承認が割り当てられている必要があります。デフォルトでは、root役割がこの承認を持っています。

監査サービスが実行されていない

監査が実行中かどうかを確認するには、次の方法のいずれかを使用します。

  • 現在の監査の状況を確認します。

    次の出力は、監査が実行中でないことを示しています。

    # auditconfig -getcond
    audit condition = noaudit

    次の出力は、監査が実行中であることを示しています。

    # auditconfig -getcond
    audit condition = auditing
  • 監査サービスが実行中であることを確認します。

    次の出力は、監査が実行中でないことを示しています。

    # svcs -x auditd
    
    svc:/system/auditd:default (Solaris audit daemon)
    State: disabled since Sun Oct 10 10:10:10 2010
    Reason: Disabled by an administrator.
    See: http://support.oracle.com/msg/SMF-8000-05
    See: auditd(1M)
    See: audit(1M)
    See: auditconfig(1M)
    See: audit_flags(5)
    See: audit_binfile(5)
    See: audit_syslog(5)
    See: audit_remote(5)
    See: /var/svc/log/system-auditd:default.log
    Impact: This service is not running.

    次の出力は、監査サービスが実行中であることを示しています。

    # svcs auditd
    STATE          STIME    FMRI
    online         10:10:10 svc:/system/auditd:default

監査サービスが実行中でない場合、有効にします。手順については、監査サービスの有効化および無効化を参照してください。

監査プラグインがアクティブになっていない

次のコマンドを使用して、プラグインがアクティブになっているかどうかを確認します。監査サービスが動作するには、少なくとも 1 つのプラグインがアクティブになっている必要があります。

# audit -v
audit: no active plugin found

どのプラグインもアクティブでない場合は、1 つのプラグインをアクティブにします。

# auditconfig -setplugin audit_binfile active
# audit -v
configuration ok

監査クラスが定義されていない

定義されていない監査クラスを使用しようとしている可能性があります。pf クラスの作成については、監査クラスの追加方法を参照してください。

たとえば、次のフラグのリストには、Oracle Solaris ソフトウェアでは提供されなかった pf クラスが含まれています。

# auditconfig -getflags
active user default audit flags = pf,lo(0x0100000000000000,00x0100000000001000)
configured user default audit flags = pf,lo(0x0100000000000000,00x0100000000001000)

クラスを定義しない場合は、有効な値で auditconfig -setflags コマンドを実行して現在のフラグをリセットします。それ以外の場合は、クラスを定義する際に次の点を確認します。

  • 監査クラスが audit_class ファイルで定義されている。

    # grep pf /etc/security/audit_class
    クラスが存在することを確認します
    
    0x0100000000000000:pf:profile
    
  • マスクが一意である。一意でない場合は、マスクを置き換えてください。

    # grep 0x0100000000000000 /etc/security/audit_class
    マスクが一意であることを確認します
    
    0x0100000000000000:pf:profile

監査クラスにイベントが割り当てられていない

使用中のカスタマイズ済みクラスが定義されているが、そのクラスにイベントが割り当てられていない可能性があります。

カスタマイズ済みクラスにイベントが割り当てられているかどうかを確認するには、次の方法のいずれかを使用します。

# auditconfig -lsevent | egrep " pf|,pf|pf,"
AUE_PFEXEC      116 pf execve(2) with pfexec enabled
# auditrecord -c pf
pf クラスに割り当てられた監査イベントのリスト

イベントがクラスに割り当てられていない場合、適切なイベントをこのクラスに割り当てます。

監査レコードの量が多い

サイトでどのイベントを監査する必要があるかを決定したあと、推奨される次の方法を使用して、必要な情報のみを含む監査ファイルを作成します。ユーザー、役割、および権利プロファイルに監査フラグを割り当てるには、root 役割になる必要があります。

  • 具体的には、監査証跡へのイベントと監査トークンの追加を回避します。次のポリシーによって、監査トレールのサイズが増加します。

    arge

    環境変数を execv 監査イベントに追加します。execv イベントの監査のコストは高くなることがありますが、監査レコードへの変数の追加のコストは高くありません。

    argv

    コマンドのパラメータを execv 監査イベントに追加します。監査レコードにコマンドのパラメータを追加する際のコストは、高くありません。

    group

    group トークンをオプションの newgroups トークンを含む監査イベントに追加します。

    path

    path トークンをオプションの path トークンを含む監査イベントに追加します。

    public

    ファイルイベントが監査されている場合は、公開オブジェクトに対して監査可能なイベントが発生するたびに、監査トレールにイベントを追加します。ファイルクラスには、fafcfdfmfrfwcl などがあります。公開ファイルの定義については、監査の用語と概念を参照してください。

    seq

    シーケンストークンをすべての監査イベントに追加します。

    trail

    トレーラトークンをすべての監査イベントに追加します。

    windata_down

    Trusted Extensions が構成されたシステム上で、ラベル付きウィンドウ内の情報がダウングレードされるとイベントを追加します。

    windata_up

    Trusted Extensions が構成されたシステム上で、ラベル付きウィンドウ内の情報がアップグレードされるとイベントを追加します。

    zonename

    ゾーン名をすべての監査イベントに追加します。大域ゾーンが唯一の構成されたゾーンである場合は、文字列 zone, global をすべての監査イベントに追加します。

    次の監査レコードは、ls コマンドの使用を示しています。ex クラスが監査対象で、デフォルトのポリシーが使用されています。

    header,129,2,AUE_EXECVE,,mach1,2010-10-14 11:39:22.480 -07:00
    path,/usr/bin/ls
    attribute,100555,root,bin,21,320271,18446744073709551615
    subject,jdoe,root,root,root,root,2404,50036632,82 0 mach1
    return,success,0

    すべてのポリシーがオンの場合、同じレコードが次のようになります。

    header,1578,2,AUE_EXECVE,,mach1,2010-10-14 11:45:46.658 -07:00
    path,/usr/bin/ls
    attribute,100555,root,bin,21,320271,18446744073709551615
    exec_args,2,ls,/etc/security
    exec_env,49,MANPATH=/usr/share/man,USER=jdoe,GDM_KEYBOARD_LAYOUT=us,EDITOR=gedit,
    LANG=en_US.UTF-8,GDM_LANG=en_US.UTF-8,PS1=#,GDMSESSION=gnome,SESSIONTYPE=1,SHLVL=2,
    HOME=/home/jdoe,LOGNAME=jdoe,G_FILENAME_ENCODING=@locale,UTF-8, PRINTER=example-dbl,
    ...
    path,/lib/ld.so.1
    attribute,100755,root,bin,21,393073,18446744073709551615
    subject,jdoe,root,root,root,root,2424,50036632,82 0 mach1
    group,root,other,bin,sys,adm,uucp,mail,tty,lp,nuucp,daemon
    return,success,0
    zone,global
    sequence,197
    trailer,1578
  • audit_syslog プラグインを使用して、一部の監査イベントを syslog に送信します。

    これらの監査イベントを audit_binfile または audit_remote プラグインには送信しないでください。この方法は、syslog ログに送信する監査イベントのバイナリレコードを保持する必要がない場合にのみ有効です。

  • 設定するシステム全体の監査フラグの数を減らし、個々のユーザーを監査します。

    システム全体で監査される監査クラスの数を減らすことによって、すべてのユーザーに対する監査の量を削減します。

    特定のユーザーや役割のイベントを監査するには、roleadd rolemoduseradd、および usermod コマンドの audit_flags キーワードを使用します。例については、使用例 29および usermod(1M) のマニュアルページを参照してください。

    特定の権利プロファイルのイベントを監査するには、profiles コマンドの always_audit および never_audit プロパティーを使用します。詳細は、profiles(1) のマニュアルページを参照してください。


    注 -  ほかのセキュリティー属性と同様に、監査フラグは検索順序によって影響を受けます。詳細は、Oracle Solaris 11.3 でのユーザーとプロセスのセキュリティー保護 の 割り当てられた権利の検索順序を参照してください。
  • 独自のカスタマイズ監査クラスを作成します。

    使用しているシステムで監査クラスを作成できます。これらのクラスに、モニターが必要な監査イベントのみを指定します。手順については、監査クラスの追加方法を参照してください。


    注 -  監査構成ファイルの変更の影響については、監査構成ファイルとパッケージ化を参照してください。

バイナリ監査ファイルのサイズが無制限に増大する

Audit Review 権利プロファイルが割り当てられている管理者として、バイナリファイルのサイズを制限すると、アーカイブおよび検索を容易にすることができます。このセクションで説明するオプションのいずれかを使用すると、元のファイルから小さいバイナリファイルを作成することもできます。

  • p_fsize 属性を使用して、個々のバイナリ監査ファイルのサイズを制限します。

    p_fsize 属性については、audit_binfile(5) のマニュアルページの「オブジェクト属性」のセクションを参照してください。

    例については、使用例 21を参照してください。

  • auditreduce コマンドを使用してレコードを選択し、これらのレコードを、さらに分析するためにより小さなファイルに書き込みます。

    auditreduce -lowercase オプションは特定のレコードを検索します。

    auditreduce -Uppercase オプションは選択したレコードをファイルに書き込みます。詳細は、auditreduce(1M) のマニュアルページを参照してください。監査トレールデータの表示も参照してください。

ほかのオペレーティングシステムからのログインが監査されていない

Oracle Solaris OS は、ソースには関係なく、すべてのログインを監査できます。ログインが監査されていない場合は、ユーザーに起因するイベントとユーザーに起因しないイベントの両方に lo クラスが設定されていない可能性があります。このクラスでは、ログイン、ログアウト、および画面ロックが監査されます。これらのクラスは、デフォルトで監査されます。


注 -  ssh ログインを監査するには、システムで Oracle Solaris から ssh デーモンが実行されている必要があります。このデーモンは、Oracle Solaris システム上の監査サービスに合わせて変更されています。詳細は、Oracle Solaris 11.3 での Secure Shell アクセスの管理 の Secure Shell の sunssh 実装を参照してください。
使用例 47  ログインが監査されていることの確認

この例では、最初の 2 つのコマンドの出力は、ユーザーに起因するイベントとユーザーに起因しないイベントに lo クラスが設定されていないことを示しています。最後の 2 つのコマンドは、ログインイベントの監査が有効になるように lo クラスを設定します。

# auditconfig -getflags
active user default audit flags = as,st(0x20800,0x20800)
configured user default audit flags = as,st(0x20800,0x20800)

# auditconfig -getnaflags
active non-attributable audit flags = na(0x400,0x400)
configured non-attributable audit flags = na(0x400,0x400)

# auditconfig -setflags lo,as,st
user default audit flags = as,lo,st(0x21800,0x21800)

# auditconfig -setnaflags lo,na
non-attributable audit flags = lo,na(0x1400,0x1400)