“安全”のために
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ジャパン)
- Android NDKでJNIを使用してアプリを高速化するには (2010/3/17)
C/C++やOpenGL ESといったネイティブコードを使うためのNDKとJNIを紹介し、その使い方や注意点を徹底解説します - 調査の難しい「OutOfMemoryError」事例、5選 (2010/3/11)
Java開発者が避けて通れないメモリ不足エラーの基本的な問題切り分け方法と発生につながる事例、対処法を解説 - 究極の問題解析ツール、逆コンパイラJD-Eclipseとは (2010/3/8)
ライブラリ内で例外が発生! そのクラスのソースコードを調べたい!! 自動で逆コンパイルしてくれる無料Eclipseプラグインがあります - いまさら聞けない「Webサービス」の常識 (2010/2/26)
昨今では企業システムでも使われる「Webサービス」の概念やJava標準のJAX-WSを紹介しJBoss WSでサンプルを作成
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 「いつかは壊れるサーバ」そんな故障に 迅速で安価に手軽に対応する方法とは? New! |
| 「特権ユーザー」の事件を防げ! 万能権限を持つユーザーの管理方法とは? New! |
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | TomcatやJBossなどAPサーバ環境に関する 情報を集約! “業務”用APサーバ大百科 New! |
| ◆ | 一気に解説! 最新のクラスタストレージ 「RAIDを超えたストレージ基準」……など New! |
| ◆ | クラウド的ユーザー体験の変化は脅威か? 仮想化技術を使いこなす運用管理術を紹介 New! |

| ◆ | 上司や部下、部署内メンバーとの情報共有 を“ガラッ”と変えるコラボツールとは? New! |
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |

| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |
| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |

| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |
| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |

| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |









