パーミッションの問題

最近感じたアクセスベクタパーミッションの問題をメモしておこう。

  • TCP/UDP通信のプロセス間通信の制御できない
    • ポート番号ベースではできるが
  • 粒度の大きなパーミッション
    • CAP_SYS_ADMIN(capability:sys_admin)で制限される権限のうち、SELinuxパーミッションで制限できないものがある。問題だと感じたもの
    • sethostname/setdomain name
    • files_stat.max_filesより多くのファイルを開くことができる
    • その他ioctl
    • これだと、sethostnameだけ許可したいのに、その他ioctlまでもが許可されたりする。
  • CAP_SYS_AUDIT(capability:sys_audit)
    • netlink_auditソケットの利用、/proc/pid/loginuidの書き込みを
    • /proc/pid/loguinuidの制御はSELinuxのアクセス制御では不可能。
    • netlink_auditソケットだけを使いたい場合、/proc/pid/loginuidの書き込みまで許可しちゃうことになる。
  • パーミッションの重み付け
    • パーミッションのプライオリティを整理する必要を感じている。
    • 今は、「全てのパーミッションが同じ程度重要」と考えているような気が。
    • 例えば、exec*パーミッション
      • ある程度セキュリティを高めるが、これのポリシー整備に多くの労力が割かれている。
      • 効果は、execshieldの補助的なもの
      • MLを見てると色々なアプリが動かない問題が生じる。可用性への影響が大きいのでは?
      • 同じ方針を貫くとしたら、他のdistroに移植するとき、地獄を見ると思う
    • ツールを作る人も、全部のパーミッションを同等にサポートするとしたら、ツールが分かりにくい物になってしまう。
    • パーミッションのプライオリティを何段階かに分ける必要がありそう。

つまりやりたいことは、(いつも言っている気もするけど)
1) 初心者(セキュリティが少し高まればいいと思っている人)には少しのパーミッションしか有効になっていない
2) ユーザのセキュリティゴールに応じて、見えるパーミッションが増えていく。
イメージとしては、昔見たテレビのリモコン。
リモコンの表面には、普段使うボタン数少ないボタンしかない。
リモコンにはフタがついていて、フタを開けると、詳細設定のためのボタンがでてくる。

そのために、パーミッションのプライオリティ付けがしたい
さて、これをSELinux Symposiumで本場の人に伝わるように主張できるか…