2006年4月27日

[selinux-users:01544] reference policy攻略法?(Re: Re:ラベル・パス名


中村です。

藤原さんの投稿をみていたら、
そろそろreference policyの攻略法を考えねばと思いました。

On Thu, 27 Apr 2006 00:09:10 +0900
Shintaro Fujiwara wrote:

> とりあえず、自分的には、インターフェースを理解するのがいいと思って、
> 今日全部印刷してみましたら、
> 20センチ位の厚さになりました。マジかよ...。
20センチ……
ということは,reference policyのマクロを丸暗記することは
現実的でないと思います。


reference policyを使ってポリシを自分で書く場合は,
以下のような攻略法が考えられます。

1. 似たようなポリシーを真似して書く
具体的には,
- cronから走るコマンド
- sysadm_rなどロールから使うコマンド
- デーモン
に大別されます。
cronから走るコマンドにドメインを与えるなら,
slocate.te/fc/ifを参照し,
デーモンにドメインを与えるなら、
named.te/fc/ifを参照して、
真似して書けばいいと思います。

2. マクロを完璧に適用するのは,あきらめる
例えば,readahead.teからの引用
--------
....
dev_read_sysfs(readahead_t)
dev_getattr_generic_chr_files(readahead_t)
dev_getattr_generic_blk_files(readahead_t)
dev_getattr_all_chr_files(readahead_t)
dev_getattr_all_blk_files(readahead_t)
dev_dontaudit_read_all_blk_files(readahead_t)
dev_dontaudit_getattr_memory_dev(readahead_t)
...
このファイルだけでおよそ30種類のマクロが使われてます....
----
上のようにマクロをつかいこなせると思いますか??

ファイルのタイプ分けさえしっかりできてれば、
生のallow文を使ってもセキュリティ的に問題ないです。
完璧なマクロの適用は、refpolicyの開発者だけできればいいと思います。

3. 核となるマクロだけを押さえる
マクロの意味を丸暗記するならば、
kernel/
ディレクトリ以下にあるマクロだけを暗記すれば十分かと思われます。
kernel以下に,システムリソース(ネットワークなど)にアクセスするための
マクロが格納されてますから。

この中でも、特に重要なマクロがあると見受けられます。
例えば、以下のマクロが使われているのをよく見ます。

** ドメイン宣言時に使うマクロ
-デーモンにつかう
init_daemon_domain(ドメイン,エントリポイント)
-initrc_tから起動するコマンドに使う
init_system_domain(ドメイン,エントリポイント)
-コマンドに使う
domain_type(ドメイン)
domain_entry_type(ドメイン、エントリポイント)
role system_r types ドメイン;
** ファイルのタイプに付与するマクロ
logging_log_file(<タイプ>) ログファイルに付与するタイプ
files_pid_file(<タイプ>) pidファイルに付与するタイプ
files_tmp_file(<タイプ>) /tmp,/var/tmp以下の一時ファイルに付与するタイプ
files_lock_file(<タイプ>) /var/lock以下のファイルに付与するタイプ
files_type(<タイプ>) 上記以外のファイルに付与するタイプ
** network.ifのマクロ


--------
Yuichi Nakamura


投稿者 xml-rpc : 2006年4月27日 02:33
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/35519
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。