Ограничить доступ к менеджеру 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"
и это тоже сработало.