6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

効果的な簡単のWebサーバセキュリティ対策「Tomcat編」

Last updated at Posted at 2020-07-09

「効果的な簡単のWebサーバセキュリティ対策」の第2弾です。今回の主人公はApache Tomcatです。

Apache Tomcatは、Java ServletやJSPを実行するためのWebコンテナです。

しかし、今Javaで新しい開発されたウェブアプリケーションの多くはSpringに使用している、Spring自分はWebServerがあるので、だからすべてのJavaウェブアプリケーションがTomcatを使用しているわけではありません。正直、もしSpringを使っての開発しているのウェブアプリケーションは、そのセキュリティ対策と我々はインフラエンジニア何も関係ない。我々インフラエンジニアはただの正しい権限ユーザーに実行することだけだ。

でも、Tomcatを使ってのJava Webアプリケーションを実行するの場合は、サービス安全のために、ある程度のセキュリティ対策をしなければなりません。これは、確かに我々インフラエンジニアの役割です。

正直に言えば、Tomcatのセキュリティ問題はとでも厳しいです。ここまで数年間、Tomcatは非常に深刻なCVEセキュリティ脆弱性をたくさん確認されました。

ですから、セキュリティ対策を講じることが何よりも重要だ。

セキュリティ対策前提条件

rootユーザーとしてTomcatを実行することはいけません。

これは基本的な常識です。

一般的に、新しいログインできないのノーマルユーザーを作成して、そしてそのユーザーでTomcatを実行します。

最新バージョンのTomcatを使用する

最新バージョンのTomcatを使用しなければならない。

先にも話しましたが、この数年間、Tomcatは非常に深刻なCVEセキュリティ脆弱性をたくさん確認されました。

最新バージョンのTomcatを使用すれば、これらの脆弱性が悪い人を悪用されるのを防ぐことができます。

別のTomcatセキュリティ設定

それでは、Tomcat別のセキュリティ設定を始めましょう。

Nginxを使ってTomcatをリバースプロキシします

近年發見したのTomcat CVEの脆弱性のうち、TomcatのWebServerモジュールにいくつかの脆弱性が發見しました。

ほとんどの悪用攻撃は、標準外のHTTPパケットを構築してTomcatをに攻撃します。

そのためには、Tomcatの設定を変更して外部からのアクセスを禁止するが必要だ。すべての外部からのアクセスはNginxに処理します。

Tomcatのインストールフォルダで、confフォルダー中のserver.xmlファイル内の設定に変更する:

<Connector port="8080" protocol="HTTP/1.1" address="127.0.0.1"  // <-- ただここで「address="127.0.0.1"」に追加する
maxHttpHeaderSize="8192" URIEncoding="UTF-8" // その他のパラメータただの参考です
maxThreads="500" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="10000" disableUploadTimeout="true" />

そして、今我々は「AJP」連続方法はほとんど使わないので、「AJP」連続方法を無効化します:

<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->

より安全にしたい場合は、SHUTDOWNの設定を変更することもできます:

<Server port="8005" shutdown="0c65e353a4df5c5e748626dd535a9c8b">

ここの「0c65e353a4df5c5e748626dd535a9c8b」はあなたが好きの内容を書かてもいい。

エラーページをカスタマイズしてTomcat関連の情報を非表示にする

この設定を変更するの理由は、攻撃者から特定のバージョンTomcatの脆弱性に対する攻撃を防ぐ。

つまり、なるべく攻撃者を混乱させる。

それをために、Tomcatのインストールフォルダで、confフォルダー中のweb.xmlファイル内の設定に変更する:

<error-page>
      <error-code>400</error-code>
      <location>/400.html</location> //<-- お気に入りのページを自由に選択
</error-page>
<error-page>
      <error-code>500</error-code>
      <location>/500.html</location> //<-- お気に入りのページを自由に選択
</error-page>
<error-page>
      <exception-type>java.lang.Exception</exception-type>
      <location>/error.html</location> //<-- お気に入りのページを自由に選択
</error-page>
<error-page>
      <exception-type>javax.servlet.ServletException</exception-type>
      <location>/error.html</location> //<-- お気に入りのページを自由に選択
</error-page>

ここでは、別のWebServer(Microsoft IISなど)のデフォルトのエラーページを模倣したエラーページを使用することもいい。

カスタムエラーページは、Tomcatインストールフォルダのwebappフォルダ、またはWebContentルートフォルダ、この2つフォルダどちらも大丈夫です、好きにフォルダを置きろう。

Tomcatの管理ページを無効化

本番環境では、Tomcatの管理ページは何の役にも立ちません。 そこで、管理ページへの不正アクセスを防ぐために、全部削除します。

  1. webappsフォルダ内のTomcatフォルダの内容を全て削除します。
  2. 「conf/Catalina/localhost/」フォルダ中、「host-manager.xml」と「manager.xml」この2つファイルを削除します。

結論

お気づきの方もいらっしゃると思いますが、Tomcatのセキュリティ対策として最も効果的なのは、タイムリーに最新版にアップグレードすることです。

その先にあるのは、攻撃者が間違った判断をするために、できるだけ多くの情報を難読化することです。

それ以外、私たちができることほとんどないです。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?