Apache Tomcat でのバナー・グラビングを廃絶する

Tomcat インストール済み環境がサイバー密告者にならないようにしてください

バナー・グラビングを足がかりとして、本格的なサイバー攻撃が開始されることはよくありますが、これを防ぐのは簡単です。Apache Tomcat インストール済み環境を、そのバージョン情報を基にした不正行為から保護するために、Server.xml および ServerInfo.properties ファイルのデフォルト・パラメーターを無効にする方法を学んでください。

Manuel Alejandro Peña Sánchez, IT Security Specialist , Freelance

Manuel Alejandro Peña Sánchez は、13 年の経験を持つ IT セキュリティー・スペシャリストです。彼は、技術的な問題を管理チームにわかるように説明したり、管理チームからの要求を技術的な問題に落とし込んだりすることを専門としています。彼がコンサルティングを行っている IT リーダーからは、高く評価しているビジネス・アソシエイト兼アドバイザーとして、彼の名前が挙げられることが頻繁にあります。



2014年 3月 13日

セキュリティーの文化を醸成する

企業は、顧客とのやりとりをより効果的に行い、ビジネス・プロセスの実施に伴うコストを低減し、成果が出るまでの時間を短縮するために、アプリケーションを Web に移すものです。しかし、セキュリティーがアプリケーション開発プロセスの不可欠な要素となっていなければ、Web への移行によってアプリケーションの脆弱性も増大します。組織におけるセキュリティーの文化の醸成について詳しく学習するには、「Secure Web Applications: Creating a Security Culture」をダウンロードして読んでください。

Apache Tomcat は、大規模な本番環境でも小規模な新規実装や実験的実装でも使用されている、世界で最もよく使われているオープンソースの Web サーバーの 1 つです。しかし残念なことに、Tomcat は人気があるがために、セキュリティー上の脆弱性を見つけて悪用しようとするハッカーたちのターゲットにもなっています。これは特に古いバージョンの Web サーバーで顕著なことです。

この記事では、3 つのステップから成る手順で Tomcat Web サーバーをバナー・グラビングから保護する方法を紹介します。バナー・グラビングとは、ハッカーが、サイバー攻撃で利用できるかもしれないアプリケーションやエンタープライズ・アーキテクチャーに関する重要な情報を見つけるために用いる手法です。

Apache HTTP Server

Apache HTTP Server 上でのバナー・グラビングを防ぐ方法についての情報は溢れていますが (「参考文献」を参照)、このような攻撃から Tomcat を保護する方法を説明している文書はほとんど見当たりません。このことから、この記事では Apache Tomcat に焦点を当てます。

記事ではまず、バナー・グラビングの概要を簡単に説明し、その上で Tomcat Web サーバーをこの攻撃から守る方法を紹介します。ここで紹介する方法は、Linux または Windows 環境で稼働するあらゆるバージョンの Tomcat に適用することができます。

バナー・グラビングとは何か?

皆さんは、以下に示す画像を見慣れていることでしょう。これは、SSH ターミナルや単純な Telnet コマンドからアクセスしたホスト・アプリケーション (この例では、Tomcat Web サーバー) の画面です。

図 1. サーバーのホスト・リクエスト
サーバーのホスト・リクエストを示す画面のスクリーン・ショット

システムの脆弱性を見つけ出そうとするアタッカーにとって、バナー・グラビングはその目的を達成する簡単な手段となります。図 1 に示されているように、バナー (つまり、ホスト・サーバーによって表示されるテキスト) によって、システムが実行しているソフトウェアとそのバージョン番号が明らかになります。この情報を入手したアタッカーは、そのバージョンで既知となっている脆弱性を調べて、それを悪用できるというわけです。デフォルトでは、アプリケーション・サーバーはリクエストに応じてこの情報を表示します。

アタッカーは、Web サーバーのエラー・ページで脆弱性に関するシステム・レベルの情報を調べることもできます。図 2 に、サーバー・エラー・ページにリダイレクトされた Web ブラウザーのビューを示します。ここには、サーバーのバージョン番号が表示されています。

