2007年11月22日

[selinux-users:02065] Re: setrlimitを許可するようなタイプはありませんでしょうか。

こんにちは。

忙しくてたまらないのですが、このSELinux的な言葉が飛び交うスレッドが、
ツボにはいってしまい耐えきれず出てきました。最高です。

自分でやる時間はとれないのですが、TOMOYO Linuxを
使ってみたらどうでしょうか?

On 11/22/2007 12:36 PM, KaiGai Kohei wrote:
>>> chconでタイプを変更してもいいと思いますが、再起動したら、
>>> 元に戻ってしまうと思います。
>> えっ!そうだったんですか?
>> (再起動時にrestoreconが実行されるのかな)
>
> いえ、再起動しても SELinux のセキュリティコンテキストは
> 保持されますのでご安心を。

TOMOYO Linuxならrestoreconは不要で、ラベル付けの状態を
意識する必要はありません。

>>>> PHPプログラムからは、以下の様なコマンドを実行します。
>>>> echo "暗号化する文字列" |/usr/bin/gpg -a --batch --homedir
>>>> /var/www/.gnupg -e --recipient メールアドレス
>
> PHPのsystem()関数などを使って、上記のコマンドを実行されている
> ものと推測します。PHPから外部コマンド呼び出し系の関数を実行した
> 場合、/bin/sh 経由での実行になってしまいます。
>
> これは httpd_t ドメインによる shell_exec_t タイプの実行となり、
> これによって httpd_sys_script_t ドメインへのドメイン遷移が発生
> します。このドメインは process:{setrlimit} 権限が無く、他の適
> 当なドメインへの遷移パスの無いので、ポリシーの編集以外に手段が
> 無いように見えます。
> ただし、これは boolean の httpd_ssi_exec が on に設定
> されている場合。

私がツボにはいってしまったのは、ここです。

SELinuxだと「ドメインは全てフラットで階層を持たない」ので
こうなるわけですが、TOMOYO Linuxであればそのまま
遷移の枝をドメインとして区別できます。しかも自動的に
(事前の定義なしに)。

> httpd_ssi_exec を off に設定すると、httpd が /bin/sh を実行しても、
> httpd_t ドメインのままですので、ポリシーの編集以外にも手の打ちよう
> があります。

shell_exec_tの「コンテキスト」を区別したいけれど、
それは結局ドメイン遷移の履歴なので、履歴の概念を持たない
SELinuxだと、上記のようなところができる限界なのだと
思います。

> まず、上記の処理を行うシェルスクリプトを作成してください。
> /usr/local/bin/gpg-wrapper.sh 等という形で
> -----
> #!/bin/sh
>
> echo "$1" | /usr/bin/gpg -a --batch --homedir /var/www/.gnupg -e --recipient "$2"
> -----
> を作成し、これに httpd_unconfined_exec_t というタイプを付与します。
> PHPからは system("/usr/local/bin/gpg-wrapper.sh 暗号化する文字列 メールアドレス"); という形で
> 実行できるでしょう。
>
> httpd_t が httpd_unconfined_exec_t を実行した場合のドメイン遷移は
> httpd_unconfined_script_t ですので、必要な権限が付与されることに
> なります。
>
> 但し、"unconfined" と付いているように、このドメインは非常に強い
> 権限を持っており、入力値の検査には注意するようにしてください。
> 例えば、暗号化する文字列に「a"; cat /etc/shadow; echo "abc」なんて
> 入っていたらとても悲しいことになります。

このあたりだと理解不能領域なのですが、別にTOMOYO Linuxで
なかったとしても、こうした場合を区別できたら望ましいという点は
SELinuxな藤原さんにもご賛同いただけるのではないでしょうか?(いかが?)

> ポリシーを編集する場合の別解としては、
> /usr/share/selinux/devel/include/apps/gpg.if に定義されている
> gpg_per_role_template を使って、CGIから実行するためのgpg専用の
> ドメインを作成するというのもできそうです。
> が、こちらは私自身で試したわけではありません。
>
> というわけで、こんな感じでいかがでしょう?

ためしにTOMOYO Linuxを導入してみて、その結果をもとに
SELinuxのポリシーを書いてみるというのもありですね。

http://tomoyo.sourceforge.jp/wiki/?WorldOfTomoyoLinux

--
原田季栄 (Toshiharu Harada)
haradats@xxxxx


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




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