検索
連載

Tomcatのセキュリティとリスクの基本分かってる?Tomcatはどこまで“安全”にできるのか?(4)(3/4 ページ)

PC用表示 関連情報
Share
Tweet
LINE
Hatena

Tomcatのセキュリティリスクを解決するためには?

 Tomcatの開発は現在SVNによってソース管理されています。このソースはTomcatのホームページからメニュー内「Get Involved」の「SVN Repositories」で管理ページに行くことができます。

図9 Tomcatのバージョン管理ページ
図9 Tomcatのバージョン管理ページ

 今回インストールしているのはTomcat6.0.x系列なので、「Repository Structure」から「/tc6.0.x/」を開きます。

図10 「Repository Structure」の「/tc6.0.x/」
図10 「Repository Structure」の「/tc6.0.x/」

 開いてみると、「branches」「tags」「trunk」と3つあります。

  1. branches」:通常気にする必要はない
  2. tags」:最新のリリース予定のバージョンまでのソースが管理されている
  3. trunk」:最新の開発版ソースが格納されている

 今回は開発版のソースが必要なので、trunkからソースを取得することになります。

セキュリティ改善のための準備(SubversionとAntの環境構築)

 それでは、Tomcatのインストールされているサーバでリリース前のソースを取得する準備をしましょう。サーバ上からsubversionコマンドを使えるように、パッケージが入っていない場合はインストールしましょう。yumコマンドでSubversionをインストールします。

yum install subversion 

 インストールが終わった、ないしは元から入っていれば、次にリポジトリを取得するディレクトリを作成します。ディレクトリの位置は任意に設定して構いませんが、今回は/home以下に作成します。

mkdir /home/repos 

 ディレクトリを作成したら、そのディレクトリに移動してリポジトリを取得します。

cd /home/repos
svn co http://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk 

 ファイルがダウンロードされ、チェックアウトが完了したら次に開発環境の構築に移ります。Tomcatは同じApache Projectに属する「Ant」というJavaのビルドツールを用いてビルドする必要があります。Antのダウンロード用ページを開いてください。

編集部注:Antについて詳しく知りたい読者は、「AntでJavaのビルドを簡単にする」をご参照ください。

図11 Antのダウンロード用ページ
図11 Antのダウンロード用ページ

 適当な任意のディレクトリに移動して、「Current Release of Ant」からtar.gz形式のアーカイブのURLをコピーしてサーバ上にダウンロードします。

wget http://www.meisei-u.ac.jp/mirror/apache/dist/ant/binaries/apache
-ant-1.7.0-bin.tar.gz 

 ファイルをダウンロードしたら解凍します。

tar -xzf apache-ant-1.7.0-bin.tar.gz 

 解凍してできたディレクトリを追加アプリケーションとして分かりやすく/opt以下に設置しておきます。

mv -f apache-ant-1.7.0 /opt/ ant-1.7.0 

 ディレクトリの移動が終わったら、Antを動かすための設定を行います。Antを利用するためには、環境変数にAntのインストールディレクトリ(/opt/ant-1.7.0)を定義した「ANT_HOME」が設定されていて、かつANT_HOMEのbinフォルダにパスが通っている必要があります。viエディタで「.bach_profile」を変更して環境変数を設定します。

# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
JAVA_HOME=/usr/java/jdk1.5.0_12
ANT_HOME=/opt/ant1.7.0
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$ANT_HOME/bin
export PATH JAVA_HOME ANT_HOME
unset USERNAME 
「.bach_profile」の設定例

 ファイルを変更したらプロファイルを再読み込みします。

. /root/.bach_profile 

 これで実行環境の作成は完了です。

アプリケーションを更新しよう

 それでは、Tomcat開発版のビルドに取り掛かります。まず、リポジトリをダウンロードしたディレクトリへ移動します。

cd /home/repos/trunk 

 移動が完了したら、関係コンポーネントのダウンロードおよびビルドを行います。

ant download 

 コマンドが完了したら次に本体のビルドを行います。

ant 

 ビルドが完了したら、実際にアプリケーションのバージョンアップへ移ります。

注意!

この作業は別のサーバを用意し、アップデート後の影響を検証できるようにしてから行うことをお勧めします。


 まずは、以前のバージョンのファイルのバックアップを取得するために一時的にTomcatを停止します。今回は起動用スクリプトがある環境なので、スクリプトで停止します。

/etc/rc.d/init.d/tomcat stop 

 次に、バックアップフォルダを作成しておきます。

mkdir /opt/tomcat6/backup/ 

 バックアップフォルダを作成したら、バックアップするファイルを移動させます。大きなメジャーバージョンアップだとコンフィグ(設定)ファイルの構成が変わることもありますが、今回はマイナーバージョンのバージョンアップなのでコンフィグはそのまま利用して動作確認後に動作しなければ調整という形を取ります。

 また、今回はwebapps以下のファイルについては管理マネージャを含めて利用しない前提で更新しません(管理マネージャについては連載第2回を参照してください)。

mv -f /opt/tomcat6/bin/ /opt/tomcat6/backup/
mv -f /opt/tomcat6/lib/ /opt/tomcat6/backup/ 

 バックアップが完了したら、必要なファイルをコピーします。

cp -af /home/repos/trunk/output/build/bin/ /opt/tomcat6/
cp -af /home/repos/trunk/output/build/lib/ /opt/tomcat6/ 

 最後に、binフォルダ以下のシェルファイル実行権限がなくなっているので、実行権限を付与します。

chmod 755 /opt/tomcat6/bin/*.sh 

注意!

今回はjsvcデーモン化させている状態なので、jsvcを再作成することを忘れないようにしてください。作成の方法は連載第1回を参照してください。


 以上が完了したらTomcatを再度起動させます。

/etc/init.d/tomcat restart 

 再度バージョンを調べるために「/opt/tomcat6/webapps/ROOT/jsp/test.jsp」を確認できるディレクトリに作成します。

<%@ page contentType="text/html" %>
<%
  out.println( application.getServerInfo() );
%> 

 ファイルを作成したら、Webブラウザでアクセスします。

図12 Webブラウザに表示されたTomcatのバージョン(更新されている)
図12 Webブラウザに表示されたTomcatのバージョン(更新されている)

 バージョンが更新されて「6.0-snapshot」になっていて、バージョンアップが完了していることが分かります。作成したjspファイルは再度削除しましょう。すべてのアプリケーションの動作を確認したうえで本番サーバの更新作業を行いましょう。

注意!

snapshotバージョンは正式リリースの安定版ではないので、何らかの不備がある場合があります。最新版でセキュリティリスクが解消されたら、戻しておく方がいいでしょう。


 アプリケーションの解消によるセキュリティリスク解決はこれで完了です。

注意!

今回はすべてのセキュリティリスクを解消するために開発版を導入していますが、運用の状況に応じて利用していない機能の対策は遅らせても構わない場合があります。開発・運用チーム間でよく検討してからこのような対策は検討しましょう。


 最後に次ページでは、Tomcatにありがちなセキュリティリスクを挙げ、その改善方法を解説します。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る