TomcatのWebアプリケーションマネージャ(manager)を無効化する方法

TomcatのWebアプリケーションマネージャ(manager)を無効化する方法

Apache TomcatのWebアプリケーションマネージャ(manager)は、デプロイやアンデプロイ、アプリケーションのリロードなど、Webアプリケーションの管理を行うためのツールです。
デフォルトでインストールされている場合、このマネージャアプリケーションは管理者によってアクセス可能な状態になっています。
しかし、セキュリティの観点から、特に使用しない場合は無効化することが推奨されます。
以下に、TomcatのWebアプリケーションマネージャを無効化する方法について説明します。

1. managerアプリケーションの削除

最もシンプルな方法は、Tomcatのwebappsディレクトリからmanagerアプリケーションを削除することです。
これにより、マネージャへのアクセスが物理的に不可能になります。
以下の手順で削除を行います:

1. Tomcatのインストールディレクトリに移動します。
通常、このディレクトリは/usr/local/tomcatまたは/opt/tomcatなどです。

cd /path/to/tomcat

2. webappsディレクトリに移動します。

cd webapps

3. managerディレクトリを削除します。

rm -rf manager

この方法を用いると、managerアプリケーションは完全に削除されるため、復元が必要な場合はバックアップを事前に作成しておくことをお勧めします。

2. server.xmlでのmanagerアプリケーションの無効化

server.xmlファイルでmanagerアプリケーションを無効化することも可能です。
このファイルはTomcatのconfディレクトリにあります。
以下の手順で設定を変更します:

1. Tomcatのconfディレクトリに移動します。

cd /path/to/tomcat/conf

2. server.xmlファイルをテキストエディタで開きます。

vi server.xml

3. Host要素内のmanagerアプリケーションに関連するContext要素をコメントアウトするか削除します。
通常、この部分は以下のようになっています:

<Context path="/manager" docBase="${catalina.home}/webapps/manager"
         reloadable="false" privileged="true" />

この部分をコメントアウトする場合、以下のように変更します:

<!--
<Context path="/manager" docBase="${catalina.home}/webapps/manager"
         reloadable="false" privileged="true" />
-->

4. ファイルを保存して閉じます。

5. Tomcatを再起動して変更を反映させます。

bin/shutdown.sh
bin/startup.sh

3. tomcat-users.xmlファイルでのアクセス制御

もしmanagerアプリケーションを削除せずにアクセス制御を強化したい場合、tomcat-users.xmlファイルを編集することで管理者のみがアクセスできるように設定することができます。
このファイルもconfディレクトリにあります。

1. confディレクトリに移動してtomcat-users.xmlファイルを開きます。

cd /path/to/tomcat/conf
vi tomcat-users.xml

2. manager-guiとmanager-scriptのロールを持つユーザーを削除するか、無効にします。
例えば、以下のように設定されている場合:

<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="password" roles="manager-gui,manager-script"/>

これをコメントアウトするか削除します。

<!--
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="password" roles="manager-gui,manager-script"/>
-->

3. ファイルを保存して閉じます。

4. Tomcatを再起動して変更を適用します。

bin/shutdown.sh
bin/startup.sh

4. ファイアウォールでのアクセス制限

さらに、ファイアウォールでmanagerアプリケーションへのアクセスを制限することも可能です。
例えば、iptablesを使用して特定のIPアドレスからのアクセスのみを許可する設定を行うことができます。

iptables -A INPUT -p tcp -s <your-ip-address> --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j DROP

これにより、特定のIPアドレスからのみTomcatのポート(デフォルトでは8080)にアクセスできるようになります。

まとめ

TomcatのWebアプリケーションマネージャ(manager)を無効化する方法はいくつかあります。
使用する方法は、セキュリティの要件や運用ポリシーに応じて選択することが重要です。
無効化することで、不要な攻撃のリスクを軽減することができます。
また、マネージャアプリケーションを削除する前に、必要に応じてバックアップを作成し、設定変更を行った場合はTomcatの再起動を忘れずに行ってください。