2010-01-27 7 views
0

Je lui ai demandé ce sur la faute du serveur, mais vraiment havent eu beaucoup de chance, en espérant que quelqu'un ici serait en mesure d'offrir quelques conseils ...Empêcher l'accès à certaines webapps dans Tomcat6

J'ai un serveur Tomcat 6 en cours d'exécution très bien . J'ai un accès externe qui fonctionne. Je voulais savoir comment empêcher quelqu'un de voir des webapps spécifiques, par exemple, je ne veux pas d'accès externe à la page ROOT tomcat. Comment pourrais-je empêcher certaines applications Web tout en laissant d'autres applications Web visibles aux utilisateurs externes?

Voici ce que j'ai essayé: Cela nie tout, même les demandes 127.0.0.1

<Host name="localhost" appBase="webapps" 
       unpackWARs="true" autoDeploy="true" 
       xmlValidation="false" xmlNamespaceAware="false"> 

    <Context path="/examples" docBase="" > 
     <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1"/> 
    </Context> 
    </Host> 

Cela nie tout aussi bien.

<Host name="localhost" appBase="webapps" 
        unpackWARs="true" autoDeploy="true" 
        xmlValidation="false" xmlNamespaceAware="false"> 

     <Context path="/examples" docBase="" > 
      <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="*"/> 
     </Context> 
     </Host> 

Fondamentalement, je suis en train d'empêcher l'accès à la page par défaut ROOT tomcat et les applications par exemple ....

Toutes les idées?

Répondre

2

Vous ne pouvez pas utiliser une wild card pour le permettre attribut ... d'autre part, vous pouvez utiliser un pour l'attribut nier.

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

C'est pourquoi je recevais un 403 avec le code ci-dessus.

Une autre façon de gérer cela a été de créer un fichier jsp qui redirigeait le trafic vers l'endroit voulu.

1

jetez un oeil à la documentation. http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html

Ce que vous avez semble être correct. il dit "Si cet attribut est spécifié, l'adresse distante DOIT correspondre pour que cette demande soit acceptée."

Une chose que vous pouvez regarder est de voir si 127.0.0.1 est vraiment l'adresse IP correcte. Vous utilisez peut-être l'adresse IP de la boîte. essayez d'ajouter cette adresse IP après celle de localhost.

+0

bien sur mon deuxième exemple, j'ai allow = "* "qui devrait permettre tout et n'importe quoi. mais c'est toujours refusé. – Gabe

+0

Vous avez fait un bon point sur la double vérification de la source ip +1 – Gabe

1

La valeur de la « permettre » la propriété doit être définie à l'aide antislashs pour échapper aux points de l'adresse IP autorisée:

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.0\.0\.1"/> 
0

Cela pourrait être un problème IPv6. C'est ce que mon tomcat6/Catalina/myApp.xml ressemble:

<!--<?xml version="1.0" encoding="UTF-8"?> --> 
<Context path="/myApp" privileged="true"> 
    <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.0\.0\.1,0:0:0:0:0:0:0:1"/> 
</Context> 

Cela peut être testé par le suivant qui produirait 403 si on vous refuse l'accès

wget --inet4-only http://localhost:8080/myApp