オブジェクトクラスcapability, system, processを見直し,サポートすべきパーミッションを洗い出した。詳細はそのうち論文か大学向けのレポートでまとめると思う。議論したい人は,ynakamに続けて@gwu.eduまでメール下さい。
パーミッションをサポートする・しないの大まかな基準は以下。
なお,「サポートしない」の意味は,そのパーミッションが全ドメインに対してallowされる,という意味。

  • (1)他の権限とかぶるようなものは,サポートしない。
    • 例:capability「kill」は,allowcom -sigで制御できているので,capability killを許可したところで,問題はない。
  • (2) 具体的な悪用可能性が少ないものは,使わない。「具体的な悪用可能性が少ない」の基準をある程度はっきりさせねば。
    • 例:class process: getschedは,プロセスのプライオリティを閲覧するパーミッションだが,これを攻撃者が得たところで,システムに害を及ぼせない。

新文法 allowkernel, allowpriv, allowseop(途中)

サポートすべきパーミッション考察結果を反映し,
allowadm文を再編成。カテゴリごとに,allowkernel,allowpriv, allowseop文を作成(カテゴリ分けを予めしておいたほうがGUIが作りやすいかと思うので)

  • allowkernel netlink|klog_write|klog_read|klog_adm|insmod
    • 意味:カーネルとの通信・管理権限を与える
  • allowseop loadpolicy|setenforce|relabel|part_relabel|getsecurity
    • 意味:SELinuxに関する管理権限を与える
  • allowpriv search|read|write|all|quotaon|swapon|mount|raw_io|ptrace|chroot|unlabel|ipc_lock|nice|resource|time
    • 意味:その他の管理特権を与える

にしても,この辺はログをぱっとみてどれを許可すればいいか不明なので,
audit2allowレベルの自動生成は必要な気がする。
allowprivは多すぎかなぁ。もう少しカテゴリ分けが必要か?

その他

  • allowcom -sig

signullサポート追加 "n"

ファイル,シグナルのパーミッションをまとめて指定可。
allowcom -sig httpd_t *;
httpd_tに全てのシグナルを送信可。
GUIでサポートしないものは追加しないほうがいいかもしれない…

  • allownet -netlink廃止。→ allowkernel netlinkにすること。

メモ

  • allowkernel, allowpriv, allowseopで生成されるポリシのためのマクロを作る。
  • allowadmをparseしたら警告が出るように。