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

第 12 章 特権 (参照)

この章の内容は次のとおりです。

特権の使用方法については、第 11 章特権 (手順)を参照してください。概要については、「特権 (概要)」を参照してください。

特権を扱うための管理コマンド

次の表では、特権を扱うために使用可能なコマンドを一覧表示します。

表 12–1 特権を扱うためのコマンド

目的 

コマンド 

マニュアルページ 

プロセスの特権を検査します 

ppriv -v pid

ppriv(1)

プロセスの特権を設定します 

ppriv -s spec

 

システム上の特権を一覧表示します 

ppriv -l

 

特権とその説明を一覧表示します 

ppriv -lv priv

 

特権の障害をデバッグします 

ppriv -eD failed-operation

 

特権を新しいローカルユーザーに割り当てます 

useradd

useradd(1M)

特権を既存のローカルユーザーに追加します 

usermod

usermod(1M)

特権をネームサービスのユーザーに割り当てます 

smuser

smuser(1M)

特権を新しいローカル役割に割り当てます 

roleadd

roleadd(1M)

特権を既存のローカル役割に追加します 

rolemod

rolemod(1M)

特権をネームサービスの役割に割り当てます 

smrole

smrole(1M)

デバイスポリシーを表示します 

getdevpolicy

getdevpolicy(1M)

デバイスポリシーを設定します 

devfsadm

devfsadm(1M)

オープンデバイスでのデバイスポリシーを更新します 

update_drv -p policy driver

update_drv(1M)

デバイスポリシーをデバイスに追加します 

add_drv -p policy driver

add_drv(1M)

コマンド、ユーザー、および役割への特権の割り当ては、Solaris 管理コンソールの GUI で行うことをお勧めします。詳細については、「Solaris 管理コンソールで役割を引き受ける方法」を参照してください。

特権情報が含まれるファイル

次のファイルには、特権に関する情報が含まれます。

表 12–2 特権情報が含まれるファイル

ファイルおよびマニュアルページ 

キーワード 

説明 

/etc/security/policy.conf

policy.conf(4)

PRIV_DEFAULT

システムに対する特権の継承可能なセット 

PRIV_LIMIT

システムに対する特権の制限セット 

/etc/user_attr

user_attr(4)

ユーザーまたは役割のエントリでの defaultpriv キーワード

値は通常、Solaris 管理コンソールの GUI で設定します 

ユーザーまたは役割に対する特権の継承可能なセット 

ユーザーまたは役割のエントリでの limitpriv キーワード

値は通常、Solaris 管理コンソールの GUI で設定します 

ユーザーまたは役割に対する特権の制限セット 

/etc/security/exec_attr

exec_attr(4)

プロファイルのコマンドに対するエントリでの privs キーワード

コマンドに対するポリシーは solaris である必要があります

権利プロファイルのコマンドに割り当てられた特権の一覧 

syslog.conf

syslog.conf(4)

デバッグメッセージ用のシステムログファイル 

priv.debug エントリで設定されるパス

特権デバッグログ 


注 –

exec_attr および user_attr データベースは直接編集しないでください。特権を管理するには、Solaris 管理コンソールまたは smuser などのコマンドを使用します。詳細は、smc(1M) および smuser(1M) のマニュアルページを参照してください。手順については、「特権の管理 (作業マップ)」を参照してください。


特権と監査

特権の使用は監査することができます。プロセスで特権が使用される場合は常に、upriv 監査トークン内の監査トレールに特権の使用が記録されます。特権の名前がレコードに含まれる場合、テキスト形式が使用されます。次の監査イベントにより、特権の使用が記録されます。

基本セットに含まれる特権が正常に使用される場合は、監査されません。ユーザーの基本セットから削除された基本特権の使用を試みる場合、監査されます。

特権エスカレーションの防止

Solaris カーネルは特権エスカレーションを防ぎます。特権エスカレーションとは、特権によってプロセスがその範囲を越えたことを行えるようになることです。プロセスが特権の範囲を越えることを防ぐために、一定のシステム変更を行うには特権の完全セットが必要です。たとえば、root (UID=0) が所有するファイルまたはプロセスは、特権の完全セットを備えたプロセスによってのみ変更できます。root ユーザーは、特権がなくても root が所有するファイルを変更することができます。しかし、root ユーザー以外は、root が所有するファイルを変更するにはすべての特権が必要です。

同様に、デバイスへのアクセスを提供する操作には、有効なセットのすべての特権が必要です。

file_chown_self および proc_owner は、特権エスカレーションが生じやすい特権です。file_chown_self は、プロセスがそのファイルを渡せるようにする特権です。proc_owner は、プロセス自身が所有しないプロセスを調査できるようにする特権です。

file_chown_self 特権は、rstchown システム変数によって制限されます。rstchown 変数が 0 に設定されると、file_chown_self 特権は、システムおよび全ユーザーの初期の継承可能セットから削除されます。rstchown システム変数の詳細については、chown(1) のマニュアルページを参照してください。

file_chown_self 特権のコマンドへの割り当て、プロファイルへの配置、およびプロファイルシェルで使用するための役割への割り当ては最も安全に行います。

proc_owner 特権は、プロセス UID を 0 にするには十分ではありません。任意の UID のプロセスを UID=0 にするには、すべての特権が必要です。proc_owner 特権はシステム上のすべてのファイルに無制限の読み取りアクセス権を与えるので、この特権のコマンドへの割り当て、プロファイルへの配置、およびプロファイルシェルで使用するための役割への割り当ては最も安全に行います。


注意 – 注意 –

file_chown_self 特権または proc_owner 特権がユーザーの初期の継承可能セットに含まれるようにユーザーのアカウントを変更することができます。これらの強力な特権を任意のユーザー、役割、またはシステムに対する特権の継承可能セットに配置するには、セキュリティー上の相応の理由がなければなりません。


デバイスに対する特権エスカレーションを防ぐ方法の詳細については、「特権とデバイス」を参照してください。

レガシーアプリケーションと特権モデル

レガシーアプリケーションに対応するために、特権の実装はスーパーユーザーモデルと特権モデルで動作します。カーネルは、プログラムが特権で動作するように設計されていること示す PRIV_AWARE フラグを自動的に追跡します。特権を認識しない子プロセスについて検討してください。親プロセスから継承された特権はどれも、子の許可されたセットおよび有効なセットで使用可能です。子プロセスで UID が 0 に設定されていると、子プロセスが完全なスーパーユーザー機能を持たない場合があります。プロセスの有効なセットおよび許可されたセットは、子の制限セットの特権に限定されます。このように、特権を認識するプロセスの制限セットによって、特権を認識しない子プロセス root 特権が制限されます。