2015-11-03 2 views
6

J'essaie de limiter toutes les demandes à mon gestionnaire Tomcat qui ne proviennent pas de mon adresse IP.Restreindre l'accès au gestionnaire Tomcat par IP

, je trouvé à ce jour que l'ajout d'une vanne au server.xml comme ceci:

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

va bloquer toutes les demandes, sauf celles provenant de « IP » à l'ensemble Tomcat (y compris les webapps). Est-ce que quelqu'un sait comment faire la même chose mais ne s'applique qu'au manager Tomcat? En passant, j'utilise Tomcat7.

Répondre

16

Dans [tomcat]/conf/Catalina/[hostname], créez un fichier manager.xml.

Donc, si votre nom d'hôte est www.yourdomainname.com et tomcat est en opt/tomcat7/ ce serait:

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

Dans ce nouveau manager.xml vous mettez le RemoteAddrValve dans le contexte:

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

adresses IP multiples séparés par un caractère de pipe.

Je choisis denyStatus=404 afin que les intrus éventuels n'aient pas la moindre idée qu'il existe même un gestionnaire.

Redémarrez Tomcat.

+0

fonctionne parfaitement! aussi un excellent ajout pour nier le statut! – muilpp

+1

Je viens d'essayer avec Tomcat 7.0.64 et 8.0.36 sans redémarrer et ils ont fonctionné. – LinuxDisciple

+0

comment tester cela? –

3

En Tomcat8 j'ai trouvé le RemoteAddrValve déjà C:\Program Files\Apache Software Foundation\Tomcat 8.0\webapps\manager\META-INF\context.xml, et je devais juste décommenter ...

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

J'ai ajouté la suggestion de @ acdhirr à la valve de refuser le statut denyStatus="404", et cela a fonctionné aussi.