2015-11-03 159 views
6

我试图限制所有请求到我的Tomcat管理器,这些请求不是来自我的IP。通过IP限制对Tomcat管理器的访问

到目前为止,我发现,添加一个阀门,以这样的server.xml中:

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

将阻止除了那些从“IP”未来整个的Tomcat(包括web应用)的所有请求。有谁知道如何做同样的事情,但只适用于Tomcat管理器?

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

回答

16

[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:

<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。

+0

作品完美!除了否认身份之外,还有很大的补充! – muilpp

+1

我刚刚在Tomcat 7.0.64和8.0.36上试了一下,没有重新启动,他们工作。 – LinuxDisciple

+0

如何测试这个? –

3

在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",而且还工作。