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
もみると、正規表現なので、ほとんど正規表現に変わってるんじゃないかと。