【2/17】今年は「濃厚」技術トーク!@ITメールセミナー スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷
Tomcatはどこまで“安全”にできるのか?(1)

“安全”のために
Tomcatを理解し、構築し、動作させる


アメニクス
x-lab チーム
2007/10/11


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

今回の主な内容
Tomcatについて人に説明できますか?
CentOS 5.0に最新Tomcatをセットアップ
Tomcatを自動的に起動するには?
TomcatとApacheを連携させるmod_proxy_ajp
「Hello World!」を表示してみよう
Tomcat 6の新機能と運用に関する設定

 近年、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つ)を利用します。

図1 CentOSのトップページ
図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 」のページを開きます。

図2 Tomcatのダウンロードページ
図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

 INDEX
第1回 “安全”のためにTomcatを理解し、構築し、動作させる
Page1
いまさら聞けないTomcat
CentOS 5.0に最新Tomcatをセットアップ
  Page2
Tomcatを自動的に起動するには?
TomcatとApacheを連携させるmod_proxy_ajp
  Page3
「Hello World!」を表示してみよう
Tomcat 6の新機能と運用に関する設定



Java Solution全記事一覧

ホワイトペーパーTechTargetジャパン

Java Solution フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

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

- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  企業の仮想化に足りない“発想”とは?
仮想化運用管理のキモは意外なところに!

New!
  操作もマニュアルも分かりやすい!
ユーザー視点で開発されたPC管理ツール

New!
  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  セキュリティを知り尽くす上野氏が登壇!
@ITメールソリューションLive! in Tokyo

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  世界に通用するストレージの作り方とは?
製品に込めた思いを富士通の開発者に聞く

  OSSで手間も時間も、障害も減った――
「マピオンの事例」オープンソース活用法

  「ノートPCの持ち出し禁止」で大丈夫?
情報漏えいを防ぐ管理手法とインフラは?

  1日の処理を1秒に――MySQLの達人が語る
「コスト削減」できるチューニング

  ドキュメント作成を自動化して、SEの作業
効率を大幅アップ! Visio 2007の魅力

  急速に広がるHyper-Vでのサーバ仮想化
そのベストプラクティスをデルが解説

  @IT主催セミナーで語られた、「担当者に
求められるセキュリティ対策」をレポート

  @IT「Windows 7」 特設サイトオープン!
最新情報・移行ノウハウを公開しています