2006-04-20
■[セキュアOS] AppArmor,SELinux
直接対決
長いので後で読もう。
読んだ。AppArmorネ申最高。多少謎な部分もあるが(/tmpの保護は嘘だろうと思う),私がなんとなく感じていたことを、まとめてバンバン言ってくれている。私が言おうと思ったら、文面用意するだけで、日が暮れるに違いない。AppArmorネ申は、おそらく、長年この問題に取り組んでおられたのだろう。実装だけじゃなく、学問的な考察もされていたのだと思う。
にしても、相変わらず議論は平行線だ。どうなっちゃうんだろ。SELinux側の要求(?)は、「AppArmorなんかやめちまえ」と言っているに等しい気がする。そう簡単にやめられるわけがないし、AppArmorなりの信念を感じる。
LSM MLの最初の投稿
http://marc.theaimsgroup.com/?l=linux-security-module&m=98706471912438&w=2
LSMができた経緯。実は、AppArmorネ申の投稿。
■[開発日誌][Personal memo]
例によって作業メモ…
ホームディレクトリのサポート
ホームディレクトリのサポートを忘れてた。
例えば,httpd_tに,public_htmlのアクセスさせたい場合
allow /home/<ユーザ名>/public_html r,s;
をユーザーの数だけ書く必要がある。。100人ユーザがいたら100行(^^;
AppArmorばりに,
allow /home/*/public_htmlという書式をサポートしたいのだが、
これはかなり大変そうなので、
とりあえず、
allow ~/public_html r,s;
という書式をサポートしようと考えた。
~/とすると、ホームディレクトリ(/home/ユーザ名)を表す(root除く)
で、実装開始してみたが、これがまた思った以上に大変…
genhomedirconを駆使して実装してみた。
~で始まるファイル名がある場合は、homedir_template
に、タイプ付けを出力。
で、genhomedirconで、file_contexts.homedirsを生成。
makediffrelabel用に、file_contexts,file_contexts.homedirsをくっつけたファイルfile_contexts.allを作成。
file_contexts.homedirsから,/rootに関するエントリを消去。。
てな感じでやっていったが、
make diffrelabelがうまくいかないことに気づいた。
fcdiff.tmpが以下のようになって、restoreconで読み込めない。
/home/[^/]*/public_html
だが、
[^/] -> *に置き換えればrestoreconで読み込める。
つまり、
restorecon /home/[^/]*/public_html -R は駄目だが,
restorecon /home/*/public_html -R
はうまく動く。
結果,
domain httpd_t
allow ~/public_html/** r,s;
で、ユーザのホームページを公開できるようになった。
がこの書式には、問題がある。
「/home/ynakam/public_html」だけアクセスという設定ができない。
root以外のユーザのホームディレクトリが同じとみなされてしまう。
つまり,
allow /home/ynakam xxxx
と特定のユーザのホームディレクトリを指定して設定しても、無効にされてしまう。
これの修正はすごーく大変そうなので、やめとこう。
まだ問題があって、
親ディレクトリの「dir:search」の自動許可もうまく動かないはず。。。
その他
seedit-converterの-oオプションは、出力ディレクトリに。
generated.conf(マクロ展開前のpolicy.conf), file_contexts, homedir_template, customizable_types unconfined_domains
が出力される。
明日こそ、ドキュメント書きやろ。。
こりゃすごい。