2015-11-03 5 views
6

Я пытаюсь ограничить все запросы к моему менеджеру Tomcat, которые не поступают из моего IP-адреса.Ограничить доступ к менеджеру Tomcat по IP

До сих пор, я обнаружил, что добавление Valve к server.xml, как это:

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

будет блокировать все запросы, кроме тех, поступающих от «IP» для всей Tomcat (включая WebApps). Кто-нибудь знает, как сделать то же самое, но применительно только к менеджеру Tomcat?

Кстати, я использую Tomcat7.

ответ

16

[tomcat]/conf/Catalina/[hostname] создать файл manager.xml.

Так что, если ваше имя хост www.yourdomainname.com и кот в 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, поэтому у возможных нарушителей не будет понятия, что существует даже менеджер.

Restart 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", а также работал.