3. 構築
3.4. セキュリティポリシーのファイル構成
3.4.6. 特権デバック
特権デバックは、アプリケーションが動作する際に必要とする特権を検出するための ツールである。特権デバッグを行う場合は、対象のサービスのプログラムを runpd の後に、
オプションや引数と共に指定する。
runpd プログラム プログラム引数
起動したプロセスおよび派生するプロセスについても特権の検出が可能である。
特権デバッグを行う場合は、できる限り実装のイメージに合わせて実行することが重要
Ⅰ‑90 Copyright © 2003 IPA, All Rights Reserved.
である。動作させるラベルを[ADMIN̲LOW]以外とする場合は、動作させるラベルに特権デ バッグを行うワークスペースのラベルを変更してから行う。
3.4.6.1. 特権デバックの有効化
root 役割になり、ターミナルを起動して、/etc/system および/etc/syslog.conf を変更 する。設定後、リブートを行う。
リスト 3‑28/etc/system tsolsys:tsol̲privs̲debug=1
リスト 3‑29/etc/syslog.conf kern.debug;local7.debug /var/log/privdebug.log
Note:
インターネットサーバーのプロセスの殆どは、root(uid=0)で起動するため。特権デバックも root 役割にて行う必要がある。
root 役割にてプロセスの操作を可能とするために、secadmin 役割にて Custom Root Role プロ ファイルに Process Management プロファイルを追加しておくと便利である。
3.4.6.2. 特権デバッグ環境の準備
root 役割になり、フロントパネルから root 役割のワークスペースのボタンにマウスの カーソルを合わせ、右ボタンをクリックするとポップアップメニューが表示される。
Ⅰ‑91 Copyright © 2003 IPA, All Rights Reserved.
図 3‑17 ワークスペース操作イメージ
ポップアップメニューから[Change Workspace Label]を選択すると、ワークスペースの ラベル選択イメージが表示される。
図 3‑18 ワークスペースのラベル選択イメージ
ラベルを選択して[OK]を押すと、ワークスペースのラベルが変更される。その後そのワー クスペースからアプリケーションを起動した場合は、そのワークスペースのラベルで実行 される。
3.4.6.3. 特権デバックツール(runpd)の実行
ワークスペースからターミナルを起動して、対象のサービスのプログラムを、runpd を用
Ⅰ‑92 Copyright © 2003 IPA, All Rights Reserved.
いて、オプションや引数と共に実行する。
リスト 3‑30 特権デバックの実行(root 役割)
# runpd ‑f /usr/lib/sendmail ‑bd ‑q15m
…(省略)…
secadmin 役割になり、特権デバッグのログ(privdebug.log)を確認する。
リスト 3‑31 特権デバッグログの確認(secadmin 役割)
Feb 14 21:47:06 macaroni genunix̲policy: [ID 377770 kern.info] DEBUG:
/usr/lib/sendmail pid 1377 lacking privilege 53 to set process gids Feb 14 21:47:06 macaroni genunix̲policy: [ID 377770 kern.info] DEBUG:
/usr/lib/sendmail pid 1377 lacking privilege 70 to act as superuser Feb 14 21:47:06 macaroni last message repeated 1 time
Feb 14 21:47:06 macaroni genunix̲policy: [ID 377770 kern.info] DEBUG:
/usr/lib/sendmail pid 1377 lacking privilege 68 to modify net table Feb 14 21:47:06 macaroni last message repeated 6 times
Feb 14 21:47:07 macaroni genunix̲policy: [ID 377770 kern.info] DEBUG:
/usr/lib/sendmail pid 1377 lacking privilege 70 to act as superuser Feb 14 21:47:07 macaroni genunix̲policy: [ID 377770 kern.info] DEBUG:
/usr/lib/sendmail pid 1377 lacking privilege 68 to modify net table Feb 14 21:47:07 macaroni last message repeated 1 time
Feb 14 21:47:07 macaroni genunix̲policy: [ID 377770 kern.info] DEBUG:
/usr/lib/sendmail pid 1377 lacking privilege 70 to act as superuser Feb 14 21:47:07 macaroni genunix̲policy: [ID 377770 kern.info] DEBUG:
/usr/lib/sendmail pid 1377 lacking privilege 68 to modify net table Feb 14 21:47:07 macaroni genunix̲policy: [ID 377770 kern.info] DEBUG:
/usr/lib/sendmail pid 1377 lacking privilege 70 to act as superuser Feb 14 21:47:07 macaroni genunix̲policy: [ID 377770 kern.info] DEBUG:
/usr/lib/sendmail pid 1377 lacking privilege 68 to modify net table Feb 14 21:47:07 macaroni genunix̲policy: [ID 377770 kern.info] DEBUG:
/usr/lib/sendmail pid 1377 lacking privilege 53 to set process uids Feb 14 21:47:07 macaroni genunix̲policy: [ID 377770 kern.info] DEBUG:
/usr/lib/sendmail pid 1378 lacking privilege 10 to examine device attrs Feb 14 21:47:07 macaroni genunix̲policy: [ID 377770 kern.info] DEBUG:
/usr/lib/sendmail pid 1378 lacking privilege 10 to access file
Feb 14 21:47:07 macaroni genunix̲policy: [ID 377770 kern.info] DEBUG:
/usr/lib/sendmail pid 1378 lacking privilege 10 to examine device attrs Feb 14 21:47:07 macaroni last message repeated 3 times
…(省略)…
利用方法に従ったテストの作業を繰り返し、確認された全ての特権をまとる。
Ⅰ‑93 Copyright © 2003 IPA, All Rights Reserved.
表 3‑39 検出された特権
# 特権 (特権 ID)
1 file̲chown (2) 2 file̲mac̲read (10) 3 net̲privaddr (35) 4 proc̲setid (53) 5 sys̲net̲config (68) 6 sys̲suser̲compat (70)
Note:
アプリケーションによっては利用方法によって異なる特権が検出される場合があるため、利用 方法に従った十分なテストを行っておく必要がある。
3.4.6.4. 特権の割当ておよびテストの実行
secadmin 役割になり、起動するプログラムおよび派生するプログラムのファイルに、強 制特権および許容特権を割り当てる。通常は許容特権のみ割り当てる。この手順は 3.4.4.1(1)(A)に記載している。
リスト 3‑32 強制特権と許容特権の割り当て(secadmin 役割)
$ setfpriv ‑s ‑f none ‑a all /usr/lib/sendmail
$ setfpriv ‑s ‑f none ‑a all /usr/lib/mail.local
Custom Root Role プロファイルにプログラムを追加し、ラベルや特権の定義を行う。こ の手順は 3.4.3.4(2)(A)に記載している。
Ⅰ‑94 Copyright © 2003 IPA, All Rights Reserved.
図 3‑19 プログラム実行属性定義(secadmin 役割)
root 役割になり、対象のサービスのプログラムを、runpd を用いずに、オプションや引 数と共に起動する。
リスト 3‑33 サービスプログラムの実行(root 役割)
# /usr/lib/sendmail ‑bd ‑q15m
secadmin 役割になり、実行中のプロセスについて、特権およびラベルの確認を行う。こ の手順は 3.4.4.1(2)(C)および 3.4.5.1(2)(B)に記載している。
表 3‑40 サービスプログラムの実行属性の確認(secadmin 役割)
# ps ‑ef│ grep sendmail
root 1442 1 0 22:05:29 ? 0:00 /usr/lib/sendmail ‑bd ‑q15m root 1444 1165 0 22:05:36 pts/10 0:00 /usr/bin/grep sendmail
# plabel 1442
1442: [PUBLIC SERVICES]
# ppriv 1442
1442: net̲privaddr,proc̲setid,sys̲net̲config,sys̲suser̲compat
実行中のプロセスが期待通りの設定となっていなければ、関連するプログラムのプロ ファイルおよび強制特権と許容特権の確認を行う。この手順は 3.4.4.1(2)(A)および 3.4.5.1(2)(A)に記載している。これらが期待通りの設定となるまで作業を繰り返す。結果
Ⅰ‑95 Copyright © 2003 IPA, All Rights Reserved.
的に実際にサービスが利用できるか確認する。