ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 の管理: セキュリティーサービス Oracle Solaris 11.1 Information Library (日本語) |
パート II システム、ファイル、およびデバイスのセキュリティー
10. Oracle Solaris のセキュリティー属性 (参照)
22. Kerberos エラーメッセージとトラブルシューティング
24. Kerberos アプリケーションの使用 (タスク)
ネットワーク上で監査を有効にする前に、サイトの監査要件を満たすようにデフォルト設定を変更できます。ベストプラクティスは、最初のユーザーがログインする前に、監査構成をできるだけカスタマイズすることです。
ゾーンを実装している場合は、大域ゾーンのすべてのゾーンを監査するか、または非大域ゾーンを個別に監査するかを選択できます。概要については、「監査と Oracle Solaris ゾーン」を参照してください。計画については、「ゾーン内の監査の計画方法」を参照してください。手順については、「ゾーンでの監査サービスの構成 (タスク)」を参照してください。
次のタスクマップは、監査を構成するための手順を示しています。すべてのタスクがオプションです。
|
この手順のコマンドでは、現在の監査構成が表示されます。この手順の出力は、構成解除されたシステムから取得されています。
始める前に
Audit Configuration または Audit Control 権利プロファイルが割り当てられている管理者になる必要があります。詳細は、「割り当てられている管理権限を使用する方法」を参照してください。
# auditconfig -getflags active user default audit flags = lo(0x1000,0x1000) configured user default audit flags = lo(0x1000,0x1000)
lo は、login/logout 監査クラスのフラグです。マスク出力の形式は (success,failure) です。
注 - クラスにどのイベントが割り当てられているか、したがってどのイベントが記録されるかを表示するには、auditrecord -c class コマンドを実行します。
# auditconfig -getnaflags active non-attributable audit flags = lo(0x1000,0x1000) configured non-attributable audit flags = lo(0x1000,0x1000)
$ auditconfig -getpolicy configured audit policies = cnt active audit policies = cnt
アクティブなポリシーは現在のポリシーですが、このポリシーの値は監査サービスによって格納されていません。構成されたポリシーは監査サービスによって格納されるため、このポリシーは監査サービスを再開したときに復元されます。
$ auditconfig -getplugin Plugin: audit_binfile Attributes: p_dir=/var/audit;p_fsize=0;p_minfree=1; Plugin: audit_syslog (inactive) Attributes: p_flags=; Plugin: audit_remote (inactive) Attributes: p_hosts=;p_retries=3;p_timeout=5;
デフォルトでは、audit_binfile プラグインがアクティブです。
$ auditconfig -getqctrl no configured audit queue hiwater mark no configured audit queue lowater mark no configured audit queue buffer size no configured audit queue delay active audit queue hiwater mark (records) = 100 active audit queue lowater mark (records) = 10 active audit queue buffer size (bytes) = 8192 active audit queue delay (ticks) = 20
アクティブなキュー制御は、カーネルによって現在使用されているキュー制御です。no configured の文字列は、システムがデフォルト値を使用していることを示します。
ユーザーを見つけたあと、各ユーザーの audit_flags 属性値を表示します。
# who adoe pts/1 Oct 10 10:20 (:0.0) adoe pts/2 Oct 10 10:20 (:0.0) jdoe pts/5 Oct 12 12:20 (:0.0) jdoe pts/6 Oct 12 12:20 (:0.0) ... # userattr audit_flags adoe # userattr audit_flags jdoe
デフォルトでは、ユーザーはシステム全体の設定に関してのみ監査されます。
userattr コマンドについては、userattr(1) のマニュアルページを参照してください。audit_flags キーワードについては、user_attr(4) のマニュアルページを参照してください。
モニターするイベントを含む監査クラスを事前選択します。事前選択されたクラスに含まれていないイベントは記録されません。
始める前に
Audit Configuration 権利プロファイルが割り当てられている管理者になる必要があります。詳細は、「割り当てられている管理権限を使用する方法」を参照してください。
# auditconfig -getflags ...
# auditconfig -getnaflags ,,,
出力の説明については、「監査サービスのデフォルトを表示する方法」を参照してください。
# auditconfig -setflags lo,ps,fw user default audit flags = ps,lo,fw(0x101002,0x101002)
このコマンドは、login/logout、process start/stop、および file write クラス内のイベントの成功と失敗について監査します。
注 - auditconfig -setflags コマンドでは現在の事前選択が置き換えられるため、事前選択するすべてのクラスを指定する必要があります。
na クラスには、ほかのイベントに加えて、PROM、ブート、およびユーザーに起因しないマウントが含まれています。
# auditconfig -setnaflags lo,na non-attributable audit flags = lo,na(0x1400,0x1400)
-setnaflags オプションの有効な引数は lo と na だけです。
注 - auditconfig -setnaflags コマンドでは現在の事前選択が置き換えられるため、事前選択するすべてのクラスを指定する必要があります。
システム単位にではなく、ユーザー単位にクラスを事前選択することによって、システムパフォーマンスへの監査の影響を軽減できる場合があります。また、特定のユーザーを、システムとは若干異なる方法で監査することもできます。
ユーザーごとの監査クラスの事前選択は、audit_flags セキュリティー属性によって指定されます。「プロセスの監査特性」で説明されているように、これらのユーザー固有の値と、システムに対して事前選択されたクラスによって、そのユーザーの監査マスクが決定されます。
始める前に
root 役割になる必要があります。詳細は、「割り当てられている管理権限を使用する方法」を参照してください。
たとえば、ユーザーのサブセットの権利を定義する権利プロファイルを作成できます。その権利プロファイルが割り当てられているユーザーは同様に監査されます。
# usermod -K audit_flags=fw:no jdoe
audit_flags キーワードの形式は always-audit:never-audit です。
このユーザーについて監査される監査クラスを一覧表示します。システム全体のクラスへの変更には、キャレット (^) の接頭辞が付けられます。システム全体のクラスに追加されたクラスには、キャレットの接頭辞は付けられません。
監査イベントがシステム全体で監査される場合でも、そのユーザーについて監査されることのない監査クラスを一覧表示します。システム全体のクラスへの変更には、キャレット (^) の接頭辞が付けられます。
複数の監査クラスを指定するには、クラスをコンマで区切ります。詳細は、audit_flags(5) のマニュアルページを参照してください。
# profiles -p "System Administrator" profiles:System Administrator> set name="Audited System Administrator" profiles:Audited System Administrator> set always_audit=fw,as profiles:Audited System Administrator> end profiles:Audited System Administrator> exit
ユーザーまたは役割に Audited System Administrator 権利プロファイルを割り当てた場合、そのユーザーまたは役割は、「割り当てられたセキュリティー属性の検索順序」で説明されている検索順序に従ってこれらのフラグについて監査されます。
例 28-1 1 人のユーザーに関して監査するイベントを変更する
この例では、すべてのユーザーの監査事前選択マスクは次のとおりです。
# auditconfig -getflags active user default audit flags = ss,lo(0x11000,0x11000) configured user default audit flags = ss,lo(0x11000,0x11000)
管理者を除き、どのユーザーもログインしていません。
AUE_PFEXEC 監査イベントのシステムリソースへの影響を軽減するために、管理者は、このイベントをシステムレベルでは監査しません。代わりに、管理者は、ユーザー jdoe の pf クラスを事前選択します。pf クラスは、例 28-10 で作成されます。
# usermod -K audit_flags=pf:no jdoe
userattr コマンドによって、この追加が表示されます。
# userattr audit_flags jdoe pf:no
ユーザー jdoe がログインしたとき、jdoe の監査事前選択マスクは、audit_flags 値とシステムのデフォルト値の組み合わせになります。289 は、jdoe のログインシェルの PID です。
# auditconfig -getpinfo 289 audit id = jdoe(1234) process preselection mask = ss,pf,lo(0x0100000008011000,0x0100000008011000) terminal id (maj,min,host) = 242,511,example1(192.168.160.171) audit session id = 103203403
例 28-2 1 人のユーザーに関する監査事前選択の例外を変更する
この例では、すべてのユーザーの監査事前選択マスクは次のとおりです。
# auditconfig -getflags active user default audit flags = ss,lo(0x11000,0x11000) configured user default audit flags = ss,lo(0x11000,0x11000)
管理者を除き、どのユーザーもログインしていません。
管理者は、jdoe ユーザーに関する失敗した ss イベントを収集しないことを決定しました。
# usermod -K audit_flags=^-ss:no jdoe
userattr コマンドによって、この例外が表示されます。
# userattr audit_flags jdoe ^-ss:no
ユーザー jdoe がログインしたとき、jdoe の監査事前選択マスクは、audit_flags 値とシステムのデフォルト値の組み合わせになります。289 は、jdoe のログインシェルの PID です。
# auditconfig -getpinfo 289 audit id = jdoe(1234) process preselection mask = +ss,lo(0x11000,0x1000) terminal id (maj,min,host) = 242,511,example1(192.168.160.171) audit session id = 103203403
例 28-3 選択されたユーザーを監査する (システム全体の監査はなし)
この例では、選択された 4 人のユーザーのシステム上でのログインと役割活動が監査されます。システムに対して監査クラスは事前選択されていません。
最初に、管理者は、システム全体のフラグをすべて削除します。
# auditconfig -setflags no user default audit flags = no(0x0,0x0)
次に、管理者は、4 人のユーザーに対して 2 つの監査クラスを事前選択します。pf クラスは、例 28-10 で作成されます。
# usermod -K audit_flags=lo,pf:no jdoe # usermod -K audit_flags=lo,pf:no kdoe # usermod -K audit_flags=lo,pf:no pdoe # usermod -K audit_flags=lo,pf:no zdoe
次に、管理者は、root 役割に対して pf クラスを事前選択します。
# userattr audit_flags root # rolemod -K audit_flags=lo,pf:no root # userattr audit_flags root lo,pf:no
不当な侵入を記録し続けるために、管理者は、ユーザーに起因しないログインの監査を変更しません。
# auditconfig -getnaflags active non-attributable audit flags = lo(0x1000,0x1000) configured non-attributable audit flags = lo(0x1000,0x1000)
例 28-4 ユーザーの監査フラグを削除する
次の例では、管理者がユーザー固有の監査フラグをすべて削除します。現在ログインしているユーザーの既存のプロセスが引き続き監査されます。
管理者は、audit_flags キーワードに値を設定せずに usermod コマンドを実行します。
# usermod -K audit_flags= jdoe # usermod -K audit_flags= kdoe # usermod -K audit_flags= ldoe
次に、管理者はこの削除を確認します。
# userattr audit_flags jdoe # userattr audit_flags kdoe # userattr audit_flags ldoe
例 28-5 ユーザーのグループに対する権利プロファイルを作成する
管理者は、サイトにある管理上の権利プロファイルのすべてで pf クラスが明示的に監査されるようにしたいと考えています。割り当てを予定している権利プロファイルごとに、管理者は、監査フラグを含むサイト固有のバージョンを LDAP 内に作成します。
最初に、管理者は既存の権利プロファイルを複製し、次に、名前を変更して監査フラグを追加します。
# profiles -p "Network Wifi Management" -S ldap profiles: Network Wifi Management> set name="Wifi Management" profiles: Wifi Management> set desc="Audited wifi management" profiles: Wifi Management> set audit_always=pf profiles: Wifi Management> exit
使用を予定している権利プロファイルごとにこの手順を繰り返したあと、管理者は、Wifi Management プロファイル内の情報を一覧表示します。
# profiles -p "Wifi Management" -S ldap info name=Wifi Management desc=Audited wifi management auths=solaris.network.wifi.config help=RtNetWifiMngmnt.html always_audit=pf
デフォルトの監査ポリシーを変更することにより、監査されるコマンドに関する詳細情報を記録したり、すべてのレコードにゾーン名を追加したり、サイトのほかのセキュリティー要件を満たしたりすることができます。
始める前に
Audit Configuration 権利プロファイルが割り当てられている管理者になる必要があります。詳細は、「割り当てられている管理権限を使用する方法」を参照してください。
$ auditconfig -getpolicy ...
出力の説明については、「監査サービスのデフォルトを表示する方法」を参照してください。
$ auditconfig -lspolicy policy string description: ahlt halt machine if it can not record an async event all all policies for the zone arge include exec environment args in audit recs argv include exec command line args in audit recs cnt when no more space, drop recs and keep a cnt group include supplementary groups in audit recs none no policies path allow multiple paths per event perzone use a separate queue and auditd per zone public audit public files seq include a sequence number in audit recs trail include trailer token in audit recs windata_down include downgraded window information in audit recs windata_up include upgraded window information in audit recs zonename include zonename token in audit recs
注 - perzone および ahlt ポリシーオプションは、大域ゾーンでのみ設定できます。特定のポリシーオプションを使用した場合のトレードオフについては、「監査ポリシーについて」を参照してください。
# auditconfig [ -t ] -setpolicy [prefix]policy[,policy...]
オプション。一時的な (アクティブな) ポリシーを作成します。一時的なポリシーは、デバッグまたはテストの目的で設定できます。
一時的なポリシーは、監査サービスがリフレッシュされるか、または auditconfig -setpolicy コマンドによってポリシーが変更されるまで有効です。
prefix の値が + のときは、ポリシーのリストが現在のポリシーに追加されます。prefix の値が - のときは、ポリシーのリストが現在のポリシーから削除されます。接頭辞を指定しない場合は、監査ポリシーがリセットされます。このオプションを使用すると、現在の監査ポリシーを保持できます。
有効または無効にするポリシーを選択します。
例 28-6 ahlt 監査ポリシーオプションを設定する
この例では、厳格なサイトセキュリティーには ahlt ポリシーが必要です。
# auditconfig -setpolicy -cnt # auditconfig -setpolicy +ahlt
ahlt ポリシーの前にあるプラス記号 (+) により、このポリシーが現在のポリシー設定に追加されます。プラス記号がない場合は、ahlt ポリシーによって現在の監査ポリシーがすべて置き換えられます。
例 28-7 一時的な監査ポリシーを設定する
この例では、ahlt 監査ポリシーが構成されます。デバッグのために、管理者は trail 監査ポリシーをアクティブなポリシーに (+trail) 一時的に (-t) 追加します。trail ポリシーは、破損した監査トレールの回復に役立ちます。
$ auditconfig -setpolicy ahlt $ auditconfig -getpolicy configured audit policies = ahlt active audit policies = ahlt $ auditconfig -t -setpolicy +trail configured audit policies = ahlt active audit policies = ahlt,trail
管理者は、デバッグが完了すると trail ポリシーを無効にします。
$ auditconfig -setpolicy -trail $ auditconfig -getpolicy configured audit policies = ahlt active audit policies = ahlt
また、audit -s コマンドを実行して監査サービスをリフレッシュした場合も、この一時的なポリシーに加え、監査サービス内のほかの一時的な値がすべて削除されます。ほかの一時的な値の例については、「監査キュー制御を変更する方法」を参照してください。
例 28-8 perzone 監査ポリシーを設定する
この例では、perzone 監査ポリシーが大域ゾーン内の既存のポリシーに追加されます。perzone ポリシー設定は永続的なプロパティーとして格納されるため、perzone ポリシーはセッション中と、監査サービスが再開されたときに有効になります。ゾーンの場合、このポリシーは次のゾーンブートで使用できます
$ auditconfig -getpolicy configured audit policies = cnt active audit policies = cnt $ auditconfig -setpolicy +perzone $ auditconfig -getpolicy configured audit policies = perzone,cnt active audit policies = perzone,cnt
監査サービスは、監査キューパラメータのデフォルト値を提供します。auditconfig コマンドを使用すると、これらの値を検査、変更、および一時的に変更することができます。
始める前に
Audit Configuration 権利プロファイルが割り当てられている管理者になる必要があります。詳細は、「割り当てられている管理権限を使用する方法」を参照してください。
$ auditconfig -getqctrl ...
出力の説明については、「監査サービスのデフォルトを表示する方法」を参照してください。
監査キュー制御の例と説明については、auditconfig(1M) のマニュアルページを参照してください。
一部またはすべての監査キュー制御を変更するには、-setqctrl オプションを使用します。
# auditconfig [ -t ] -setqctrl hiwater lowater bufsz interval
たとえば、ほかの制御を設定することなく interval 値を 10 に設定します。
# auditconfig -setqctrl 0 0 0 10
特定の監査キュー制御を変更するには、そのオプションを指定します。-setqdelay オプションは、# auditconfig -setqdelay 10 のように、-setqctrl 0 0 0 interval と同等です。
# auditconfig [ -t ] -setqhiwater value # auditconfig [ -t ] -setqlowater value # auditconfig [ -t ] -setqbufsz value # auditconfig [ -t ] -setqdelay value
例 28-9 監査キュー制御をデフォルトにリセットする
管理者は、すべての監査キュー制御を設定したあと、リポジトリ内の lowater 値を元のデフォルトに変更します。
# auditconfig -setqctrl 200 5 10216 10 # auditconfig -setqctrl 200 0 10216 10 configured audit queue hiwater mark (records) = 200 no configured audit queue lowater mark configured audit queue buffer size (bytes) = 10216 configured audit queue delay (ticks) = 10 active audit queue hiwater mark (records) = 200 active audit queue lowater mark (records) = 5 active audit queue buffer size (bytes) = 10216 active audit queue delay (ticks) = 10
あとで、管理者は lowater 値を現在のセッションのデフォルトに設定します。
# auditconfig -setqlowater 10 # auditconfig -getqlowater configured audit queue lowater mark (records) = 10 active audit queue lowater mark (records) = 10
/etc/security/audit_warn スクリプトは、注意を要する可能性のある監査インシデントを管理者に通知するためのメールを生成します。このスクリプトをカスタマイズしたり、root 以外のアカウントにメールを送信したりできます。
perzone ポリシーが設定されている場合、非大域ゾーン管理者は、非大域ゾーンで audit_warn 電子メールエイリアスを構成する必要があります。
始める前に
solaris.admin.edit/etc/security/audit_warn 承認が割り当てられている管理者になる必要があります。デフォルトでは、この承認を持つのは root 役割だけです。詳細は、「割り当てられている管理権限を使用する方法」を参照してください。
次のオプションのいずれかを選択します。
オプション 1 – audit_warn スクリプトで、audit_warn 電子メールエイリアスをほかの電子メールアカウントに置き換えます。
スクリプトの ADDRESS 行にある audit_warn 電子メールエイリアスを別のアドレスに変更します。
#ADDRESS=audit_warn # standard alias for audit alerts ADDRESS=audadmin # role alias for audit alerts
オプション 2 – audit_warn 電子メールをほかの電子メールアカウントにリダイレクトします。
audit_warn 電子メールエイリアスを適切なメールエイリアスファイルに追加します。別名をローカルの /etc/mail/aliases ファイルか、または名前空間内の mail_aliases データベースに追加できます。audit_warn 電子メールエイリアスのメンバーとして root と audadmin の電子メールアカウントが追加された場合、/etc/mail/aliases エントリは次のようになります。
audit_warn: root,audadmin
次に、newaliases コマンドを実行して、aliases ファイルのためのランダムアクセスデータベースを再構築します。
# newaliases /etc/mail/aliases: 14 aliases, longest 10 bytes, 156 bytes total
独自の監査クラスを作成すると、サイトで監視する監査イベントだけをそのクラスに入れることができます。この方法により、収集されるレコード数を削減し、さらに監査トレール内のノイズも削減することができます。
1 つのシステム上でクラスを追加した場合は、監査されているすべてのシステムにその変更をコピーします。ベストプラクティスとして、最初のユーザーがログインする前に監査クラスを作成してください。
始める前に
一意のエントリのための空きビットを選択します。顧客がどのビットを使用できるかを /etc/security/audit_class ファイルで確認します。
solaris.admin.edit/etc/security/audit_class 承認が割り当てられている管理者になる必要があります。デフォルトでは、この承認を持つのは root 役割だけです。詳細は、「割り当てられている管理権限を使用する方法」を参照してください。
# cp /etc/security/audit_class /etc/security/audit_class.orig
各エントリの書式は次のとおりです。
0x64bitnumber:flag:description
各フィールドについては、audit_class(4) のマニュアルページを参照してください。既存のクラスの一覧については、/etc/security/audit_class ファイルを参照してください。
ヒント - Oracle Solaris の監査構成ファイルを使用すると、これらのファイルを含む独自のパッケージを作成し、Oracle Solaris のパッケージをサイトでカスタマイズされたファイルに置き換えることができます。パッケージ内で preserve 属性を true に設定すると、pkg サブコマンド (verify、fix、revert など) は、そのパッケージを基準にして動作します。詳細については、pkg(1) および pkg(5) のマニュアルページを参照してください。
例 28-10 新しい監査クラスを作成する
この例では、ある役割で実行される管理コマンドを保持するためのクラスを作成します。audit_class ファイルに追加されるエントリは次のとおりです。
0x0100000000000000:pf:profile command
このエントリによって、新しい pf 監査クラスが作成されます。例 28-11 で、この新しい監査クラスにデータを割り当てます。
注意事項
audit_class ファイルをカスタマイズした場合は、ユーザーまたは権利プロファイルに直接割り当てられている監査フラグがすべて、新しい監査クラスと整合性がとれていることを確認してください。audit_flags 値が audit_class ファイルのサブセットでない場合は、エラーが発生します。
既存の監査クラスのサイズを減らしたり、独自のクラスにイベントを入れたりするために、監査イベントのクラスメンバーシップを変更できます。
注意 - audit_event ファイルではイベントをコメントにしないでください。このファイルは、praudit コマンドがバイナリ監査ファイルを読み取るときに使用します。また、このファイルに一覧表示されたイベントが、保管された監査ファイルに含まれることがあります。 |
1 つのシステム上で監査イベントからクラスへのマッピングを再構成した場合は、その変更を、監査されているすべてのシステムにコピーします。ベストプラクティスとして、最初のユーザーがログインする前に、イベントからクラスへのマッピングを変更してください。
始める前に
solaris.admin.edit/etc/security/audit_event 承認が割り当てられている管理者になる必要があります。デフォルトでは、この承認を持つのは root 役割だけです。詳細は、「割り当てられている管理権限を使用する方法」を参照してください。
# cp /etc/security/audit_event /etc/security/audit_event.orig
各エントリの書式は次のとおりです。
number:name:description:class-list
監査イベント ID です。
監査イベントの名前です。
通常、監査レコードの作成を発生させるシステムコールまたは実行可能プログラム。
コンマ区切りの監査クラスの一覧です。
ヒント - Oracle Solaris の監査構成ファイルを使用すると、これらのファイルを含む独自のパッケージを作成し、Oracle Solaris のパッケージをサイトでカスタマイズされたファイルに置き換えることができます。パッケージ内で preserve 属性を true に設定すると、pkg サブコマンド (verify、fix、revert など) は、そのパッケージを基準にして動作します。詳細については、pkg(1) および pkg(5) のマニュアルページを参照してください。
例 28-11 既存の監査イベントを新しいクラスにマッピングする
この例では、既存の監査イベントを例 28-10 で作成された新しいクラスにマップします。デフォルトでは、AUE_PFEXEC 監査イベントは複数の監査クラスにマッピングされます。新しいクラスを作成することによって、管理者は、ほかのクラス内のイベントを監査することなく AUE_PFEXEC イベントを監査できます。
# grep pf /etc/security/audit_class 0x0100000000000000:pf:profile command # grep AUE_PFEXEC /etc/security/audit_event 116:AUE_PFEXEC:execve(2) with pfexec enabled:ps,ex,ua,as,cusa # pfedit /etc/security/audit_event #116:AUE_PFEXEC:execve(2) with pfexec enabled:ps,ex,ua,as,cusa 116:AUE_PFEXEC:execve(2) with pfexec enabled:pf # auditconfig -setflags lo,pf user default audit flags = pf,lo(0x0100000000001000,0x0100000000001000)