“安全”のために
Tomcatを理解し、構築し、動作させる
アメニクス
x-lab チーム
2007/10/11
無料サーバはどこまで安全にできるのか?
| 今回の主な内容 |
近年、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オプションの追加
- AprLifecycleListenerにSSLEngine属性を追加
- Dynamic MBeanを使用するようにモジュールを修正
- 多くのコネクタにKeepAliveTimeout属性を追加
今回はさらなる進化を遂げるTomcatの最新版を導入してみましょう。
CentOS 5.0に最新Tomcatをセットアップ
それでは、実際にTomcatのインストールに取り掛かりましょう。
■ CentOS 5.0を使う
今回、インストールに利用するOSはTomcatと同じく無償の「CentOS 5.0」(Linuxディストリビューションの1つ)を利用します。
![]() |
| 図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のダウンロードページ |
画面の下方にある「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/ |
■ 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ジャパン)
- Webの表示速度を遅くする「SSLハンドシェイク」とは (2010/2/9)
安全性を担保しようとWebページにSSLを適用すると、負荷の高い処理が実行される。速度と安全性は両立できるのか? - クラウド活用「雲活」のために押さえるべき39のポイント (2010/2/2)
活用するべきサービスか否か、クラウドの利点・問題点、クラウドプラットフォーム提供企業になるための条件、開発者がするべきことに分けて紹介 - 再利用性の高いクラス作成に重要な“アクセス制御” (2010/1/28)
Javaのアクセス修飾子public、private、protectedや、Eclipseで簡単に作れるアクセサメソッドgetter、setterについて解説 - DB設計の神ツール「ERMaster」なら、ここまでできる (2010/1/21)
直感的なUIに、カスタマイズ可能な、Excel出力のテーブル定義書、辞書機能など多機能なERモデリングの無料Eclipseプラグインです
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

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








