Fedora/RedhatにAppArmor

こちら
http://developer.novell.com/wiki/index.php/Novell_AppArmor
を見てみると、なんとAppArmorの
Redhat EL5向けのrpmパッケージがあるではないか。
で、これをFedora Core6に入れてみた。
これらパッケージを無理やりインストール後
(kernelパッケージは、rpm -ivh --forceでインストール)
selinux=0 capability.disable=1
grub.confに入れてリブート。

# sestatus
SELinux status: disabled
# aa-status
apparmor module is loaded.
10 profiles are loaded.
10 profiles are in enforce mode.
0 profiles are in complain mode.
Out of 116 processes running:
2 processes have profiles defined.
2 processes have profiles in enforce mode.
0 processes have profiles in complain mode.

おお、AppArmorが動いてる。
ちなみに、pam_apparmorってのも入ってた。
こいつをつかうと、ログインユーザーごとにプロファイルを割り当て可能!
RBAC的なことができる。

ただし、Yastがないので、プロファイル生成には
コマンドラインツール「genprof,logprof」を使う必要がある。
# genprof
サポートキーを記入してください:
と出てきたので、何のこっちゃと思ったら、
# unset LANG
# genprof
Please enter the program to profile:
となった。日本語翻訳がおかしかったようだ。

まぁ、Fedora/RedhatにAppArmorは、アップデートについていくのが大変なので、
お遊び&お試し程度だが。

ちなみに、AppArmorのドキュメントだが、
http://www.novell.com/documentation/apparmor/
で全て事足りる。

組み込みAppArmor?

組み込みAppArmorもそんなに難しくない予感がする。
思えばAppArmorに、最小限必要なユーザーランドって、
プロファイルのパーサ&ローダだけな気がする(SELinuxで言うload_policy)。

話は変わるが、
SELinuxで最小限必要なユーザランドって何だろう。
load_policy, ls,psのZオプション、restorecon or setfiles, chcon
ぐらい? ポリシの移植も死ぬ予感。

AppArmorは、LSMに対応してるので、パッチの移植も、たぶん簡単だろう。
パス名ベースなので、ファイルシステム依存もなく、
iノード番号変更によるコンテキスト壊し問題もない。
守りたいやつだけプロファイル書けばいいし、プロファイルの書式は簡潔。
実は、技術的に考えると、組み込みに向いているのはSELinuxではなくて、
AppArmorかもしれない。
SELinuxは何やるにしても、人手がかかって大変。

組み込みAppArmorもちょっと遊んでみようかな。

Tiny-SELinux???

SELinuxも、今のままのフル装備では、組み込みAppArmorに負けるかもしれん。
「Tiny SELinux」ってのも作れないかな。

  • 1) カーネルのアクセス制御エンジンの部分からして、いくつかのパーミッションチェックをガサっと削ってしまう。
  • 2) libselinux/libselpolも削りまくる。
  • 3) そして、ポリシ部分はSEEditのSPDLを使う。SPDLならば、SELinux側の変化を吸収するレイヤがあるので、変化についていきやすいし、ダイエットもしやすい。

もっとも、本場の面目的に、
3)は到底受け入れがたいだろうから、tiny-refpolicy的なものをやったほうがいいのかもしれんが。

組み込みAppArmorを検証して、
「組み込みAppArmorは超簡単だ!このままでは負けるぞ!」
と煽ることもしたいなぁ。

そして、某Kさんに、この辺のネタをBaltimoreに持っていって頂くと。
間に合うかな(汗