himainuの日記

SELinux Policy Editor開発日誌SELinux一般執筆講演履歴

2009-08-12

[] SELinuxアクセス制御をアプリ23:22

とあるアプリケーションに対して、SELinuxを使ったアクセス制御を適用できないかと思っており、調べている。

お、まさに↓の人と同じ悩みだ。参考になる。

http://sourceforge.jp/projects/jsosug/lists/archive/users/2008-October/000034.html

↓あたりを読めばなんとなく分かるのだろうか。。

  • How to Write a Userspace Object Manager

http://www.engardelinux.org/modules/index/list_archives.cgi?list=selinux&page=0321.html&month=2008-11

http://www.secureos.jp/index.php?Documents%2FUserspaceObjectManager

  • Userspace AVC

http://manpages.ubuntu.com/manpages/dapper/man3/avc_init.3.html

以上からなんとなく分かったこと

セキュリティポリシファイル内で、アプリ独自のパーミッションを定義、

アプリ側で、オブジェクトセキュリティコンテキストを付与するように拡張、

そして、アプリ側で

↓のlibselinuxの関数を呼べば、パーミッションチェックができる

int security_compute_av(security_context_t scon,

security_context_t tcon,

security_class_t tclass,

access_vector_t requested, struct av_decision *avd)

security_compute_av(サブジェクトセキュリティコンテキストアプリ内のオブジェクトセキュリティコンテキストアプリ独自のオブジェクトクラス、アプリ独自のパーミッション、結果)

のように呼ぶ。

これで十分じゃんと思ったのだが、

security_compute_avは、直接セキュリティポリシをクエリすると思うので低速なはず

そこで出てくるのがuserspace avc?

カーネル内のSELinuxパーミッションチェックするときは、カーネルがAVCというキャッシュアクセス制御結果をキャッシュしているため、カーネル内のSELinuxパーミッションチェックは高速。

このAVCをアプリ側で持とうというのがuserspace avcのようだ

avc_initとかいうlibselinux関数を使いuserspace avcを初期化

avc_has_perms関数パーミッションチェック。

avc_has_permsのパーミッションチェックではuserspace avcを見に行くので高速。

2009-08-08

[][] 組込みとセキュアOS 12:37

超久々の更新。

いつの間にやら、色々あった。

TOMOYO Linux

TomoyoLinux on Android

http://sourceforge.jp/projects/tomoyo/docs/Part1_CELF_Jamboree_28_TOMOYOLinuxOutline.pdf

http://sourceforge.jp/projects/tomoyo/docs/Part2_CELF_Jamboree_28_TOMOYO_on_Android.pdf

SMACK

SMACK for Digital TV

http://www.embeddedalley.com/pdfs/Smack_for_DigitalTV.pdf

xattr support for yaffs2

そして、私もひっそりとパッチを出しました。超適当なxattrの実装。

何件か私信はあったけど、コードの改善につながるものではなかった。

私はもう無理なので誰か〜

http://www.aleph1.co.uk/lurker/message/20090424.003253.a5e3c4ac.ja.html

[] 波地摩 12:37

2002年からの種IT開発のまとめとして、

USENIX LISA(AppArmorの論文とか出たところ)に論文出して採択されました。

論文書くのは超大変でした(というかまだ最終版の直し中…)

学術論文っぽい構成の仕方とかあるようで、思考法を変える必要があった。

LISA 09は、波地摩開催です。昔開催されたSELinux Symposiumと同じ場所。

I’m going to LISA ’09

新型インフルエンザにだけはかからないようにしたいけど、

前の週ぐらいに絶妙のタイミングでJapan Linux Symposiumがある…

セキュアOSのBoFあるし、その後にレセプションもあるようなので、是非出たいが、

