連載
» 2007年10月11日 00時00分 公開

Tomcatはどこまで“安全”にできるのか?(1):“安全”のためにTomcatを理解し、構築し、動作させる (1/3)

[x-lab チーム,株式会社アメニクス]

無料サーバはどこまで安全にできるのか?

 近年、Linux上でサーバを構築・公開する方が多くなってきていますが、中途半端な設定のサーバを公開することで会社の情報資産が危険にさらされることがよくあります。

 そんな中、基本的に無料のOSであるLinuxサーバと、同じく無料で利用できるアプリケーションで、世界中において高いシェアを誇るTomcatを用い、「無料でどこまで製品サーバのセキュリティに迫れるか?」「どこまで安全にWebアプリケーション構築ができるか?」をこの連載を通して追っていきたいと思います。

 第1回は、そもそもTomcatとは何かを解説し、Tomcatの最新版の新機能とそのセットアップの仕方や自動起動の方法、Apacheと連携させる方法などを紹介します。

Tomcatについて人に説明できますか?

 Tomcatとは、Webサーバ向けのソフトウェア開発に特化したApache Software Foundation(Apachソフトウェア財団、ASF)が保有するトップレベルプロジェクトの1つで、サーブレット/JSPを動作させるためのWebコンテナです。

おさらい 「サーブレット/JSPの仕組み」

サーブレットとは、サーバ側で動作するJavaのクラスで、クライアントのWebブラウザから送られたHTTPのリクエスト要求に対してサーブレット上のプログラムが動的にコードを構築して結果を返す仕組みとなっています。サーブレットは一度サーバ上でロードされると、クライアントからの要求に対してはマルチスレッドで応答する仕組みになっており、リクエストのたびにプロセスを起動しないため高速に動作するのが特徴です。

JSPもサーブレットと同様にサーバ側で動作し、クライアントのWebブラウザから送られたHTTPのリクエスト要求に対してJSPプロセッサがプログラムを実行して動的にコードを構築して結果を返す仕組みとなっています。JSPは初回のアクセス時にサーブレットを生成する仕組みになっています。サーブレットを実行した結果を返す仕組みとなっているため、サーブレットと動作は基本的に変わりません。


編集部注:サーブレット/JSPについて詳しく知りたい読者は、連載「基礎から学ぶサーブレット/JSP」をご参照ください。

 Tomcatは、開発当初は米Sun Microsystems社によるサーブレット/JSPのリファレンス実装であるJSWDK(Java Server Web Development Kit)の寄付により発足した「Jakartaプロジェクト」により開発が行われてきました。そのため、現在の一般的な通称である「Apache Tomcat」ではなく「Jakarta Tomcat」とも呼ばれています。

Tomcatの特徴

 Tomcatの特徴には、前述のとおり世界中で高いシェアを誇るオープンソース(=無料で利用できる)のプロジェクトであることが挙げられます。

 また、Tomcat自体には自分自身が単体(スタンドアロン)動作するための簡易的なWebサーバ機能を持つことや、ほかのWebサーバとの連携機能が充実していることからも世界中で開発環境や企業の公開用サーバとして利用されています。

 このように特徴的なTomcatにおいて、2007年の3月に最新版であるTomcat 6.xシリーズの安定版がついにリリースされました。

最新版Tomcat、6.x系の改善点

 Tomcat 6.xと以前のTomcat 5.x系列とでは大きくいくつかの点で改善があります。

  • サーブレット 2.5および《JSP 2.1》のサポート
  • APR(Apache Portable Runtime)、New I/O APIの取り込みによる入出力機能の拡張
  • Java SE 5以上が必須になった
  • デフォルトのディレクトリ構成の変更
  • ロギングAPIのパッケージ名の変更
  • クラスタリング設定のリファクタリング
  • HTTPコネクタのメモリ使用量を低減
  • AJP(Apache JServ Protocol)コネクタにPacketSizeオプションの追加
  • AprLifecycleListenerSSLEngine属性を追加
  • Dynamic MBeanを使用するようにモジュールを修正
  • 多くのコネクタにKeepAliveTimeout属性を追加

 今回はさらなる進化を遂げるTomcatの最新版を導入してみましょう。

CentOS 5.0に最新Tomcatをセットアップ

 それでは、実際にTomcatのインストールに取り掛かりましょう。

CentOS 5.0を使う

 今回、インストールに利用するOSはTomcatと同じく無償の「CentOS 5.0」(Linuxディストリビューションの1つ)を利用します。

