- PR -

apache_UserDirの設定・セキュリティについて

投稿者投稿内容
bee
会議室デビュー日: 2003/04/01
投稿数: 11
投稿日時: 2003-11-30 01:49
Beeです。

現在、apacheで各ユーザのホームディレクトリ以下に「public_html」を作成し、
これをUserDirとして公開しています。
また、各ユーザはSSHでサーバに接続し、作業を行えるようにしております。
ここで質問なんですが、各ユーザディレクトリを他のユーザが閲覧できないように
するにはどのようにすればいいのでしょうか。
ユーザがcgiで使う管理情報等を置いているため、他のユーザには見られたくないというのが
閲覧を不可にしたい理由です。
単に閲覧できないようにするには各ユーザディレクトリのパーミッションを「700」に
すればいいと思うのですが、現在はapacheが各public_htmlを参照できるようにするため、
各ユーザディレクトリのパーミッションを「755」にしております。
公開WebサーバにSSHで接続ができるというのが問題なのかとは思いますが、
そのサーバではデータベースも使っており、これを利用するためには
どうしてもSSHによる接続を許可が必要なのが現状です。
また、「chroot」を使おうかとも思ったのですが、各ユーザディレクトリに
それぞれコマンドをコピーしないといけないのと、前述したデータベースの
扱いはどうなるのか、という点でまだ導入に至っておりません。
このようはサービスを行う場合、一般的にはどのように対処しているのかと思い
質問させて頂きました。
よろしくお願いいたします。
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2003-11-30 10:05
状況がよく分からないのですが...
(見せたくないディレクトリはどれか?ファイルではないのか?)

各ユーザがホームディレクトリの下のファイルおよびディレクトリの
パーミッションを適切に指定する、というのではダメなのでしょうか?

あるいは「ホームディレクトリ」そのものを見せたくないのであれば、
ホームディレクトリのパーミッションを0711にしておくと
その下の public_html に誰でも到達可能です。
(public_html は0755にする)

そうじゃなきゃ、apache をroot権限で動作させるか。
これはセキュリティ的に好ましくないとみなされていますが。
(だもんで、おそらく再コンパイルしないとこの設定は通らないでしょう)
bee
会議室デビュー日: 2003/04/01
投稿数: 11
投稿日時: 2003-11-30 12:49
ぽんす様、ご返答ありがとうございます。

説明が分かりにくくて申し訳ありません。
ここで見せたくないものというのは公開するWebアプリケーションの
設定ファイル等です。例えば、cgiでデータベースを利用しているとして、
データベースのユーザIDやパスワードといった設定情報が書いてあるファイルを
他のユーザに見せたくないということです。
この設定ファイルはapacheが読めるようにパーミッションを644にする必要があるため、
ぽんす様の書かれた方法ですと、確かに各ユーザのホームディレクトリは
読めなくなりますが、ホームディレクトリへの移動は可能なままなので、
public_html以下に移動、設定ファイルを閲覧、が可能になってしまいます。
この設定ファイルのパーミッションを600にし、作成者のみが閲覧可能にした状態で
どうにかapacheが読み込めるようにならないかなぁと思ったりもしましたが、
apacheはnobody権限で動いているので無理ですよねぇ。
上記のような状況で、一般的にはどのように運営を行っているのかが知りたく、
このスレッドをたてました。
やはりSSHによる接続の許可がいけないのでしょうか・・・
よろしくお願いいたします。

ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2003-11-30 15:16
あまりそういう方面の知識は無くてすみませんが...
引用:

ここで見せたくないものというのは公開するWebアプリケーションの
設定ファイル等です。例えば、cgiでデータベースを利用しているとして、
データベースのユーザIDやパスワードといった設定情報が書いてあるファイルを
他のユーザに見せたくないということです。


なるほど。
それらは、apache から直接読める必要があるのでしょうか?
CGIから読めさえすればよさそうな気がしますが...

CGIから読めればいいのであれば、CGIの実効IDが当該ユーザのIDとなって
動作するようにしておいて、その手前になんらかの認証の仕組みを
用意する、というのが正攻法だろうと思います。

apache が直接読まなくてはならないのであれば、やはり
apache を root で動作させる、ということになりそうな...
bee
会議室デビュー日: 2003/04/01
投稿数: 11
投稿日時: 2003-11-30 18:22
ぽんす様、ご返答ありがとうございます。

引用:
CGIから読めればいいのであれば、CGIの実効IDが当該ユーザのIDとなって
動作するようにしておいて、その手前になんらかの認証の仕組みを
用意する、というのが正攻法だろうと思います。



そんな方法が使えるのですね。
実は、私はcgiに関する知識はほとんど無く、apache上で動くものだから
apacheが読めないとだめだろうと思っていました。
この方法を使えば、設定ファイルをcgiを作成したユーザのみが閲覧可能にし、
その権限でcgiを実行すれば問題ないというわけですね。
これから、もう少しcgiについて調べたいと思います。

どうもありがとうございました。
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2003-11-30 23:28
CGIの実行権限を変えるには、このごろでは suEXEC を利用することが
多いだろうと思います。(Apacheをデフォルトでインストールすると
入らないはずなので、設定を変えて再度インストールする必要があります)

あと、単純な方法として、CGI に setuid ビットを立てる、という
手もあります。このやり方は簡単ですが、セキュリティ面の問題が
発生しやすいので注意が必要です。
suEXEC でも注意が要ることには違いないですが。

# 他のユーザの権限でCGIが動作しても構わないのであれば、
# 上のどちらかだけやっておけばO.K.です。
bee
会議室デビュー日: 2003/04/01
投稿数: 11
投稿日時: 2003-12-01 09:38
色々と調べた結果、suEXECを利用するようにしました。
apacheの再インストールを行って簡単な動作確認を行ったところ、
とりあえずは要件を満たすようになりました。
セキュリティに関しては少し不安はありますが、
そのあたりも色々と調べながら運営していこうと思います。
take
ぬし
会議室デビュー日: 2002/06/06
投稿数: 265
投稿日時: 2003-12-02 21:20
なんだかものすごく話が難しい方向に行っている気がするのですが・・・

public_htmlのアクセス権を750とかにして
Apacheを動かしているプロセスのユーザを
所有グループに入れてあげればいいのでは?

スキルアップ/キャリアアップ(JOB@IT)