この章では、プロファイルマネージャ、ファイルマネージャ、デバイス割り当てマネージャのほか、Trusted Solaris の管理に使用するさまざまなユーティリティプログラムの概要を説明します。
Trusted Solaris 環境で使用できる全コマンドについては、次の各マニュアルページを参照してください。Intro(1)、Intro(1M)、Intro(2)、 Intro(3)、Intro(4)、Intro(5)、Intro(7)、Intro(9)、 Intro(9F)。
プロファイルマネージャは、プロファイルの操作に使用するメインツールです。Trusted Solaris のデフォルトの実行プロファイルには、大概の組織の一般ユーザーや管理役割ユーザーに必要な機能が揃っています。アプリケーションの特権を変更したり、新しいアプリケーションを追加して特定ユーザーだけが使用できる特権を割り当てなければならない場合、また、プロファイルの変更や作成が必要な場合に、プロファイルマネージャを使用します。プロファイルマネージャを使用すると、次の図に示すように、tsolprof データベースの値を管理できます。
プロファイルマネージャにはアプリケーションマネージャからアクセスします。プロファイルマネージャのメインウィンドウには、「アクション表示モード」、「コマンド表示モード」、「承認表示モード」の 3 種類の表示モードがあり、入力する情報に応じて異なったグラフィカルインタフェース構成の画面が表示されます。モードの選択は「表示 (View)」メニューから行います。次の図に、コマンドモードのプロファイルマネージャを示します。
プロファイルマネージャには次のような主要機能がありますが、表示モードによっては表示されない機能もあります。
「プロファイル (Profiles)」メニュー : プロファイルを作成する、開く、保存する
「表示 (View)」メニュー : 表示モードを変更する
プロファイルの識別情報領域 : プロファイルの識別情報と説明
アイテム選択リスト : 追加または削除するアイテムを指定する
アイテム記述領域 : 選択したアイテムの説明。アイテムの説明が表示されるのは承認表示モードとアクション表示モードの場合だけです。コマンド表示モードではマニュアルページが表示されます。
リスト編集制御ボタン : リストからリストへアイテムを移動させる。アイテムを 1 つずつ移動させるときは矢印ボタンをクリックするか、アイテムをダブルクリックします。リスト中の全アイテムを移動させるときは「すべてを選択 (Select All)」ボタンか「すべてを消去 (Clear All)」ボタンを使います。「すべてを選択 (Select All)」ボタンで全プロファイルが「含む (Included)」リストに移動し、「すべてを消去 (Clear All)」ボタンで「含む (Included)」リストから削除されます。
コマンド表示モードの場合はファイルマネージャから、アクション表示モードの場合はアプリケーションマネージャから、プロファイルを「含む (Included)」リストにドラッグ&ドロップできます。
アイテム属性制御ボタン : 選択したアイテムのラベル範囲と実効 UID、実効 GID を指定する
次の図は、プロファイルマネージャで実行プロファイルを作成する方法を示しています。
図 7-3 は、プロファイルマネージャで実行プロファイルを作成する方法を示しています。
アクション表示モード : プロファイルへのアクションの追加、アクションの編集。特権、最上位 (最下位) 機密ラベル、実効 UID (GID) などを割り当てる場合は、該当ボタンをクリックして、割り当て用のダイアログボックスを開きます。
コマンド表示モード : プロファイルへのコマンドの追加、コマンドの編集。アクション表示モードと同様にして、特権、機密ラベル、実効 UID (GID) を割り当てることができます。
Trusted Solaris 環境でファイルシステムをマウントする方法は、標準 Solaris システムの場合とほとんど同じです。標準的なマウント情報はクライアントの vfstab ファイルに、共有情報はサーバーの dfstab ファイルに入力します。また、 mount(1M) コマンドで、動的にマウントの設定を行うこともできます。
Trusted Solaris 環境のマウント設定で特に異なる点は、次のとおりです。
vfstab(4) ファイルの機能を補う特別ファイル、vfstab_adjunct を使用する
この特別ファイルには、ファイルシステムに適用されるセキュリティ属性が格納されます。
サーバーの tnrhdb ファイルに、クライアントに適用するテンプレートを格納する
2 台の Trusted Solaris ホスト (sun_tsol) 間のマウントを設定する場合は、Trusted Solaris ホストのテンプレートを使用します。Trusted Solaris ホストとラベルなしホスト間のマウントを設定する場合は、デフォルトにより、データはすべて、tnrhdb ファイルでラベルなしホスト用に指定されている単一の機密ラベルで転送されます。ただし、vfstab_adjunct ファイルを使用するか、mount コマンドに -S オプションを付けて実行すれば、マウント時にラベルなしで異なるセキュリティ属性を指定することもできます。マウントは、Trusted Solaris ホスト、TSIX ホスト、ラベルなしホスト間でしか実行されません。
サーバーとクライアント間の物理接続が、認可チェックに合格している (「Trusted Solaris のルーティング」を参照)
UID が 0 で、mount(1M) コマンドを実行できる
mount コマンドを実行できるのは、mount コマンドが含まれており、実効 UID が 0 に指定され、ADMIN_LOW で実行される実行プロファイルを持った役割またはユーザーアカウントだけです。mount コマンドには次の特権が必要です。sys_mount、file_dac_read、file_dac_write、file_dac_search、file_mac_read、file_mac_write、file_mac_search、net_privaddr、proc_setsl、proc_setil (情報ラベルが構成されている場合)、proc_setclr、sys_trans_label。以上の特権については、priv_desc(4) を参照してください。また、マウント関連のコマンドについては、「Trusted Solaris でのファイルシステムのマウント」、マウント方法については、『Trusted Solaris 管理の手順』の第 11 章「ファイルおよびファイルシステムの管理」を参照してください。
vfstab_adjunct ファイルと -S オプションを付けた mount コマンドを使用すると、マウント時にセキュリティ属性を指定できます。
指定できるセキュリティ属性には次のものがあります。
アクセス ACL - マウントされたファイルシステムのディレクトリとファイルにデフォルトで適用されるアクセス制御リスト
デフォルト ACL - マウントされたファイルシステムの新規ディレクトリとファイルに適用される ACL
UID - ファイルの所有者
GID - 所有者が属するグループ
機密ラベル - ファイルの機密ラベル
強制された特権 - マウントされたファイルシステムの実行可能ファイルに適用される強制された特権のセット
許容された特権 - マウントされたファイルシステムの実行可能ファイルに適用される許容された特権のセット
ラベル範囲 - マウントされたファイルシステムのディレクトリとファイルに適用される機密ラベルの範囲
あらかじめ設定されている監査属性
Trusted Solaris では、ほとんどのユーザーに、アクセス権の設定が許可されています。ただし、特権とラベルを変更できるのは、管理者と承認されたユーザーだけです。この節では、ファイルシステムに特権とラベルセキュリティ属性を設定するためのファイルマネージャの機能について説明します。なお、ファイルマネージャの詳細については、『Trusted Solaris ユーザーズガイド』の第 5 章「ファイルとディレクトリの管理」を参照してください。
Trusted Solaris 環境では、ファイルマネージャからもコマンド行からも、ファイルのプロパティを管理できます。
ファイルマネージャのポップアップメニュー (次の図を参照) には、標準 Solaris にはない項目があります。Trusted Solaris 特有の項目は次の 2 つです。
「特権 (Privileges)」
「ラベル (Labels)」
コマンド行からファイルのセキュリティ属性を変更する方法については、「コマンド行からファイルのセキュリティ属性を変更する」を参照してください。
ファイルシステムのセキュリティ属性の変更方法については、「ファイルシステムユーティリティ」を参照してください。
ファイルマネージャのポップアップメニューから「特権 (Privileges)」オプションを選択すると、ファイルマネージャの「特権 (Privileges)」ダイアログボックスが表示されます (次の図を参照)。このダイアログボックスでは、ファイルマネージャで選択したファイルに許容された特権と強制された特権を指定できます。ファイルマネージャを使用してファイルに特権を割り当てる方法については、「許容された特権と強制された特権の割り当て」を参照してください。
ファイルマネージャのポップアップメニューから「ラベル (Labels)」オプションを選択すると、ファイルマネージャの「ラベル (Labels)」ダイアログボックスが表示されます (次の図を参照)。Trusted Solaris 環境の他のラベル関連ダイアログボックスと同様の操作で、選択したファイルの機密ラベルと情報ラベルを設定できます。
この節では、ファイルのセキュリティ属性の取得と設定に使用するコマンドについて説明します。
getfattrflag と setfattrflag
getfpriv と setfpriv
getlabel と setlabel
testfpriv
getfattrflag(1) コマンドとsetfattrflag(1) コマンドでは、ファイル名を指定して、そのセキュリティ属性フラグを取得、設定することができます。セキュリティ属性フラグ情報を読み取れるのは、ユーザーがそのファイルのパスにある全ディレクトリに対して、検索権を持っている場合だけです。また、ファイルの必須読み取り権も必要です。
setfattrflag(1) コマンドを使用すると、ディレクトリをマルチレベルに設定したり、ディレクトリ名を公開オブジェクトに設定することができます。そのディレクトリやファイルの所有者でない場合は、FILE_OWNER 特権がないと公開属性フラグを変更することができません。
getfattrflag(1) コマンドを使用すると、指定したファイルやディレクトリのセキュリティ属性を確認することができます。
次の例では、もともと専有ファイルである myFile というファイルを、setfattrflag(1) コマンドで公開ファイルに変換しています。
% getfattrflag myFile myFile: not a public object % setfattrflag -p 1 myFile % getfattrflag myFile myFile: is a public object
getfpriv(1) コマンドとsetfpriv(1) コマンドでは、ファイルの特権 (強制された特権と許容された特権の両方) を取得、設定することができます。次の例では、myFile というファイルの現在の特権を取得した後、そのファイルに file_mac_read 特権を設定しています。
% getfpriv myFile myFile FORCED: none ALLOWED: all % setfpriv -s -f file_mac_read myFile % getfpriv myFile myFile FORCED: file_mac_read ALLOWED: all
getlabel(1) コマンドとsetlabel(1) コマンドでは、ファイルの機密ラベルを取得、設定することができます。
次の例では、myFile というファイルの初期の機密ラベルを取得し、再設定しています。
% getlabel myFile myFile: ADMIN_LOW [C] % setlabel -s SECRET myFile % getlabel myFile myFile: CONFIDENTIAL [S]
testfpriv(1) コマンドでは、ファイルに対応付けられた特権セットの確認や評価を行います。基本的には、特権の種類 (強制された特権または許容された特権)とファイルを指定すると、その特権がファイルの特権セットに含まれているかどうかが示されます。ファイルへの MAC 読み取りアクセス権が必要です。
この項では、ファイルシステムの操作方法について、標準 Solaris と Trusted Solaris との相違点を説明します。
Trusted Solaris には、ファイルに関連するさまざまなセキュリティ属性があります。標準 Solaris で使用されているアクセス制御リスト (ACL) やファイルアクセス権のほかにも、次のような属性が用意されています。
getfsattr
setfsattr
newsecfs
getfsattr(1M) コマンドは、指定したファイルのセキュリティ属性を表示します。
setfsattr(1M) コマンドは、既存または新規のファイルシステムにセキュリティ属性を設定します。setfsattr は、ファイルシステムのマウントを解除した状態で使用します。
newsecfs(1M) コマンドの機能は setfsattr コマンドの機能とほぼ同じです。新規のファイルシステムだけにセキュリティ属性を設定します。
Trusted Solaris でのファイルシステムのマウント方法は、標準 Solaris の場合と若干異なります。ファイルシステムのマウント関連のコマンドには次のものがあります。
mount
mountd
mount_ufs
mount_hsfs
mount_tmpfs
mount_nfs
share_nfs
share
unshare
nfsstat
nfsd
Trusted Solaris 環境でのマウントの概要については、「Solaris ネットワークコマンドとの相違点」を参照してください。
Trusted Solaris 版の mount(1M) コマンドには、sys_mount 特権が必要です。また、マウント先とマウントされるデバイスには、必須および任意の読み取りアクセス権 (または無効化特権) が必要です。vfstab_adjunct ファイルの構成によっては、 proc_setsl と proc_setclr 特権の組み合わせが必要となる場合もあります。mount コマンドではマルチラベルディレクトリ (MLD) へのマウントが可能です。また、 -S という特別なオプションを使って、ファイルシステムのマウントに対応付けるセキュリティ属性を指定できます。このオプションを使用できるのは、指定した機密ラベルの認可上限が十分である場合だけです。
Trusted Solaris 版の mountd(1M) コマンドには、sys_nfs 特権が必要です。このコマンドでは、マルチラベルディレクトリ (MLD) へのマウントが可能です。
Trusted Solaris 版の mount_ufs(1M) コマンドは、クォータをサポートしていません。このコマンドでは、-o を付けて、次の 2 つのオプションを指定できます。
nodev - デバイス特殊ファイルを開くことを禁止する
nopriv - 実行可能ファイルの強制された特権を無視する
mount_ufs コマンドを使用するには、sys_mount 特権が必要です。また、マウント先とマウントされるデバイスには、必須および任意の読み取りアクセス権 (または無効化特権) が必要です。vfstab_adjunct ファイルの構成によっては、proc_setsl と proc_setclr 特権の組み合わせが必要となる場合もあります。
Trusted Solaris 版の mount_hsfs(1M) コマンドを使用するには、sys_mount 特権が必要です。また、マウント先とマウントされるデバイスには、必須および任意の読み取りアクセス権 (または無効化特権) が必要です。vfstab_adjunct ファイルの構成によっては、 proc_setsl と proc_setclr 特権の組み合わせが必要となる場合もあります。
Trusted Solaris 版の mount_tmpfs(1M) コマンドを使用するには、sys_mount 特権が必要です。また、マウント先とマウントされるデバイスには、必須および任意の読み取りアクセス権 (または無効化特権) が必要です。vfstab_adjunct ファイルの構成によっては、 proc_setsl と proc_setclr 特権の組み合わせが必要となる場合もあります。
Trusted Solaris 版の mount_nfs(1M) コマンドでは、-S を付けて、次のオプションを指定できます。
dev と nodev - キャラクタ型デバイスやブロック型デバイスへのアクセスを許可または拒否する。デフォルトでは dev に設定されています。
priv と nopriv - 実行可能ファイルの強制された特権を許可または拒否する。デフォルトでは priv に設定されています。
なお、このリリースでは、オプション quota と noquota は削除されています。
mount_nfs を実行するには、次の属性が必要です。
sys_mount 特権
proc_upgrade_sl 特権
実効 UID 0
プロセス機密ラベル [ADMIN_LOW]
mount_nfs コマンドには、sys_mount および net_privaddr 特権が必要です。また、マウント先とマウントされるデバイスには、必須および任意の読み取りアクセス権 (または無効化特権) が必要です。vfstab_adjunct ファイルの構成によっては、プロセスに proc_setsl と proc_setclr 特権の組み合わせが必要となる場合もあります。
Trusted Solaris 版の share_nfs(1M) コマンドでは、-S を付けて、次のオプションを指定できます。
dev と nodev - キャラクタ型デバイスやブロック型デバイスへのアクセスを許可または拒否する。デフォルトでは dev に設定されています。
priv と nopriv - 実行可能ファイルの強制された特権を許可または拒否する。デフォルトでは priv に設定されています。
share_nfs を実行するには、次の属性が必要です。
sys_nfs 特権
実効 UID 0
プロセス機密ラベル [ADMIN_LOW]
share(1M) コマンドは、指定した種類のファイルシステムのリソースをマウント可能にします。unshare(1M) コマンドは、リソースのマウントを不能にします。Trusted Solaris 版では、どちらのコマンドにも sys_nfs 特権が必要です。
nfsstat(1M) コマンドを使用すると、カーネルに対する NFS インタフェースと RPC (遠隔手続き呼び出し) インタフェースに関する統計を表示できます。Trusted Solaris 版 nfsstat コマンドを -z オプション (統計を再度初期化する) と併せて使用する場合は、net_config 特権が必要です。
nfsd(1M) (MFS デーモン) コマンドは、クライアントファイルシステムからの要求を処理します。Trusted Solaris 版 nfsd コマンドを実行するには、sys_nfs 特権と net_mac_read 特権が必要です。
この項では、プロセスの操作に使用するコマンドについて説明します。
ipcrm
ipcs
pattr
pclear
plabel
ppriv
pprivtest
runpd
ipcrm(1) コマンドを使用すると、メッセージ待ち行列、セマフォセット、共用メモリ ID のうちいずれかを削除できます。
ipcs(1) コマンドは、アクティブなプロセス間通信機能に関する情報を出力します。オプションを使用しない場合は、メッセージ待ち行列、共用メモリ、現在システムでアクティブになっているセマフォが短形式で出力されます。
% ipcs IPC status from <running system> as of Thu Dec 26 12:55:26 1996 Message Queue facility not in system. Shared Memory: Semaphores: s 0 0x000187cf --ra-ra-ra- root root s 1 0x000187ce --ra-ra-ra- root root
pattr(1) コマンドを使用すると、現在のプロセス、または PID で指定したプロセスの表示可能なプロセス属性フラグを表示できます。通常は表示できないフラグも、特権を使用すれば表示できるようになります。プロセス属性フラグには、次のセキュリティフラグが含まれます。
トラステッドパスフラグ
特権デバッグ用フラグ
フラグ
ラベル表示フラグ (外部表示または内部表示)
ラベル変換フラグ
% pattr Trusted Path (1 bit): Enabled/Disabled Privilege Debugging (1 bit): Enabled/Disabled Label Translation (15 bits): Specific flag (Enabled/Disabled) Label View (2 bits): Internal/External NET_TCB (1 bit): Enabled/Disabled
pclear(1) コマンドを使用すると、選択したプロセスが実行されているときの認可上限を表示できます。
# pclear -p 10546 10546: ADMIN_HIGH
plabel(1) コマンドを使用すると、プロセスの CMW ラベル (機密ラベルと情報ラベルを結合したラベル) を表示できます。
# plabel -p 10546 10546: ADMIN_LOW [ADMIN_LOW]
ppriv(1) コマンドを使用すると、プロセスの有効な特権を表示できます。
# ppriv -p 10546 10546: file_chown, file_net_search, net_broadcast, net_mac_read, net_reply_equal, sys_net_config, sys_trans_label
pprivtest(1) コマンドでは、指定した特権が現在有効かどうかを確認できます。
runpd(1M) コマンドは、特権に関連した問題点のデバッグに役立ちます。このコマンドを使用すると、実行中のプロセスに必要な特権を表示できます。コマンドの実行はトラステッドパスから行います。実行すると、priv_debug プロセス属性が設定され、指定したプログラムが実行されます。runpd の実行により、特権チェックログが生成され、priv_debug プロセス属性を継承します (priv_debug プロセス属性を設定できるのは、runpd などのトラステッドパスプログラムだけです)。
runpd は、コマンドごとに終了コードを返します。runpd コマンドを使用すれば、コマンドに欠落している特権のリストも表示できます。
-p - トラステッドパスのプロセス属性を持つコマンドを実行する
システム上で runpd を使用して特権のデバッグを有効にするには、 /etc/system の tsol:tsol_privs_debug カーネル変数を 1 に設定し、/etc/syslog.conf ファイルから kern.debug とlocal0.debug エントリのコメントを解除する必要があります。
runpd コマンドの動作は正式に確定できていないため、Trusted Solaris のマイナーリリースで変更される可能性があります。
Trusted Solaris のユーザーと役割が使用できる認可上限、機密ラベル、情報ラベルのセットはすべて、label_encodings ファイルに定義されます (「ラベル」を参照)。ラベルは、内部処理では 16 進式で格納されていますが、ユーザー画面には、特に指定しない限り ASCII 形式で表示されます。
Trusted Solaris でラベルの管理に使用するコマンドは次の 3 つです。
chk_encodings
atohexlabel
hextoalabel
chk_encodings(1M) コマンドは、指定した label_encodings ファイルの構文と、そのセマンティクスを確認します。検出されたエラーは標準出力ファイルに書き込まれます。
atohexlabel(1M) コマンドは、ASCII 形式ラベル (機密ラベル、情報ラベル、認可上限など) を標準の 16 進式ラベルに変換し、その結果を標準出力ファイルに書き込みます。ASCII 形式のラベルが指定されなかった場合は標準入力から読み取ります。
hextoalabel(1M) コマンドは、16 進形式のラベル (機密ラベル、情報ラベル、認可上限など) を、標準の ASCII 形式ラベルに変換し、その結果を標準出力ファイルに書き込みます。16 進ラベルが指定されなかった場合は標準入力から読み取ります。
デバイスは、コンピュータからのデータのインポートやエクスポートの手段として使用されるため、セキュリティ保護されていなくてはなりません。Trusted Solaris 環境では、デバイスは実行プロファイルに割り当てた承認と、必須アクセス制御によって制御されます。割り当て可能なデバイスには、テープドライブ、フロッピーディスクドライブ、マイクロフォンなどがあります。
デバイス割り当て機能は、Solaris の SunSHIELD 基本セキュリティモジュール (Basic Security Module、BSM) によって提供されています。これについては、『SunSHIELD 基本セキュリティモジュール』の第 4 章「デバイスの割り当て」を参照してください。ラベル範囲には、Trusted Solaris 独自のものが使用されます。
データのインポートやエクスポートを制御する手段は、デバイス割り当ての結果、確定します。Trusted Solaris 環境では、まず管理者がデータのインポートとエクスポートに使用するデバイスを決め、/etc/security/device_maps と /etc/security/device_allocate の 2 つのファイルに定義します。
ユーザーがデバイスを割り当てるときは、デバイス割り当てマネージャを使用します。デバイス割り当てマネージャでデバイスをマウントし、デバイス clean スクリプトを実行してデバイスを使用可能にし (「デバイス clean スクリプト」を参照)、割り当てを行います。デバイスを使用した後も、デバイス割り当てマネージャから割り当てを解除します。この場合は、別のデバイス clean スクリプトを実行し、使用したデバイスのマウントと割り当てを解除します。
デバイス割り当てマネージャは、フロントパネルのスタイルマネージャの上にある「トラステッド・デスクトップ (Trusted Desktop)」サブパネルから起動します。デバイス割り当てマネージャは、デバイス割り当て承認を持つユーザーが、デバイスの割り当てと割り当て解除のためだけに使用できます。デバイス割り当てマネージャの「デバイスの管理 (Device Administration)」ボタンを使用して、デバイスが現在別のユーザーに割り当てられているかどうかを確認したり、デバイスの管理を行うことは、一般ユーザーには許可されていません。このボタンは、承認されたユーザーと管理者だけが使用できます。次の図は、デバイス割り当てマネージャの管理ツールの一覧です。
デバイス割り当てマネージャのメインウィンドウで「デバイスの管理 (Device Administration)」ボタンをクリックすると、「管理 (Administration)」ダイアログボックスが表示されます。このダイアログボックスでは、デバイスを選択した後、そのデバイスの状態を確認できます。「再利用 (Reclaim)」ボタンをクリックすると、現在エラー状態のデバイスが使用できる状態になります。「解除 (Revoke)」ボタンをクリックすると、選択したデバイスがビジー (割り当て済み) 状態から使用可能な (割り当て解除) 状態になります。これらのボタンを使用するには、「デバイスの解除または再設定」の承認が必要です。
「構成 (Configuration)」ダイアログボックスを使用するには、「デバイスの属性を構成」の承認が必要です。「管理 (Administration)」ダイアログボックスの「構成 (Configuration)」ボタンをクリックすると、「構成 (Configuration)」ダイアログボックスが表示されます。このダイアログボックスでは、デバイスラベル範囲内での最下位および最上位機密ラベルの設定、新しいデバイス clean プログラム (デバイスをクリーンアップするプログラム) の指定、デバイスを使用できるユーザーの指定などができます。
「構成 (Configuration)」ダイアログボックスの「承認 (Authorizations)」ボタンをクリックすると、「承認 (Authorizations)」ダイアログボックスが表示されます。ここでは、デバイスを使用するために必要な承認を指定できます。
デバイスの割り当てに関するセキュリティポリシーは変更可能です。ポリシーの変更は、device_policy(4) ファイルを編集して行います。これについては、『Trusted Solaris 管理の手順』の第 15 章「デバイスの管理」を参照してください。
デバイス割り当てマネージャを使用できない場合は、次に説明するコマンドを使用して、割り当て可能なデバイスを管理することができます。これらのコマンドはユーザー用ではありません。
allocate(1M) コマンドの割り当て機構を利用して、デバイスの所有権を管理することができます。認定されたユーザー 1 人がデバイスを使用している間、他のユーザーが、そのデバイスを使用することはできなくなります。
deallocate(1M) コマンドは、このコマンドを実行したユーザーに割り当てられているデバイスの割り当てを解除します。解除されるのは、device_deallocate(4) ファイルに定義されたデバイス、あるいは、そのデバイスに対応するデバイス特殊ファイルに定義されたデバイスです。deallocate コマンドは、デバイスに対応付けられた全デバイス特殊ファイルの所有権とアクセス権を取り消し、そのデバイスに対するユーザーのアクセス権も無効にします。スーパーユーザーが、別のユーザーのデバイスに対するアクセス権を解除する場合などに使用されます。
割り当て解除 (強制的な解除も含む) を行うと、device_deallocate(4) の内容に応じて、適切なデバイスのクリーンアッププログラムが実行されます。クリーンアッププログラムは通常、/etc/security/lib ディレクトリに格納されています。
list_devices(1M) コマンドは、指定された識別情報に従って、システム内の割り当て可能なデバイスを一覧表示します。
リストには、デバイスと、そのデバイスに対応するすべてのデバイス特殊ファイルが表示されます。オプションのデバイス引数を使用しない場合は、関連するデバイスがすべて表示されます。
dminfo(1M) コマンドは、デバイスマップファイルのデバイスエントリに関する情報を表示します。
add_drv(1M) コマンドは、新しくインストールしたデバイスの情報をシステムに通知する場合に使用します。add_drv コマンドを使用するには、sys_devices 特権が必要です。
rem_drv(1M) コマンドは、削除されたデバイスの情報をシステムに通知する場合に使用します。rem_drv コマンドを使用するには、sys_devices 特権が必要です。
デバイス clean スクリプトは、次の 2 つのセキュリティ条件に対応した特別なスクリプトです。
メディアのラベル付け - 取り外しの可能な情報記憶媒体に、機密ラベルと情報ラベルを示す物理ラベルを付ける。取り外し可能な記憶媒体にラベルを付ける責任は最終的にはユーザーに委ねられています。デバイス clean スクリプトを実行すると、ユーザーにラベル付けを行うよう促すメッセージが画面に表示されます。
特定のデバイスで実行するデバイス clean スクリプト名は、そのデバイスのエントリとともに device_allocate(4) ファイルに格納されます。デバイス clean プログラムの動作はデバイスごとに異なります。
デバイス clean プログラムは次の処理を実行します。
媒体を取り外す - 取り外し可能な媒体に情報を格納しているデバイスは、割り当て解除や再割り当ての際に強制的にその媒体を取り外さなくてはならない。この処置により、機密ラベルの異なるユーザーが同じデバイスを使用する場合にも、情報が流出する恐れはなくなる
デバイスの状態をリセットする - 状態情報を保持するデバイスは、ユーザーに秘密チャネルとして悪用される恐れがある。したがって、デバイスの割り当て解除の際に、ドライバの状態情報をデフォルト値にリセットしておく必要がある
媒体へのラベル付けを促す - 取り外し可能な媒体には、適切な外部媒体のラベルを付ける必要がある。デバイスが持つユーザーの機密ラベルと情報ラベルは、そのデバイスの起動時に clean プログラムに渡される (インタフェースの詳細については、device_clean(1M) のマニュアルページを参照)
割り当て可能なデバイスすべてにデバイス clean プログラムが要求されるわけではありません。状態情報を保持しておらず、取り外し可能な媒体を使用していないデバイスにはデバイス clean プログラムは必要ありません。
Trusted Solaris では、テープ、フロッピーディスク、CD-ROM、オーディオデバイス用のデバイス clean プログラムを用意しています。また、ユーザーデバイス割り当て機構は構成可能です。管理者は新しいデバイスをインストールした後、デバイス clean プログラムを独自に構成することができます。
device_allocate
device_deallocate
device_maps
device_allocate(4) ファイルは、割り当て可能な物理デバイスごとに、承認情報と必須アクセス制御情報を保持します。各エントリには、次の情報が定義されます。
デバイス名
デバイスの種類
デバイスの最下位ラベル
デバイスの最上位ラベル
デバイスの承認リスト
デバイス clean プログラム (オブジェクトの再利用ポリシーを強制するためのスクリプト)
コメント
デバイス割り当て解除機構では、システムブート、ユーザーのログアウト、タイムアウト後の強制ログアウトなどのイベントが発生したときに、デバイスの割り当てを強制的に解除するか、そのままにしておくか、またはユーザーに判断させるかが判断されます。device_deallocate(4) ファイルは、このようなイベントが発生した際、ユーザーがまだ割り当て解除していないデバイスに、デバイス割り当て解除オプションを指定します。
各デバイスの割り当て解除オプションのエントリには次の項目が定義されます。
デバイス名
システムブートオプション (ブート時の扱い)
ユーザーログアウト (ユーザーがログアウトした場合の扱い)
強制されたログアウト (ユーザーがログアウトを強制された場合の扱い)
device_maps(4) ファイルは、物理デバイス名とデバイス特殊ファイルを対応付けします。各デバイスのエントリには次の項目が定義されます。
割り当て可能なデバイスには、それぞれに機密ラベル範囲が設定されます。デバイスがユーザーに割り当てられている間は、データのインポートやそのユーザーのプロセス機密ラベルが使用されます。
ラベル範囲を持つデバイスには、テープドライブ、フロッピーディスクドライブ、CD-ROM ドライブ、プリンタなどがあります。
ndd(1M) コマンドは、選択した構成パラメータを特定のカーネルドライバで管理するためのコマンドです。このコマンドでドライバパラメータを設定するには、SYS_NET_CONFIG 特権の継承が必要です。
kstat(3K) コマンドを使用すると、ドライバが受け取った割り込み回数やNFS 操作の実行回数など、カーネルドライバの統計を表示できます。このタイプの情報には雑音が多く、変調が困難で、記録された操作の実行時の速度に依存するため、使用可能な隠しチャネルを使用します。この状況が受け入れられない場合は、インストール時に /dev/kstat の機密ラベルを ADMIN_LOW から ADMIN_HIGH に変更する必要があります。さらに、/dev/kstat の読み取りや書き込みを行うプログラムを ADMIN_HIGH で実行するか、file_mac_read または file_mac_write 特権を取得して実行する必要があります。
/dev/kstat の機密ラベルを変更するには、/etc/security/tsol/minor_perm.adjunct ファイルを編集して、kstat を ADMIN_HIGH に設定するコマンド行のコメントを外します。この行は、"#kstat:kstat0x7777777..." で始まっています。
/dev/kstat にアクセスし、ADMIN_HIGH または特権を使用して実行しなくてはならないコマンドには次のものがあります。netstat、in.rwhod、cachefslog、 cachefsstat、nfsstat、fuser、iostat、mpstat、prtdiag、psrinfo、 rpc.rstat、sad、sendmail、vmstat、w、lux。
adminvi(1M) コマンドは vi コマンドの一種で、テキスト編集環境に制約を加えることができます。シェルコマンドの実行や、コマンド行に指定されていないファイルへの書き込みを禁止する以外は、vi と全く同じです。
rdate(1M) コマンドは、リモートホストからシステム日付を設定するためのコマンドです。正しく実行するには、sys_config 特権の継承が必要です。
sendmail(1M) コマンドは、メッセージの送信に使用されます。Trusted Solaris 版では、セキュリティ条件に対応できるよう変更されています。
次の守秘オプションが追加されています。
tsoladminlowupgrade - メールをユーザーの最下位ラベルに昇格させる
tsoladminlowaccept - ADMIN_LOW でメールを配信する
tsoladminlowreturn - ADMIN_LOW のメールを送信側に返送する
tsolotherlowupgrade - メールをユーザーの最下位ラベルに昇格させる
tsolotherlowaccept - ユーザーの最下位ラベルより低いラベルのメールを配信する
tsolotherlowreturn - ユーザーの最下位ラベルより低いラベルのメールを送信側に返送する (デフォルト)
tsol* オプションでは、機密ラベル ADMIN_LOW でメッセージを受信した場合や、受信側の最下位機密ラベルより低い機密ラベルで受信した場合に、どのようなアクションをとるのがふさわしいかを設定します。いずれの場合も、次の 3 種類のオプションを指定できます。
upgrade - 受信側の最下位機密ラベルでメッセージを配信する
accept - メッセージと同じ機密ラベルでメッセージを配信する
return - 送信側にメッセージを返送する
オプション -ba、-bd、-bi、-bs、-bt、-bv、-M、-q を使用するには、sendmail コマンドをトラステッドパスから呼び出し、決められた特権を継承させる必要があります。sendmail がトラステッドパス以外から呼び出された場合、-d オプションと -x オプションは、無視されます。-bp オプションは、キューに並んだメッセージのうち、プロセスよりもレベルの低いものだけを一覧表示します。構成ファイル内の処理用オプションである -p を使用すれば、受信側の最下位ラベルよりも低い機密ラベルで受信したメールの処理方法を指定できます。Trusted Solaris 用に変更されたオプションの詳細は次のとおりです。
-ba - ARPANET モードに移行する。入力行の末尾には、必ず改行を挿入してください。メッセージはすべて、末尾に改行を付けた状態で生成されます。さらに、「From:」フィールドと「発信者 (Sender:)」フィールドの送信者名も検査されます。このオプションを使用するには、機密ラベル ADMIN_LOW で、トラステッドパスから sendmail を呼び出さなくてはなりません。また、-bd オプションと同じ特権を継承する必要があります。
-bd - デーモンとして動作し、SMTP 接続の着信を待機する。このオプションを使用するには、機密ラベル ADMIN_LOW で、トラステッドパスから sendmail を呼び出さなくてはなりません。また、NET_MAC_READ、NET_PRIVADDR、PROC_NOFLOAT、 PROC_SETIL 特権を継承する必要があります。
-bi - aliases(4) データベースを初期化する。このオプションを使用するには、機密ラベル ADMIN_LOW で、トラステッドパスから sendmail を呼び出さなくてはなりません。また、-bd オプションと同じ特権を継承する必要があります。
-bp - メール待ち行列の要約を印刷する。プロセスよりも優位でない機密ラベルを持つメッセージだけが表示されます。
-bs - RFC 821 の記述に従って SMTP プロトコルを使用する。このフラグには、SMTP と互換性のある -ba フラグの全機能が含まれています。このオプションを使用するには、機密ラベル ADMIN_LOW で、トラステッドパスから sendmail を呼び出さなくてはなりません。また、-bd オプションと同じ特権を継承する必要があります。
-bt - アドレステストモードで動作する。このモードは、アドレスを読み取り、構文解析の手順を表示するため、構成テーブルのデバッグ用として使用されます。このオプションを使用するには、機密ラベル ADMIN_LOW で、トラステッドパスから sendmail を呼び出さなくてはなりません。また、-bd オプションと同じ特権を継承する必要があります。
-bv - 名前の照合専用。メッセージの収集や配信には使用しない。照合モードは通常、ユーザーやメール送信リストが妥当かどうかを検査する目的で使用されます。このオプションを使用するには、機密ラベル ADMIN_LOW で、トラステッドパスから sendmail を呼び出さなくてはなりません。また、-bd オプションと同じ特権を継承する必要があります。
-d X - デバッグ値を X に設定する。このオプションを使用できるのは、管理役割だけです。
-f name - メールの送信者である発信元のユーザー名を設定する。トラステッドユーザーだけが使用できます。
-M id - キューに並ぶメッセージのうち、メッセージ ID が -id のものを配信する。このオプションは、下位互換用です。通常は -qI オプションを使用してください。このオプションを使用するには、機密ラベル ADMIN_LOW で、トラステッドパスから sendmail を呼び出さなくてはなりません。また、-q オプションと同じ特権を継承する必要があります。
-q [time] - キューに並ぶ保存されたメッセージを指定の時間間隔で処理する。時間指定を省略すると、キューは 1 回だけ処理されます。時間はタグを付けて指定します。タグには、秒を示す s、分を示す m、時間を示す h、日を示す d、週を示す w があります。たとえば、-q1h30m と指定した場合も、-q90m と指定た場合も、どちらもタイムアウトは 1 時間 30 分に設定されます。このオプションを使用するには、機密ラベル ADMIN_LOW で、トラステッドパスから sendmail を呼び出さなくてはなりません。また、file_mac_read、file_mac_search、proc_nofloat、 proc_setil 特権を継承する必要があります。
-q Xstring - Xstringと一致するジョブに限り、待ち行列を 1 度実行する。キーとなる X には、次の文字が入ります。
I - 待ち行列の識別子に従ってジョブを制限する (-M オプションを参照)
R - 受信側に従ってジョブを制限する (-R オプションを参照)
S - 送信側に従ってジョブを制限する
待ち行列に入っているジョブは、相手のアドレスの 1 つに指定文字列が含まれていれば、承諾されます。このオプションを使用するには、機密ラベル ADMIN_LOW で、トラステッドパスから sendmail を呼び出さなくてはなりません。また、file_mac_read、file_mac_search、proc_nofloat、proc_setil 特権を継承する必要があります。
-R string - 待機中メールの待ち行列を調べ、受信側アドレスに指定文字列を含んだメッセージを配布する。このオプションは、ダウン中のマシンに宛てられたメールを排除する場合に便利です。前バージョンとも互換性があり、-qR オプションとして使用することをお薦めします。このオプションは、機密ラベル ADMIN_LOW で、トラステッドパスから sendmail を呼び出した場合だけ使用できます。また、file_mac_read、file_mac_search、proc_nofloat、proc_setil 特権を継承する必要があります。
-X logfile - 指定したログファイルに sendmail による発着信トラフィックをすべて記録し、メールプログラム障害のデバッグに使用する。大量のデータが瞬時に生成されるため、できるだけ使用を控えてください。このオプションは、sendmail がトラステッドパス以外から呼び出された場合は無視されます。
システムシェルの sysh(1M) は、Bourne シェル sh(1) の一種で、rc スクリプトから実行されるコマンドの特権の制御に使用されます。sysh では、どのコマンドでも実行できますが、コマンドの実行時に使用される特権、UID、GID、機密ラベルは、プロファイルから取得されます。
システムシェルは、トラステッドパス属性を持つプロセスからしか実行できません。
使用法の詳細については、sh(1) のマニュアルページを参照してください。sysh シェルから setprof コマンドと clist コマンドを実行する方法は次のとおりです。
setprof profilename - sysh はプロファイルを指定したものに切り替え、後続のコマンドを使用するためのセキュリティ属性と特権を確定する。同じコマンドを、別の時間に別の特権を使用して実行しなければならない場合に便利なコマンドです。デフォルトのプロファイルはブートプロファイルで、sysh の起動時に参照されます。また、setprof に引数が使用されなかった場合も、デフォルトとしてブートプロファイルに切り替わります。
clist [-h] [-p] [-n] [-i] [-l] [-u] - ユーザーに許可されているコマンドのリストを表示する
-h - 各コマンドに割り当てられた 16 進式の特権リストをコマンドリストに表示する
-p - 各コマンドに割り当てられた ASCII 形式の特権リストをコマンドリストに表示する
-n - 各コマンドに割り当てられた特権のリストをコマンドリストに表示する。特権は、コンマで区切られた 10 進数で表示される
-i - 各コマンドに割り当てられた UID と GID をコマンドリストに表示する
-l - 各コマンドに割り当てられた機密ラベルをコマンドリストに表示する
-u - sysh にない特権が割り当てられたプロファイルのコマンドだけを表示する
sysh は、通常、強制された特権をすべて持っているため、この特権を使用してコマンドを実行することができます。何らかの理由で、許可されていない特権を必要とするコマンドを実行する場合は、警告メッセージを出力し、特権がないままそのコマンドを実行します。
このインタフェースの動作は確定されていないため、Trusted Solaris のマイナーリリースで変更される可能性があります。
Trusted Solaris 環境で tar(1) を使用すると、拡張セキュリティ属性と MLD や SLD の情報が含まれる tarfile を作成、処理、抽出するための関数修飾子 T が提供されます。tarfile の作成または更新中に MLD が検出されると、MLD は tar プロセスの機密ラベルと特権に従って並べられます。
Trusted Solaris 1.2 システムで作成された tarfile の処理や抽出時には、別の関数修飾子が提供されます。関数修飾子 d は、関数文字 t と x だけに組み合わせることができます。
tar を使用する際、MAC の制約が適用されます。作成、更新、抽出操作時に実施されるアクセス検査を無効にするには、適切な特権が必要となります。
tarfile の作成または更新には、次の特権が 1 つ以上必要になります。 file_mac_read、file_mac_write、file_mac_search、file_dac_read、file_dac_write、file_dac_search、sys_trans_label。
復元するためには特権が必要な拡張セキュリティ属性は、適切な特権があれば復元されます。したがって、tarfile から確実にファイルを抽出し、拡張セキュリティ属性を復元するには、次の特権が 1 つ以上必要になります。 file_mac_read、file_mac_write、file_dac_read、file_dac_write、file_setdac、file_setid、file_chown、file_owner、file_downgrade_sl、file_downgrade_il、file_upgrade_sl、file_upgrade_il、file_setpriv、file_audit、sys_devices、sys_trans_label。