2007年11月22日

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

07/11/22 に kondo<nobuaki3.kondo@xxxxx> さんは書きました:
> 近藤です。
>
> レスありがとうございます。
>
> >>>> 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 に設定
> > されている場合。
> >
> > httpd_ssi_exec を off に設定すると、httpd が /bin/sh を実行しても、
> > httpd_t ドメインのままですので、ポリシーの編集以外にも手の打ちよう
> > があります。
> >
> > まず、上記の処理を行うシェルスクリプトを作成してください。
> > /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」なんて
> > 入っていたらとても悲しいことになります。
>
> 結論からいうと外だしにしたらうまくいったようです。
> 考えてみたら、以前Perl CGIでgpg使ってたのを思い出し、タイプを調べたところ
> その時は、cgi-binの中のスクリプトを
> system_u:object_r:httpd_sys_script_exec_t
> にしてOKでした。
>
> PHPプログラム自体にもsystem_u:object_r:httpd_sys_script_exec_t
> にしてみましたがNGで、シェルスクリプトの外出しにして、
> タイプがsystem_u:object_r:httpd_sys_script_exec_tでうまく
> いったようです。
>
> ありがとうございました。

すばらしいですね。
なるほど、デフォルトポリシに入っていたということですね。

phpをsafe modeにして、
php.iniの設定を追加設定(実行ファイルを入れるディレクトリを指定)
するともっと安全になります。

> これでポリシー変更しないで済みそうです。
> ...と、この調査をしてたら先ほどRedHatのErrataで
> selinux-policy bug fix updateというメールが来てました。
> ポリシー変更しているサーバはまたちょっと大変な作業が待ってそうです。
>
>
>


--
Shintaro Fujiwara
segatex project (SELinux policy tool)
http://sourceforge.net/projects/segatex/
Home page
http://intrajp.no-ip.com/
Blog
http://intrajp.no-ip.com/nucleus/
CMS
http://intrajp.no-ip.com/xoops/
Wiki
http://intrajp.no-ip.com/pukiwiki/

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




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