2009-08-12
■[SELinux] SELinuxのアクセス制御をアプリに
とあるアプリケーションに対して、SELinuxを使ったアクセス制御を適用できないかと思っており、調べている。
お、まさに↓の人と同じ悩みだ。参考になる。
http://sourceforge.jp/projects/jsosug/lists/archive/users/2008-October/000034.html
↓あたりを読めばなんとなく分かるのだろうか。。
- How to Write a Userspace Object Manager
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のパーミッションチェックではuserspace avcを見に行くので高速。
2009-08-08
■[セキュアOS][組込み] 組込みとセキュアOS
超久々の更新。
いつの間にやら、色々あった。
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
■[SEEdit] 波地摩
2002年からの種IT開発のまとめとして、
USENIX LISA(AppArmorの論文とか出たところ)に論文出して採択されました。
論文書くのは超大変でした(というかまだ最終版の直し中…)
学術論文っぽい構成の仕方とかあるようで、思考法を変える必要があった。
LISA 09は、波地摩開催です。昔開催されたSELinux Symposiumと同じ場所。
新型インフルエンザにだけはかからないようにしたいけど、
前の週ぐらいに絶妙のタイミングでJapan Linux Symposiumがある…
セキュアOSのBoFあるし、その後にレセプションもあるようなので、是非出たいが、
人口密度が危険なことになってそう(汗
なお、種ITの開発が終っているように見えますが、svnでは、微妙に更新しています。
主に組込み向けのバグフィックスです。
相当ゆっくりやってるので、1年後ぐらいにどこかで発表が目標です。
そうこうしているうちにSMACKやらTOMOYOやらが広まりそうな予感はしますが…
2009-01-12
■[Ubuntu][SEEdit] Ubuntu 8.10に種ITを入れる(5)
新パーミッションをサポートするための作業メモ。
こういう作業をしていたら、ブラジルっぽい名前の人から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はサポートしてない。ニーズがあれば考えることにする。
azurestone
せっかく、ブラジル人ぽい名前の人からメッセージもらってここに書くなら英訳も付けておけばいいのに、、、もったいない。。。
2009-01-05
■[Ubuntu][SEEdit] Ubuntu 8.10に種ITを入れる(4)
作業メモ。途中まで日本語入力できなかったので無茶苦茶。
[ 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
KaiGai
db_databaseとかdb_tableクラスのパーミッションは種ITだとどの様に表現されるのでしょう…とか煽ってみたりw
himainu
DBとかX関係のどうしましょうかねぇ〜
今のところスルーしてます。
素のallowでいいのかなぁ。
設定の簡略化ができるのか、簡略化の必要性があるのか不明です。
KaiGai
種ITがモジュール対応できれば、オブジェクトクラスだけ置いておいて、あとは Refpolicy のバイナリモジュールをロードするなんて事も考えられそうですけどねぇ。。。。
困った困った。私は利用者がポリシーを書くことは想定していないので『○○の場合は△△なラベルを付けて』とマニュアルに記しています。
himainu
そうか、SE-PostgreSQLあたりならば、ポリシは決まってそうですね。
全部ラベル張替えでできそうな気がします。
ポリシはMLS/MCSを使うのでしょうか??
KaiGai
ファイルと同様に、MLS/MCSとTEを併用です。
まだ日本語化してませんが、定義済みタイプの一覧はこの辺に…。
http://wiki.postgresql.org/wiki/SEPostgreSQL#Pre-defined_object_types_and_booleans
2009-01-04
■[Ubuntu][SEEdit] Ubuntu 8.10に種ITを入れる(3)
カーネルは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
マターリとつぶしていくか。。。
と言うか、あなたがあの雄君であれば初めましてでは無いのですが…
何故か、コメントしたくなり場違いは承知でm(_ _)m
血縁のものでした。