人口密度が危険なことになってそう(汗


なお、種ITの開発が終っているように見えますが、svnでは、微妙に更新しています。

主に組込み向けのバグフィックスです。

相当ゆっくりやってるので、1年後ぐらいにどこかで発表が目標です。

そうこうしているうちにSMACKやらTOMOYOやらが広まりそうな予感はしますが…

PANDAPANDA 2009/08/08 12:54 何て読むん?>波地摩

himainuhimainu 2009/08/08 13:04 ボルチモアです。SELinux Symposiumの時行った中華料理店にボルチモアの漢字表記が書いてありました。

利恵子利恵子 2009/11/19 12:52 初めまして。
と言うか、あなたがあの雄君であれば初めましてでは無いのですが…
何故か、コメントしたくなり場違いは承知でm(_ _)m
血縁のものでした。

2009-01-12

[][] Ubuntu 8.10に種ITを入れる(5) 23:07

パーミッションをサポートするための作業メモ。

こういう作業をしていたら、ブラジルっぽい名前の人からUbuntu種ITうごかねーよというメールが来た。使おうとしてる人いるのね。


ちなみに、種ITで新パーミッションをサポートする場合はspdl.xmlというファイルに適当に追加すればいい。例外的に、allowprivの場合だけは、converter.confにも追加が必要(converterの書式チェックのため)。

作者ですら忘れかけていたのでメモ。。。。

[    5.804103] SELinux:  class memprotect not defined in policy
-> added allowpriv mmap_zero;

[    5.804126] SELinux:  class capability2 not defined in policy
-> capability2 is dead permission  in SELinux.

[    5.804197] SELinux:  permission open in class dir not defined in policy
[    5.804231] SELinux:  permission open in class file not defined in policy
[    5.804241] SELinux:  permission open in class chr_file not defined in policy
[    5.804247] SELinux:  permission open in class blk_file not defined in policy
[    5.804254] SELinux:  permission open in class fifo_file not defined in policy
-> Integrated open in file permission such as r. So, open can not be configured individually.
[    5.804273] SELinux:  permission recvfrom in class node not defined in policy
[    5.804279] SELinux:  permission sendto in class node not defined in policy
-> Integrated to allownet node send,recv permission.

[    5.804120] SELinux:  class peer not defined in policy
->サポートしない(つまり全部allowする)ことにした。

[    5.804291] SELinux:  permission ingress in class netif not defined in policy
[    5.804297] SELinux:  permission egress in class netif not defined in policy

[    5.804367] SELinux:  permission setfcap in class capability not defined in policy
-> allowpriv setfcapを作った。converter.confにも追加する必要があるのに注意。

[    5.804391] SELinux:  permission flow_in in class packet not defined in polic
[    5.804397] SELinux:  permission flow_out in class packet not defined in policy
[    5.804404] SELinux:  permission forward_in in class packet not defined in policy
[    5.804410] SELinux:  permission forward_out in class packet not defined in policy
-> packet classはサポートしていない(つまり全部allowな状態)
  なので、labeled networkはサポートしてない。ニーズがあれば考えることにする。

azurestoneazurestone 2009/04/26 13:06 せっかく、ブラジル人ぽい名前の人からメッセージもらってここに書くなら英訳も付けておけばいいのに、、、もったいない。。。

2009-01-05

[][] Ubuntu 8.10に種ITを入れる(4) 23:07

作業メモ。途中まで日本語入力できなかったので無茶苦茶。

[    5.804103] SELinux:  class memprotect not defined in policy
-> added allowpriv mmap_zero;

[    5.804126] SELinux:  class capability2 not defined in policy
-> capability2 is dead permission  in SELinux.

[    5.804197] SELinux:  permission open in class dir not defined in policy
[    5.804231] SELinux:  permission open in class file not defined in policy
[    5.804241] SELinux:  permission open in class chr_file not defined in policy
[    5.804247] SELinux:  permission open in class blk_file not defined in policy
[    5.804254] SELinux:  permission open in class fifo_file not defined in policy
-> Integrated open in file permission such as r. So, open can not be configured individually.
[    5.804273] SELinux:  permission recvfrom in class node not defined in policy
[    5.804279] SELinux:  permission sendto in class node not defined in policy
-> Integrated to allownet node send,recv permission.


TODOs....
[    5.804120] SELinux:  class peer not defined in policy
[    5.804291] SELinux:  permission ingress in class netif not defined in policy
[    5.804297] SELinux:  permission egress in class netif not defined in policy
[    5.804367] SELinux:  permission setfcap in class capability not defined in policy
[    5.804391] SELinux:  permission flow_in in class packet not defined in polic
[    5.804397] SELinux:  permission flow_out in class packet not defined in policy
[    5.804404] SELinux:  permission forward_in in class packet not defined in policy
[    5.804410] SELinux:  permission forward_out in class packet not defined in policy

KaiGaiKaiGai 2009/01/05 23:35 db_databaseとかdb_tableクラスのパーミッションは種ITだとどの様に表現されるのでしょう…とか煽ってみたりw

himainuhimainu 2009/01/05 23:52 DBとかX関係のどうしましょうかねぇ〜
今のところスルーしてます。
素のallowでいいのかなぁ。

設定の簡略化ができるのか、簡略化の必要性があるのか不明です。

KaiGaiKaiGai 2009/01/06 08:19 種ITがモジュール対応できれば、オブジェクトクラスだけ置いておいて、あとは Refpolicy のバイナリモジュールをロードするなんて事も考えられそうですけどねぇ。。。。
困った困った。私は利用者がポリシーを書くことは想定していないので『○○の場合は△△なラベルを付けて』とマニュアルに記しています。

himainuhimainu 2009/01/06 08:35 そうか、SE-PostgreSQLあたりならば、ポリシは決まってそうですね。
全部ラベル張替えでできそうな気がします。
ポリシはMLS/MCSを使うのでしょうか??

KaiGaiKaiGai 2009/01/06 20:09 ファイルと同様に、MLS/MCSとTEを併用です。
まだ日本語化してませんが、定義済みタイプの一覧はこの辺に…。
http://wiki.postgresql.org/wiki/SEPostgreSQL#Pre-defined_object_types_and_booleans

2009-01-04

[][] Ubuntu 8.10に種ITを入れる(3) 21:59

カーネルは2.6.27になっている。種ITは2.6.25までしか試しておらず、

その後大量にパーミッションが追加されたようでそれをサポートせねばならない。

dmesgを確認すると

[    5.804103] SELinux:  class memprotect not defined in policy
[    5.804120] SELinux:  class peer not defined in policy
[    5.804126] SELinux:  class capability2 not defined in policy
[    5.804197] SELinux:  permission open in class dir not defined in policy
[    5.804231] SELinux:  permission open in class file not defined in policy
[    5.804241] SELinux:  permission open in class chr_file not defined in policy
[    5.804247] SELinux:  permission open in class blk_file not defined in policy
[    5.804254] SELinux:  permission open in class fifo_file not defined in policy
[    5.804273] SELinux:  permission recvfrom in class node not defined in policy
[    5.804279] SELinux:  permission sendto in class node not defined in policy
[    5.804291] SELinux:  permission ingress in class netif not defined in policy
[    5.804297] SELinux:  permission egress in class netif not defined in policy
[    5.804367] SELinux:  permission setfcap in class capability not defined in policy
[    5.804391] SELinux:  permission flow_in in class packet not defined in polic
[    5.804397] SELinux:  permission flow_out in class packet not defined in policy
[    5.804404] SELinux:  permission forward_in in class packet not defined in policy
[    5.804410] SELinux:  permission forward_out in class packet not defined in policy
[    5.804596] SELinux: the above unknown classes and permissions will be denied

うわー色々あるな。

/selinux以下にも、知らない間にファイルが増えているみたい。うひゃー

$ ls /selinux/
access                compat_net    initial_contexts     policyvers
avc                   context       load                 reject_unknown
booleans              create        member               relabel
checkreqprot          deny_unknown  mls                  user
class                 disable       null
commit_pending_bools  enforce       policy_capabilities

今日はもう時間切れ orz

マターリとつぶしていくか。。。

PANDAPANDA 2009/01/04 22:07 のんびりしてるとまた変わっちゃうぞ〜。(^^;

HenrichHenrich 2009/01/05 00:41 そういえば、1年ほど熟成させたまんまにしていました…<手元のパッケージ

ということは、パッケージ的にはカーネルバージョン依存で生成しないといかんですかね。

himainuhimainu 2009/01/05 21:19 PANDAさん
少し目を離すと色々代わっているので、本業じゃないとつらいっす。

himainuhimainu 2009/01/05 21:20 Henrichさん
おお手元にパッケージあるのですか。雛形として使いたいかも。
種ITを、新しいカーネルに対応させちゃえば、
古いカーネルでも大体OKなはずです。