ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 の管理: セキュリティーサービス Oracle Solaris 11.1 Information Library (日本語) |
パート II システム、ファイル、およびデバイスのセキュリティー
10. Oracle Solaris のセキュリティー属性 (参照)
22. Kerberos エラーメッセージとトラブルシューティング
24. Kerberos アプリケーションの使用 (タスク)
監査ファイルのための ZFS ファイルシステムを作成する方法
このセクションでは、監査のさまざまなエラーメッセージ、設定、およびほかのツールによって提供される監査について説明します。これらの手順は、必要な監査イベントを記録したり、監査の問題をデバッグしたりするのに役立ちます。
次のタスクマップは、監査をトラブルシューティングするための手順を示しています。
|
監査機能はデフォルトで有効になります。監査は無効になっていないと考えられるにもかかわらず、アクティブなプラグインに監査レコードが送信されていない場合は、次の手順を使用して問題を分離します。
始める前に
システムファイルを変更するには、solaris.admin.edit/path-to-system-file 承認が割り当てられている必要があります。デフォルトでは、root 役割がこの承認を持っています。監査を構成するには、Audit Configuration 権利プロファイルが割り当てられている管理者になる必要があります。
次のいずれかの方法を使用します。
次のリストは、監査が実行中でないことを示しています。
# 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
監査サービスが実行中でない場合、有効にします。手順については、「監査サービスを有効にする方法」を参照してください。
# audit -v audit: no active plugin found
どのプラグインもアクティブでない場合は、1 つのプラグインをアクティブにします。
# auditconfig -setplugin audit_binfile active # audit -v configuration ok
たとえば、次のフラグのリストには、Oracle Solaris ソフトウェアでは提供されなかった pf クラスが含まれています。
# auditconfig -getflags active user default audit flags = pf,lo(0x0100000000000000,00x0100000000001000) configured user default audit flags = pf,lo(0x0100000000000000,00x0100000000001000)
pf クラスの作成については、「監査クラスの追加方法」を参照してください。
監査クラスが定義されている必要があり、そのマスクが一意である必要があります。
# grep pf /etc/security/audit_classVerify class exists 0x0100000000000000:pf:profile # grep 0x0100000000000000 /etc/security/audit_classEnsure mask is unique 0x0100000000000000:pf:profile
一意でないマスクを置き換えます。クラスが定義されていない場合、定義します。それ以外の場合は、有効な値で auditconfig -setflags コマンドを実行して現在のフラグをリセットします。
次のいずれかの方法を使用します。
# auditconfig -lsevent | egrep " pf|,pf|pf," AUE_PFEXEC 116 pf execve(2) with pfexec enabled
# auditrecord -c pf List of audit events assigned to pf class
イベントがクラスに割り当てられていない場合、適切なイベントをこのクラスに割り当てます。
audit_warn スクリプトは、audit_warn 電子メールエイリアスにアラートメッセージを送信します。正しく構成されたエイリアスが存在しない場合、メッセージは root アカウントに送信されます。
svcs -s auditd コマンドの出力には、監査サービスが生成する監査ログのフルパスが一覧表示されます。例については、手順 1 のリストを参照してください。
audit_warn スクリプトは、/var/log/syslog ファイルに daemon.alert メッセージを書き込みます。
/var/adm/messages ファイルに情報が含まれている可能性があります。
# audit -s
サイトでどのイベントを監査する必要があるかを決定したあと、推奨される次の方法を使用して、必要な情報のみを含む監査ファイルを作成します。
始める前に
監査クラスを事前選択し、監査ポリシーを設定するには、Audit Configuration 権利プロファイルが割り当てられている必要があります。システムファイルを変更するには、solaris.admin.edit/path-to-system-file 承認が割り当てられている必要があります。デフォルトでは、root 役割がこの承認を持っています。ユーザー、役割、および権利プロファイルに監査フラグを割り当てるには、root 役割になる必要があります。
具体的には、監査証跡へのイベントと監査トークンの追加を回避します。次のポリシーによって、監査トレールのサイズが拡大します。
arge ポリシー – 環境変数を execv 監査イベントに追加します。execv イベントの監査のコストは高くなることがありますが、監査レコードへの変数の追加のコストは高くありません。
argv ポリシー – コマンドパラメータを execv 監査イベントに追加します。execv イベントの監査のコストは高くなることがありますが、監査レコードへのコマンドパラメータの追加のコストは高くありません。
public ポリシー – ファイルイベントが監査されている場合は、公開オブジェクトに対して監査可能なイベントが発生するたびに、監査トレールにイベントを追加します。ファイルクラスには、fa、fc、fd、fm、fr、fw、cl などがあります。公開ファイルの定義については、「監査の用語と概念」を参照してください。
path ポリシー – path トークンを、省略可能な path トークンを含む監査イベントに追加します。
group ポリシー – group トークンを、省略可能な newgroups トークンを含む監査イベントに追加します。
seq ポリシー – sequence トークンをすべての監査イベントに追加します。
trail ポリシー – trailer トークンをすべての監査イベントに追加します。
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_binfile または audit_remote プラグインには送信しないでください。この方法は、syslog ログに送信する監査イベントのバイナリレコードを保持する必要がない場合にのみ有効です。
システム全体で監査される監査クラスの数を減らすことによって、すべてのユーザーに対する監査の量を削減します。
特定のユーザーや役割のイベントを監査するには、roleadd、 rolemod、useradd、および usermod コマンドの audit_flags キーワードを使用します。例については、例 28-21 および usermod(1M) のマニュアルページを参照してください。
特定の権利プロファイルのイベントを監査するには、profiles コマンドの always_audit および never_audit プロパティーを使用します。詳細は、profiles(1) のマニュアルページを参照してください。
使用しているシステムで監査クラスを作成できます。これらのクラスに、モニターが必要な監査イベントのみを指定します。手順については、「監査クラスの追加方法」を参照してください。
サイトのセキュリティーポリシーの一環として、サイトによっては、root アカウントや管理役割によって実行されるすべてのコマンドの監査レコードが必要になります。サイトによっては、すべてのユーザーによるすべてのコマンドの監査レコードが必要な場合があります。さらに、サイトでコマンド引数や環境を記録することが必要になる場合もあります。
始める前に
監査クラスを事前選択し、監査ポリシーを設定するには、Audit Configuration 権利プロファイルが割り当てられている管理者になる必要があります。ユーザー、役割、および権利プロファイルに監査フラグを割り当てるには、root 役割になる必要があります。
ex クラスは、exec() 関数および execve() 関数のすべての呼び出しを監査します。
lo クラスは、ログイン、ログアウト、および画面ロックを監査します。次の出力は、ex および lo クラス内のすべてのイベントを一覧表示しています。
% auditconfig -lsevent | grep " lo " AUE_login 6152 lo login - local AUE_logout 6153 lo logout AUE_telnet 6154 lo login - telnet AUE_rlogin 6155 lo login - rlogin AUE_rshd 6158 lo rsh access AUE_su 6159 lo su AUE_rexecd 6162 lo rexecd AUE_passwd 6163 lo passwd AUE_rexd 6164 lo rexd AUE_ftpd 6165 lo ftp access AUE_ftpd_logout 6171 lo ftp logout AUE_ssh 6172 lo login - ssh AUE_role_login 6173 lo role login AUE_newgrp_login 6212 lo newgrp login AUE_admin_authenticate 6213 lo admin login AUE_screenlock 6221 lo screenlock - lock AUE_screenunlock 6222 lo screenlock - unlock AUE_zlogin 6227 lo login - zlogin AUE_su_logout 6228 lo su logout AUE_role_logout 6229 lo role logout AUE_smbd_session 6244 lo smbd(1m) session setup AUE_smbd_logoff 6245 lo smbd(1m) session logoff AUE_ClientConnect 9101 lo client connection to x server AUE_ClientDisconnect 9102 lo client disconn. from x server % auditconfig -lsevent | egrep " ex |,ex |ex," AUE_EXECVE 23 ex,ps execve(2)
次の例で、root は役割です。このサイトでは、sysadm、auditadm、および netadm の 3 つの役割が作成されています。すべての役割で、ex および lo クラス内のイベントの成功と失敗が監査されます。
# rolemod -K audit_flags=lo,ex:no root # rolemod -K audit_flags=lo,ex:no sysadm # rolemod -K audit_flags=lo,ex:no auditadm # rolemod -K audit_flags=lo,ex:no netadm
# auditconfig -setflags lo,ex
出力は次のようになります。
header,129,2,AUE_EXECVE,,mach1,2010-10-14 12:17:12.616 -07:00 path,/usr/bin/ls attribute,100555,root,bin,21,320271,18446744073709551615 subject,jdoe,root,root,root,root,2486,50036632,82 0 mach1 return,success,0
# auditconfig -setpolicy +argv
exec_args トークンは、コマンド引数を記録します。
header,151,2,AUE_EXECVE,,mach1,2010-10-14 12:26:17.373 -07:00 path,/usr/bin/ls attribute,100555,root,bin,21,320271,18446744073709551615 exec_args,2,ls,/etc/security subject,jdoe,root,root,root,root,2494,50036632,82 0 mach1 return,success,0
# auditconfig -setpolicy +arge
exec_env トークンは、コマンド環境を記録します。
header,1460,2,AUE_EXECVE,,mach1,2010-10-14 12:29:39.679 -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,...,_=/usr/bin/ls subject,jdoe,root,root,root,root,2502,50036632,82 0 mach1 return,success,0
目標が、/etc/passwd や /etc/default ディレクトリ内のファイルなどの、限られた数のファイルに対するファイル書き込みをログに記録することである場合は、auditreduce コマンドを使用してこれらのファイルを見つけることができます。
始める前に
root 役割は、この手順内のすべてのタスクを実行できます。
管理権限が組織内に分散している場合は、次の点を考慮してください。
Audit Configuration 権利プロファイルを持つ管理者は、auditconfig コマンドを実行できます。
Audit Review 権利プロファイルを持つ管理者は、auditreduce コマンドを実行できます。
監査フラグを割り当てることができるのは、root 役割だけです。
詳細は、「割り当てられている管理権限を使用する方法」を参照してください。
このクラスをユーザーまたは役割の監査フラグに追加すると、このクラスをシステム全体の監査事前選択マスクに追加する場合に比べて、生成されるレコードが少なくなります。次の手順のいずれかを実行します。
# rolemod -K audit_flags=fw:no root # rolemod -K audit_flags=fw:no sysadm # rolemod -K audit_flags=fw:no auditadm # rolemod -K audit_flags=fw:no netadm
# auditconfig -getflags active user default audit flags = lo(0x1000,0x1000) configured user default audit flags = lo(0x1000,0x1000) # auditconfig -setflags lo,fw user default audit flags = lo,fw(0x1002,0x1002)
成功を監査すると、失敗と成功を監査する場合に比べて、生成されるレコードが少なくなります。次の手順のいずれかを実行します。
# rolemod -K audit_flags=+fw:no root # rolemod -K audit_flags=+fw:no sysadm # rolemod -K audit_flags=+fw:no auditadm # rolemod -K audit_flags=+fw:no netadm
# auditconfig -getflags active user default audit flags = lo(0x1000,0x1000) configured user default audit flags = lo(0x1000,0x1000) # auditconfig -setflags lo,+fw user default audit flags = lo,+fw(0x1002,0x1000)
# auditconfig -getflags active user default audit flags = lo,fw(0x1002,0x1002) configured user default audit flags = lo,fw(0x1002,0x1002) # rolemod -K audit_flags=^-fw:no root # rolemod -K audit_flags=^-fw:no sysadm # rolemod -K audit_flags=^-fw:no auditadm # rolemod -K audit_flags=^-fw:no netadm
システム全体のフラグはそのままで変更されませんが、これらの 4 つの役割の事前選択マスクが変更されます。
# auditconfig -getflags active user default audit flags = lo,fw(0x1002,0x1000) configured user default audit flags = lo,fw(0x1002,0x1000)
# auditreduce -o file=/etc/passwd,/etc/default -O filechg
auditreduce コマンドは、file 引数のすべてのインスタンスについて監査証跡を検索します。このコマンドにより、接尾辞 filechg を持つバイナリファイルが作成されます。このファイルには、必要なファイルのパス名を含むすべてのレコードが含まれています。-o file=pathname オプションの構文については、auditreduce(1M) のマニュアルページを参照してください。
# praudit *filechg
すでにログインしているユーザーを、システム全体の監査事前選択マスクの変更について監査するようにしたいとします。
始める前に
Audit Configuration 権利プロファイルが割り当てられている管理者になる必要があります。ユーザーセッションを終了するには、Process Management 権利プロファイルが割り当てられている管理者になる必要があります。詳細は、「割り当てられている管理権限を使用する方法」を参照してください。
2 つの選択肢があります。既存のセッションを終了するか、または auditconfig コマンドを使用すると事前選択マスクを更新できます。
ユーザーはログアウトしてから、ログインし直すことができます。または、Process Management 権利プロファイルが割り当てられている役割は、アクティブなセッションを手動で終了 (強制終了) できます。新しいセッションでは、新しい事前選択マスクが継承されます。ただし、ユーザーの終了が実用的でない場合もあります。
この例では、システム全体の監査事前選択マスクを lo から lo,ex に変更したと仮定します。
# auditconfig -setflags lo,ex
# who -a jdoe - vt/2 Jan 25 07:56 4:10 1597 (:0) jdoe + pts/1 Jan 25 10:10 . 1706 (:0.0) ... jdoe + pts/2 Jan 25 11:36 3:41 1706 (:0.0)
# auditconfig -getpinfo 1706 audit id = jdoe(1234) process preselection mask = lo(0x1000,0x1000) terminal id (maj,min,host) = 9426,65559,mach1(192.168.123.234) audit session id = 103203403
# auditconfig -setpmask 1706 lo,ex /* for this process */ # auditconfig -setumask jdoe lo,ex /* for this user */ # auditconfig -setsmask 103203403 lo,ex /* for this session */
たとえば、マスクを変更する前に存在していたプロセスを確認します。
# auditconfig -getpinfo 1706 audit id = jdoe(1234) process preselection mask = ex,lo(0x40001000,0x40001000) terminal id (maj,min,host) = 9426,65559,mach1(192.168.123.234) audit session id = 103203403
メンテナンスのために、サイトでイベントが監査されないようにする場合があります。
始める前に
root 役割になる必要があります。詳細は、「割り当てられている管理権限を使用する方法」を参照してください。
たとえば、イベント 26 および 27 は pm クラスに属しています。
## audit_event file ... 25:AUE_VFORK:vfork(2):ps 26:AUE_SETGROUPS:setgroups(2):pm 27:AUE_SETPGRP:setpgrp(2):pm 28:AUE_SWAPON:swapon(2):no ...
これらのイベントを no クラスに変更します。
## audit_event file ... 25:AUE_VFORK:vfork(2):ps 26:AUE_SETGROUPS:setgroups(2):no 27:AUE_SETPGRP:setpgrp(2):no 28:AUE_SWAPON:swapon(2):no ...
pm クラスが現在監査中である場合でも、既存のセッションはイベント 26 および 27 を監査します。これらのイベントの監査を停止するには、「ログインしているユーザーの事前選択マスクを更新する方法」の手順に従って、ユーザーの事前選択マスクを更新する必要があります。
注意 - audit_event ファイルではイベントをコメントにしないでください。このファイルは、praudit コマンドがバイナリ監査ファイルを読み取るときに使用します。また、このファイルに一覧表示されたイベントが、保管された監査ファイルに含まれることがあります。 |
# auditconfig -conf Configured 283 kernel events.
バイナリ監査ファイルは無制限に増大します。保管や検索を容易にするために、サイズの制限が必要となることがあります。元のファイルから小さいバイナリファイルを作成することもできます。
始める前に
p_fsize 属性を設定するには、Audit Configuration 権利プロファイルが割り当てられている管理者になる必要があります。auditreduce コマンドを使用するには、Audit Review 権利プロファイルが割り当てられている管理者になる必要があります。詳細は、「割り当てられている管理権限を使用する方法」を参照してください。
p_fsize 属性については、audit_binfile(5) のマニュアルページの「オブジェクト属性」のセクションを参照してください。
例については、例 28-14 を参照してください。
auditreduce -lowercase オプションは特定のレコードを検索します。
auditreduce -Uppercase オプションは選択したレコードをファイルに書き込みます。詳細は、auditreduce(1M) のマニュアルページを参照してください。「ローカルシステム上の監査レコードの管理 (タスク)」も参照してください。
監査ファイルは拡大する場合があります。例 28-14 に示すように、ファイルのサイズに上限を設定できます。この手順では、圧縮を使用してサイズを削減します。
始める前に
ZFS File System Management および ZFS Storage Management 権利プロファイルが割り当てられている管理者になる必要があります。後者のプロファイルを使用すると、ストレージプールを作成できます。詳細は、「割り当てられている管理権限を使用する方法」を参照してください。
手順については、「監査ファイルのための ZFS ファイルシステムを作成する方法」を参照してください。
どちらのオプションを使用した場合でも、監査ファイルシステムが圧縮されます。監査サービスがリフレッシュされると、圧縮率が表示されます。
圧縮を設定するには、zfs set compression=on dataset コマンドを使用します。次の例では、ZFS プール auditp/auditf がデータセットです。
# zfs set compression=on auditp/auditf # audit -s # zfs get compressratio auditp/auditf NAME PROPERTY VALUE SOURCE auditp/auditf compressratio 4.54x -
# zfs set compression=gzip-9 auditp/auditf # zfs get compression auditp/auditf NAME PROPERTY VALUE SOURCE auditp/auditf compression gzip-9 local # audit -s # zfs get compressratio auditp/auditf NAME PROPERTY VALUE SOURCE auditp/auditf compressratio 16.89x -
gzip-9 圧縮アルゴリズムでは、デフォルトの圧縮アルゴリズムである lzjb に比べて、占有する容量が 1/3 少ないファイルが生成されます。詳細は、『Oracle Solaris 11.1 の管理: ZFS ファイルシステム』の第 5 章「Oracle Solaris ZFS ファイルシステムの管理」を参照してください。
Oracle Solaris OS は、ソースには関係なく、すべてのログインを監査できます。
始める前に
Audit Configuration 権利プロファイルが割り当てられている管理者になる必要があります。詳細は、「割り当てられている管理権限を使用する方法」を参照してください。
このクラスは、ログイン、ログアウト、および画面ロックを監査します。これらのクラスは、デフォルトで監査されます。
# auditconfig -getflags active user default audit flags = lo(0x1000,0x1000) configured user default audit flags = lo(0x1000,0x1000) # auditconfig -getnaflags active non-attributable audit flags = lo(0x1000,0x1000) configured non-attributable audit flags = lo(0x1000,0x1000)
# auditconfig -getflags active user default audit flags = as,st(0x20800,0x20800) configured user default audit flags = as,st(0x20800,0x20800) # auditconfig -setflags lo,as,st user default audit flags = as,lo,st(0x21800,0x21800) # auditconfig -getnaflags active non-attributable audit flags = na(0x400,0x400) configured non-attributable audit flags = na(0x400,0x400) # auditconfig -setnaflags lo,na non-attributable audit flags = lo,na(0x1400,0x1400)
注 - ssh ログインを監査するには、システムで Oracle Solaris から ssh デーモンが実行されている必要があります。このデーモンは、Oracle Solaris システム上の監査サービスに合わせて変更されています。詳細は、「Secure Shell と OpenSSH プロジェクト」を参照してください。
FTP サービスは、ファイル転送のログを作成します。ssh プロトコルの下で実行される SFTP サービスは、ft 監査クラスを事前選択することによって監査できます。これらの両方のサービスへのログインを監査できます。
始める前に
Audit Configuration 権利プロファイルが割り当てられている管理者になる必要があります。詳細は、「割り当てられている管理権限を使用する方法」を参照してください。
使用可能なログ作成オプションについては、ProFTPD Logging を参照してください。
ft クラスには、次の SFTP トランザクションが含まれています。
% auditrecord -c ft file transfer: chmod ... file transfer: chown ... file transfer: get ... file transfer: mkdir ... file transfer: put ... file transfer: remove ... file transfer: rename ... file transfer: rmdir ... file transfer: session start ... file transfer: session end ... file transfer: symlink ... file transfer: utimes
次の出力に示すとおり、proftpd デーモンへのログインおよびログアウトで監査レコードが生成されます。
% auditrecord -c lo | more ... FTP server login program proftpd See in.ftpd(1M) event ID 6165 AUE_ftpd class lo (0x0000000000001000) header subject [text] error message return FTP server logout program proftpd See in.ftpd(1M) event ID 6171 AUE_ftpd_logout class lo (0x0000000000001000) header subject return ...