ALT 図1 CentOSのトップページ

編集部注:CentOSについて詳しく知りたい読者は、Linux Tipsの「Red Hat Enterprise Linux互換のCentOS」をご参照ください。

注意!JRE 5.0以上のインストールが必須

CentOS 5.0には、Tomcat 5.5が標準パッケージとして用意されていますが、利用せず削除しています。また、今回インストールする最新版のTomcat 6.xを利用するには、JRE(JDK) 5.0以上が必要となります。

CentOS 5.0の標準パッケージであるJava-1.4.2-compatは利用しません。あらかじめJRE 5.0以上をインストールしたうえで、サーバ上に環境変数「JAVA_HOME=”JRE 5.0のインストールディレクトリ”」を設定し、PATHに「$JAVA_HOME/bin」を追加しておいてください。

編集部注:JRE(JDK) 5.0のLinuxへのインストールについて詳しく知りたい読者は、Linux Squareの記事「JMeterによるWebサーバ性能評価の勘所」のコラム「JDKのインストール」をご参照ください。


Tomcat 6.x系のダウンロード

 Tomcatをインストールするためには、まず、Apache Software FoundationのホームページからTomcatの専用ページを開きます。

 Tomcatのページにはいくつかのメニューがありますが、今回利用するのはTomcatの最新版である「Tomcat 6.x」の系列です。

 左のサイドメニューから「Download 」の中にある「 Tomcat 6.x 」のページを開きます。

ALT 図2 Tomcatのダウンロードページ

 画面の下方にある「6.0.x」(本稿執筆時は「6.0.14」が最新版となります)からコンポーネントを選択してダウンロードします。

 「Binary Distributions」には「Core」と「Deployer」がありますが、今回はWebアプリケーションの動的配置は考えていませんので、「Core」コンポーネントのみをダウンロードし、インストールします。

 今回はLinux上でのインストールとなるためLinuxの一般的なアーカイブ方式の「tar.gz」のリンク先のファイルをダウンロードします。「tar.gz」のリンク先をメモしておいてください。

 サーバ上でメモしたURLからwgetコマンドでファイルをダウンロードします。

wget http://www.meisei-u.ac.jp/mirror/apache/dist/tomcat/tomcat-6/

v6.0.14/bin/apache-tomcat-6.0.14.tar.gz


Tomcat 6.x系をインストール

 それでは、tarコマンドで下記のようにダウンロードしたtar.gz形式のファイルを解凍しましょう。

tar -xzf apache-tomcat-6.0.14.zip


 tar.gzのアーカイブを解凍すると、その場にディレクトリが作成されます。今回の場合バイナリのパッケージを利用しているためにTomcat自体をビルドする必要はありません。

 解凍の終わったTomcatのディレクトリはアプリケーションを格納するためのディレクトリへと移動します。

 通常アプリケーションは「/usr」ディレクトリ以下にインストールしたいところですが、RPMで管理されたパッケージではなく追加の独自コンポーネントですので、「/opt」以下に移動します。

編集部注:RPMについて詳しく知りたい読者は、Linux Tipsの[インストール/RPM]をご参照ください。

 ここでは、分かりやすくするためにディレクトリ名を「tomcat6」へ改名します。

mv -f apache-tomcat-6.0.14 /opt/tomcat6


“攻撃”されないためのセットアップ時の注意

 移動が完了してもインストールは完了ではありません。TomcatやApache(Webサーバ)のような公開サービスのプロセスは攻撃者に攻撃されるケースがよくあります。

編集部注:Apache(Webサーバ)やそのセットアップについて詳しく知りたい読者は、Linux Squareの連載「ApacheによるWebサーバ構築」をご参照ください。

 公開サービスが乗っ取られたときに不用意に権限を与えて情報を漏らさぬように専用ユーザーを用意して起動することがセキュリティ上望ましいといえます。

 実際、CentOS 5.0ではApacheのデフォルトの起動ユーザーは「Apache」となるように設定されています。ここでは、Apacheと同様にTomcatを起動するための専用ユーザー「tomcat」を作成して管理はそのユーザーに任せるようにします。

useradd -d /opt/tomcat6 -s /sbin/nologin tomcat


 そして、作成したTomcatのユーザーでアプリケーションを起動できるようTomcatのインストール先のディレクトリの所有権を変更します。

chown -R tomcat. /opt/tomcat6


 Tomcatのインストールはこれで終わりです。次ページではTomcatを自動起動する方法やApacheと連携させるmod_proxy_ajpについて解説します。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。