klog

2009-04-24

アクセス制限をかける。

| 00:31

Tomcatに標準でつくWebApplication Manager。

Tomcat、各コンテキストのステータスやWARファイルをアップロードできたり、

コンテキストの配備、起動停止などがブラウザより実行可能。


ただあくまでも開発フェーズでの利用が望ましく、実際の運用に入った場合、

このWAMを利用可能な設定で放置しておくとセキュリティ的にもあまり宜しい状態ではない。


WAMを無効化する手段としては、WAMが格納されているManagerコンテキストの削除の他、

アクセス制限を駆ける手段がある。


Tomcat全体からホスト、そしてコンテキストの単位でそれぞれアクセス制限をかけることが

可能であり、コンテキストで制限をかける場合はコンテキスト設定ファイルを編集する必要がある。


今回はWAMが格納されているManagerコンテキストが対象となるので、

$CATALINA_HOME/confディレクトリ直下にエンジン名(デフォルトだとCatalina)のディレクトリを作成、

さらにその下にホスト名(デフォルトだとlocalhost)のディレクトリを作成する。

デフォルトでは$CATALINA_HOME/logs/Catalina/localhostとなる。


そして、そのホスト名のディレクトリ内にコンテキスト設定ファイル(Manager.xml)を作成する。

記述する内容は以下の通り。

<Context path="/manager"
     docBase="${catalina.home}/webapps/manager"
     debug="0"
     privileged="true">
	<Valve
	 className="org.apache.catalina.valves.RemoteAddrValve"
	 allow="127.0.0.1" />
</Context>

server.xmlでの編集ではないため、

設定ファイルが作成され次第、即時にTomcatのManagerコンテキストへ上記の設定が反映される。


Tomcatが起動しているマシンのIPアドレスアクセスした際は

403のレスポンスコードが返却され、localhostや127.0.0.1でアクセスした際は正常に表示される。


ちなみにValve要素に記述されているclassName属性には二種類の値が指定可能である。

classNameフィルタの挙動
org.apache.catalina.valves. RemoteAddrValveIPアドレスフィルタを行う。
org.apache.catalina.valves. RemoteHostValveホスト名でフィルタを行う。

ホスト名でフィルタを行う場合は、Tomcatが名前解決が出来る環境が整っている必要があるので注意。


参考URL

 http://www.javaroad.jp/opensource/js_tomcat7.htm

freework_jobstylefreework_jobstyle 2009/11/02 03:11 http://notebookmemory.blog.shinobi.jp/Entry/148/#trackback

トラックバック - http://d.hatena.ne.jp/Kango/20090424/1240587093