- PR -

TomcatでsuEXECのような設定をするには?

1
投稿者投稿内容
さやべえ
常連さん
会議室デビュー日: 2003/03/13
投稿数: 33
投稿日時: 2003-04-28 16:00
お世話になっております。さやべえです。

現在、RedHat8.0上でApache2系+Tomcat4.1系+mod_jk2での連携まで
完了しました。

Apache2系のconfigureパラメータは
./configure --prefix=/usr/local/apache --enable-mpm=mpmt_pthread --enable-so --enable-ssl --with-ssl=/usr/local/ssl --enable-deflate -enable-suexec --with-suexec-caller=httpd --with-suexec-uidmin=1000 --with-suexec-gidmin=1000
上記のように行い、suEXEC対応でCGIが動くように設定をしました。

そして、Apacheのhttpd.confならびにTomcatのserver.xmlでの設定では、それぞれ
複数のドメイン名でのVirtualHost設定を行い、無事、ポート80番でそれぞれの
ドメイン名でJSPファイルを動かすようにできました。

さて、セキュリティ的な観点からいろいろと調査したところ、JSPファイルで好きな
ことができてしまうことが分かりました。シェル上ではアクセスできないファイル
もJSP経由であれば、見えてしまう!などです。

理由は、tomcatの起動をrootで行っているため、プロセスがrootだからなのですが、
CGIの場合はsuEXECを使い、このへんの問題を回避することができると思いますが
tomcatの場合はどのように回避すればいいかをお尋ねしたいと思っております。

サーバー設定をお伝えすると

■www.aaa.co.jp
シェルアカウント:aaa
UID:1001
GID:600(WWWグループ)
コンテンツエリア:/home/aaa/public_html/

■www.bbb.co.jp
シェルアカウント:bbb
UID:1002
GID:600(WWWグループ)
コンテンツエリア:/home/bbb/public_html/

■httpd.conf内の設定(一部)

User httpd
Group httpd

<VirtualHost www.aaa.co.jp:80>
ServerAdmin webmaster@aaa.co.jp
DocumentRoot /home/aaa/public_html
ServerName www.aaa.co.jp
ServerAlias aaa.co.jp
ScriptAlias /cgi-bin/ /home/aaa/public_html/cgi-bin/
<Directory /home/aaa/public_html>
AddOutputFilter INCLUDES .shtml
AddType text/html .shtml
Options +Includes
</Directory>
ErrorLog logs/aaa.co.jp-error_log
CustomLog logs/aaa.co.jp-access_log common
</VirtualHost>

<VirtualHost www.bbb.co.jp:80>
ServerAdmin webmaster@bbb.co.jp
DocumentRoot /home/bbb/public_html
ServerName www.bbb.co.jp
ServerAlias bbb.co.jp
ScriptAlias /cgi-bin/ /home/bbb/public_html/cgi-bin/
<Directory /home/bbb/public_html>
AddOutputFilter INCLUDES .shtml
AddType text/html .shtml
Options +Includes
</Directory>
ErrorLog logs/bbb.co.jp-error_log
CustomLog logs/bbb.co.jp-access_log common
</VirtualHost>

■server.xmlの内容(一部)
<Host name="www.aaa.co.jp" debug="0" appBase="/home/aaa"
unpackWARs="true" autoDeploy="true">
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="aaa.co.jp-tomcat_log." suffix=".txt"
timestamp="true"/>
<Context path="" docBase="public_html" debug="0"/>
</Host>
<Host name="www.bbb.co.jp" debug="0" appBase="/home/bbb"
unpackWARs="true" autoDeploy="true">
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="bbb.co.jp-tomcat_log." suffix=".txt"
timestamp="true"/>
<Context path="" docBase="public_html" debug="0"/>
</Host>

こんな感じです。
t-wata
大ベテラン
会議室デビュー日: 2002/07/12
投稿数: 209
お住まい・勤務地: 東京
投稿日時: 2003-04-28 16:52
1). tomcatをroot以外のユーザーで起動する
2). tomcatを-secureで起動する。さらにpolicyファイルを目的に応じて修正する
3). chroot環境でtomcatを動作させる

のいずれかで実現できます。google等で調べてください。
1

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