kuniku’s diary

はてなダイアリーから移行(旧 d.hatena.ne.jp/kuniku/)、表示がおかしな箇所はコメントをお願いします。記載されている内容は日付およびバージョンに注意してください。直近1年以上前は古い情報の可能性が高くなります。

tomcatのアクセス制限

tomcat8.0.14にて webapps/manager webapps/host-manager のアクセス制限を行う際に、はまった。

昔のバージョンのroleは使えないことが判明した。
参考)
http://www.checksite.jp/apache-tomcat-7-0-39-tomcat-users/
tomcat7くらいから変わっているようだ。
コメントで残っているのが、昔のってことみたいで。

参考例
${catalina.base}/conf/tomcat-users.xml

<?xml version='1.0' encoding='utf-8'?>
<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
-->

<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="あなたのパスワード" roles="manager-gui,admin-gui"/>

</tomcat-users>

tomcat8.0.14にて webapps/manager webapps/host-manager のアクセス制限を行う際に、
${catalina.base}/conf/Catalina/localhost/manager.xml
${catalina.base}/conf/Catalina/localhost/host-manager.xml

を用意して、allow のIPで縛ろうとしたんだが、
昔のtomcatでは、

host-manager.xml

<Context path="/host-manager" docBase="${catalina.home}/webapps/host-manager"
  debug="0" privileged="true">
  <Valve
    className="org.apache.catalina.valves.RemoteHostValve"
    allow="127.0.0.1,192.168.1.*" />
</Context> 

と記載していたけど、IPのリストは、半角カンマでなく、または「|」を使う必要があるようだ。

allow="127.0.0.1|192.168.1.*"

http://tomcat.apache.org/tomcat-8.0-doc/config/valve.html#Remote_Host_Filter

allowとdenyを参照すると、
A regular expression (using java.util.regex)
と書いてある、正規表現に変わったんだねー。

http://tomcat.apache.org/tomcat-8.0-doc/config/valve.html#Remote_Address_Filter
もみると、正規表現なので、ほとんど正規表現に変わってるんじゃないかと。