Ограничить доступ к менеджеру Tomcat по IP

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

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

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

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

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

2 ответа

Решение

В [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 таким образом, возможные нарушители не будут иметь никакого понятия, там даже есть менеджер.

Перезапустите Tomcat.

В 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"и это тоже сработало.

Другие вопросы по тегам