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に持っていって頂くと。
間に合うかな(汗