2015-11-03 24 views
6

Sto provando a limitare tutte le richieste al mio gestore Tomcat che non provengono dal mio IP.Limita l'accesso al gestore Tomcat tramite IP

Finora, ho trovato che l'aggiunta di una valvola per il server.xml in questo modo:

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

sarà bloccare tutte le richieste ad eccezione di quelle provenienti da "IP" a tutta la Tomcat (comprese le webapps). Qualcuno sa come fare lo stesso, ma si applica solo al gestore Tomcat?

A proposito, sto utilizzando Tomcat7.

risposta

16

In [tomcat]/conf/Catalina/[hostname] creare un file manager.xml.

Così, se il nome host è www.yourdomainname.com e Tomcat è in opt/tomcat7/ che sarebbe:

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

In questa nuova creazione manager.xml si mette la RemoteAddrValve nel contesto:

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

Separa gli indirizzi IP da un personaggio di pipa.

Io scelgo lo denyStatus=404 così i trasgressori non hanno la minima idea che esista anche un manager.

Riavvia Tomcat.

+0

funziona perfettamente! ottima aggiunta per negare lo stato! – muilpp

+1

Ho appena provato questo con Tomcat 7.0.64 e 8.0.36 senza riavviare e hanno funzionato. – LinuxDisciple

+0

come testare questo? –

3

In Tomcat8 ho trovato il RemoteAddrValve già C:\Program Files\Apache Software Foundation\Tomcat 8.0\webapps\manager\META-INF\context.xml, e ho solo bisogno di togliere il commento è ...

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

ho aggiunto il suggerimento di @ acdhirr alla valvola di negare lo status denyStatus="404", e che ha funzionato anche.

Problemi correlati