このセクションでは、監査に関する問題のデバッグに役立つ監査のさまざまなエラーメッセージ、設定、およびその他のツールで提供される監査について説明します。
一般に、監査サービスでエラーを警告するために、さまざまな通知が送信されます。監査サービスに問題が存在すると判断した場合は、電子メールおよびログファイルを確認します。
audit_warn エイリアスに送信された電子メールを読み取ります。
audit_warn スクリプトは、audit_warn 電子メールエイリアスにアラートメッセージを送信します。正しく構成されたエイリアスが存在しない場合、メッセージは root アカウントに送信されます。
監査サービスのログファイルを確認します。
svcs -s auditd コマンドの出力には、監査サービスが生成する監査ログのフルパスが一覧表示されます。
システムログファイルを確認します。
audit_warn スクリプトは、/var/log/syslog ファイルに daemon.alert メッセージを書き込みます。
/var/adm/messages ファイルに情報が含まれている可能性があります。
問題を見つけて修正したあと、監査サービスを有効にするか、または再開します。
# audit -s
次のセクションでは、発生する可能性がある問題の事例および問題を解決する手順について説明します。
監査機能はデフォルトで有効になります。監査が無効になっていないにもかかわらず、監査レコードがアクティブなプラグインに送信されない場合は、このセクションで説明する次の要因のいずれか、または要因の組み合わせが原因である可能性があります。システムファイルを変更するには、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 役割になる必要があります。
具体的には、監査証跡へのイベントと監査トークンの追加を回避します。次のポリシーによって、監査トレールのサイズが増加します。
環境変数を execv 監査イベントに追加します。execv イベントの監査のコストは高くなることがありますが、監査レコードへの変数の追加のコストは高くありません。
コマンドのパラメータを execv 監査イベントに追加します。監査レコードにコマンドのパラメータを追加する際のコストは、高くありません。
group トークンをオプションの newgroups トークンを含む監査イベントに追加します。
path トークンをオプションの path トークンを含む監査イベントに追加します。
ファイルイベントが監査されている場合は、公開オブジェクトに対して監査可能なイベントが発生するたびに、監査トレールにイベントを追加します。ファイルクラスには、fa、fc、fd、fm、fr、fw、cl などがあります。公開ファイルの定義については、監査の用語と概念を参照してください。
シーケンストークンをすべての監査イベントに追加します。
トレーラトークンをすべての監査イベントに追加します。
Trusted Extensions が構成されたシステム上で、ラベル付きウィンドウ内の情報がダウングレードされるとイベントを追加します。
Trusted Extensions が構成されたシステム上で、ラベル付きウィンドウ内の情報がアップグレードされるとイベントを追加します。
ゾーン名をすべての監査イベントに追加します。大域ゾーンが唯一の構成されたゾーンである場合は、文字列 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、 rolemod、useradd、および usermod コマンドの audit_flags キーワードを使用します。例については、使用例 29および usermod(1M) のマニュアルページを参照してください。
特定の権利プロファイルのイベントを監査するには、profiles コマンドの always_audit および never_audit プロパティーを使用します。詳細は、profiles(1) のマニュアルページを参照してください。
独自のカスタマイズ監査クラスを作成します。
使用しているシステムで監査クラスを作成できます。これらのクラスに、モニターが必要な監査イベントのみを指定します。手順については、監査クラスの追加方法を参照してください。
Audit Review 権利プロファイルが割り当てられている管理者として、バイナリファイルのサイズを制限すると、アーカイブおよび検索を容易にすることができます。このセクションで説明するオプションのいずれかを使用すると、元のファイルから小さいバイナリファイルを作成することもできます。
p_fsize 属性を使用して、個々のバイナリ監査ファイルのサイズを制限します。
p_fsize 属性については、audit_binfile(5) のマニュアルページの「オブジェクト属性」のセクションを参照してください。
例については、使用例 21を参照してください。
auditreduce コマンドを使用してレコードを選択し、これらのレコードを、さらに分析するためにより小さなファイルに書き込みます。
auditreduce -lowercase オプションは特定のレコードを検索します。
auditreduce -Uppercase オプションは選択したレコードをファイルに書き込みます。詳細は、auditreduce(1M) のマニュアルページを参照してください。監査トレールデータの表示も参照してください。
Oracle Solaris OS は、ソースには関係なく、すべてのログインを監査できます。ログインが監査されていない場合は、ユーザーに起因するイベントとユーザーに起因しないイベントの両方に lo クラスが設定されていない可能性があります。このクラスでは、ログイン、ログアウト、および画面ロックが監査されます。これらのクラスは、デフォルトで監査されます。
この例では、最初の 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)