図 2. Tomcat のエラー・ページ
Tomcat のエラー・ページのスクリーン・ショット

バナー・グラビングは極めて簡単に行えるため、多くの場合、ハッカーにとってアプリケーションの脆弱性を見つけて悪用するための最初のステップとなります。


バナー・グラビングを廃絶する方法

注: Tomcat サーバー実装に変更を加える前に、必ずファイルをバックアップしておいてください。

このセクションでは、Tomcat Web サーバー実装においてバナー・グラビングを廃絶するための全 3 ステップから成る手順をデモンストレーションします。このデモンストレーションは基本的に、Telnet やその他のコマンドに対する Tomcat サーバーの応答をブロックするもので、その手順は極めて簡単です。

ステップ 1. server.xml ファイルを編集する

server.xml ファイルは通常、Tomcat インストール・ディレクトリーのルート・パスに置かれています。バイナリー・インストールの場合、このファイルは /etc/tomcat"X" に置かれることになります。ここで、X はサーバーのバージョンです。従って、Tomcat バイナリー・パッケージをインストールした Debian Linux 環境での server.xml ファイルの場所は、/etc/tomcat6/server.xml となります。Apache ホーム・ページから TAR ファイルをダウンロードして、server.xml ファイルを /opt に解凍したとしたら、ファイルの場所は /opt/apache-tomcat-"X"/conf/server.xml となります。場合によっては、このパスに $CATALINA_HOME という名前が付けられることがありますが、その場合には、ファイルの場所は $CATALINA_HOME/server.xml となります。

以下のコマンドを実行すれば、server.xml ファイルのパスを簡単に調べることができます。

#> find / -name server.xml

次に、server.xml ファイルでコネクター・ポート (Connector port) 行を見つけます。図 3 に示されている行は、Tomcat に対して、このサービスがリッスンするポートを指示します。

図 3. コネクター・ポート
コンソールに表示されたコネクター・ポート行を示す画面のスクリーン・ショット

この行に server パラメーターを追加して、ユーザーからシステムのバージョンを要求された場合の Tomcat の応答方法を指定します。以下は、その一例です。

    <Connector port="8080" .....
		server="APPSRV"

server パラメーターの値には、Apache、APPSRV、server、MyTeam など、任意の値を指定することができます。唯一の規則は、この値を空にしないこと、そしてハッカーが探している情報を、この値によって公開しないことです。

図 4. 新しく追加された server パラメーター
新しく追加された server パラメーターを示す画面のスクリーン・ショット

server.xml ファイルに変更を加えたら、そのファイルを保存して、ファイル・エディターを終了します。この最初のステップを完了すると、誰がサーバー・バージョンを問い合わせても、Tomcat はその情報を公開しなくなります。

ステップ 2. ServerInfo.properties ファイルを編集する

次は、一般公開されるエラー・レポートの中で、Tomcat サーバーのバージョンが明らかにされることがないように Tomcat サーバーを構成します。このステップは少し複雑ですが、難し過ぎることはありません。

まず、Tomcat インストール済み環境で catalina.jar ファイルを見つけて、そこから ServerInfo.properties ファイルを抽出します。catalina.jar ファイルは、バイナリー・インストールでは一般に /usr/share/tomcat"X"/lib に置かれています。TAR ファイルでインストールした場合は、Tomcat のルート・インストール・パスの lib ディレクトリー内にあります。

従って、Tomcat がバイナリー・インストールされた Debian Linux 環境では、catalina.jar ファイルの場所は /usr/share/tomcat6/lib/catalina.jar となります。Apache ホーム・ページから TAR ファイルをダウンロードして、/opt に catalina.jar を解凍してある場合には、ファイルの場所は $CATALINA_HOME/lib/catalina.jar となります。

以下のコマンドを実行することで、ファイルのパスを簡単に検索することができます。

#> find / -name catalina.jar

作業を続ける前に、必ず catalina.jar ファイルをバックアップしてください。

