2006年4月28日

[selinux-users:01557] Re: reference policy攻略法?


藤原 です。

勉強会後の打ち上げに、印刷したマクロの1/3を持参しました。
そのうちの1冊が、ちょうど320ページで、マクロの概要が
全て入っています。今手元にあります。
こういうの、確かハードコピーって言うんですよね。

"I'm trying to memorize them all."
と言ったら、早速Russellに、
"I memorize old policy, because I wrote them."
と言われちゃいました。

暗記できるとは思っていないんですが、
何かアドバイスが欲しかったんで、おおげさに言ってみただけなんですが。
(いつもの私のやり方ですネ)
彼が、自分の成果をoldと言ったのには、びっくりしました。
この世界の特性を表しています。


ところで、先週まで私はMONOLITHICで頑張っていましたが、
モジュール方式のやり方が少しわかりましたので、発表します。

自分なりに、こうすればいいのではないか、
という手順ができました。

すごく簡単です。

# cd /usr/share/selinux/devel
# ./policygentool postgresql_by_me /usr/local/pgsql/bin/postgres
質問に答えながらEnterキーを押下
(わからないときは、そのままEnterキーを押下)
#make
#semodule -r postgresql
#semodule -i postgresql_by_me.pp
#restorecon -R -v /usr/local/pgsql
#vi /var/log/audit/audit.log
#20000dd
#:wq!
#shutdown -r now
#cd /usr/share/selinux/devel
以下はプログラムではありません。
do{
#cp postgresql_by_me.te postgresql_by_mete
#cat a2a.te >> postgresql_by_me.te
#cp postgresql_by_me.pp postgresqsl_by_mepp
#rm postgresql_by_me.pp
#make
#semodule -r postgresql_by_me
#semodule -i postgresql_by_me.pp
}while(#cat /var/log/audit/audit.log | audit2allow -m a2a > a2a.te);

これでいいんじゃないでしょうか。

p.s.

自分もツールを作りましたけど、oldなんだろうか。
勿体ない...。
FC5版でも作ったろかな...。
audit2allow が優秀になったので、あまりつけ入るすきがなかとです。
まあ、日本人の繊細さをアピールは出来そうですけどネ。

my blog http://intrajp.no-ip.com/nucleus/
SELinux Hack http://intrajp.no-ip.com/xoops/
my homepage http://intrajp.no-ip.com/

On Wed, 26 Apr 2006 13:33:28 -0400
Yuichi Nakamura wrote:

>
> 中村です。
>
> 藤原さんの投稿をみていたら、
> そろそろ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月28日 21:56
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/35636
トラックバック
コメント
コメントする




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