Simplified Policy1.2の機能*1は大体完成かな?

バイスファイルのアクセス制御

  • 全ファイル種別を一緒に扱っては,悪意あるデバイスを作られるからまずい,と昨年のSELinux Symposiumで指摘された。かといって,ファイルのアクセス制御で,ファイル種別を増やしたら,複雑になりすぎ。
  • 解決策:allowpriv devcreate文を作成。
    • ファイルのアクセス制御で,「w」パーミッションがあっても,devcreateを許されて無い限り,デバイスファイルの作成はできない。
    • devcreateでは,「w」パーミッションのあるファイルに対して, 「chr_file blk_file 」クラスの「create unlink link rename 」を許可(allow_file_devcreateマクロ参照)
    • capability「mknod」を使う案も考えたが,mknod capabilityでは,「mknodによる名前つきパイプ,UNIXドメインソケット,デバイス」の作成をまとめて制御しているため,適さない。
  • 個別のファイルに対して,デバイスの作成の制御はできないが,利便性とセキュリティのバランスを考えると,そこまで必要ないだろう(定量的には評価できてないが…

allowkernel,allowpriv,allowseopの実装(完了)

  • この辺は,多少の仕様変更が予想されるので,カスタマイズを容易にできるように。
  • converter.confに「allowkernel_rule,allowseop_rule,allowpriv_rule」という行を作成。
    • 例:allowkernel_rule netlink klog_write klog_read klog_adm insmodという行は,allowkernel に「netlink,klog_write,klog_read,klog_adm,insmod」という文字列が使えることを意味する。allowkernelにそれ以外の文字列を渡すとコンパイルエラー。
  • allowkernel|allowpriv|allowseopに新規ルールを追加する時の手順

(1) allowkernel_rule|allowseop_rule|allowpriv_rule に追加。
例えば,allowkernel hogehogeというルールを追加したいなら,
converter.confの,allowkernel_ruleの末尾に「hogehoge」を追加。
(2) macros/seedit_macros.teに,
allow_admin_<ルール名>というマクロを定義し,許可する権限を記述。
hogehogeというルールなら
allow_admin_hogehogeというマクロを定義する。


changelogをまとめてるが,日記にメモってあるので楽々。便利。

*1:本当に「とりあえず動く」だけだけど