次に、catalina.jar から ServerInfo.properties ファイルを抽出するために、以下のコマンドを実行します。

#>  jar xf catalina.jar org/apache/catalina/util/ServerInfo.properties

上記のコマンドは、jar に対し、catalina.jar 内の /org/apache/catalina/util に置かれている ServerInfo.properties ファイルを抽出するよう命令します。

図 5 に、抽出されたファイルの server.info および server.number パラメーターを示します。

図 5. server.info および server.number パラメーター
コンソールに表示された server.info および server.number パラメーターのスクリーン・ショット

これらのパラメーターの値は、任意の値に変更することも、削除することもできます。例えば、パラメーターに以下の値が設定されているとします。

server.info=Apache Tomcat 6.0.x.x/x
server.number=6.0.3.1

これらのパラメーターを以下のように変更することができます。

server.info=
server.number=0.0.0.0

変更内容に満足したら、ファイルを保存して終了します。残りの必要な作業として、変更後のファイルを圧縮して catalina.jar に格納しなければなりません。それには、以下のコマンドを使用します。

 #>  jar uf catalina.jar  org/apache/catalina/util/ServerInfo.properties

catalina.jar 内のファイルを変更後のファイルで置き換えた後は、org ディレクトリーを削除しても構いません。

これで、Apache Tomcat インストール済み環境は、一般的なエラー・メッセージからのバナー・グラビングができないように構成されました。

ステップ 3. Apache Tomcat を再起動する

最後のステップは、Apache Tomcat を再起動することです。バイナリー・インストールの場合は、以下のコマンドを実行します。

#> /etc/init.d/tomcat6 restart

あるいは以下のコマンドを実行しても構いません。

#> service tomcat6 restart

TAR ファイルを抽出した場合は、以下のコマンドを実行します。

#> . /$CATALINA_HOME/bin/shutdown.sh
#> . /$CATALINA_HOME/bin/startup.sh

以下の手順に従って、Tomcat インストール済み環境に対して行った変更を確認します。

  1. 変更後の Tomcat サーバーがリッスンするポートで、Tomcat サーバーとの Telnet セッションを開始します。
    #> telnet 192.168.237.119 8080
  2. サーバーが応答したら、サーバーでサポートしているオプションを求めるリクエストを送信します。
    #> OPTIONS / HTTP/1.1
    #> HOST: 192.168.237.119
    #> [ENTER]
  3. サーバーのレスポンスには、図 6 に示すように、server.xml ファイルに含まれる、更新されたサーバー・パラメーター値が表示されます。
    図 6. 新しいホスト・サーバーからのレスポンスの確認
    新しいサーバーからのレスポンスのスクリーン・ショット
  4. 今度はブラウザーを開いて、Tomcat インストール済み環境のメイン・ページへアクセスする際に、エラーが発生することになるページ・リクエストを追加します (例えば、http://192.168.237.119:8080/index)。
  5. Tomcat はこの URL を認識しないため、エラー・メッセージを送信します。ただし、エラー・メッセージには、サーバー・バージョンに関する情報は一切示されません。
    図 7. 新しいエラー・メッセージ・レスポンスの確認
    新しいエラー・メッセージのスクリーン・ショット

図 7 のバナー・メッセージを見て、アタッカーは Apache サーバーがインストールされていることはわかっても、実行されている具体的なサーバーやバージョンについてはわかりません。これで、バナー・グラビングを廃絶できました!


まとめ

使用している Tomcat サーバー・インストール済み環境を最新の状態に保つことは、そのサーバーの既知の脆弱性を突いた攻撃からアプリケーションを保護する最善の方法です。また、Tomcat のデフォルトのバナー動作を無効にしてバージョン情報が表示されないようにすることも、有効な対策となります。これにより、ハッカーはサイバー攻撃を計画するのが容易ではなくなるため、皆さんは安心して眠れるようになります。

参考文献

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=セキュリティ, Java technology
ArticleID=964952
ArticleTitle=Apache Tomcat でのバナー・グラビングを廃絶する
publish-date=03132014