通过IP限制对Tomcat管理器的访问

时间:2015-11-03 09:23:17

标签: tomcat tomcat7 tomcat-valve tomcat-manager

我试图限制我的Tomcat经理的所有请求,这些请求不是来自我的IP。

到目前为止,我发现将一个Valve添加到server.xml,如下所示:

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="IP"/>

将阻止所有请求,除了来自&#34; IP&#34;整个Tomcat(包括webapps)。有谁知道如何做同样但只适用于Tomcat管理器?

顺便说一下,我使用的是Tomcat7。

2 个答案:

答案 0 :(得分:20)

[tomcat]/conf/Catalina/[hostname]中创建文件manager.xml

因此,如果您的主机名为www.yourdomainname.com且tomcat位于opt/tomcat7/,则为:

/opt/tomcat7/conf/Catalina/www.yourdomainname.com/manager.xml

在新创建的manager.xml中,您将RemoteAddrValve放在上下文中:

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

   <Valve className="org.apache.catalina.valves.RemoteAddrValve" 
    allow="127\.0\.0\.1|11\.22\.33\.44" denyStatus="404" />

</Context>  

通过竖线字符分隔多个ip地址。

我选择denyStatus=404所以可能的闯入者不会有线索甚至存在经理。

重启Tomcat。

答案 1 :(得分:5)

在Tomcat8中,我发现RemoteAddrValve已经在C:\Program Files\Apache Software Foundation\Tomcat 8.0\webapps\manager\META-INF\context.xml,我只需要取消注释...

<Context antiResourceLocking="false" privileged="true" >
  <!--
    Remove the comment markers from around the Valve below to limit access to
    the manager application to clients connecting from localhost
  -->

  <!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />-->

</Context>

我将@ acdhirr的建议添加到阀门以拒绝状态denyStatus="404",这也有效。