Question Comment bloquer l'accès d'un fichier à Tomcat?


Nous avons quelques serveurs tomcat et nous venons de découvrir que certains fichiers que nous ne voulons pas que le public ait accès à ces fichiers. Pour illustrer:

Disons que nous avons un dossier / var / www / html / que nous publions via tomcat, mais nous ne souhaitons pas exposer /var/www/html/conf/dbinfo.txt. À ce moment, les gens peuvent aller à www.thissite.com/conf/dbinfo.txt et ils peuvent voir des choses. J'aimerai pouvoir le bloquer, donc ne le montre pas, mais cela lui permet d'être lu par Tomcat lui-même.

Toute aide est appréciée.


10
2018-06-18 20:29


origine


Il y a beaucoup de bonnes réponses, mais la plus simple et la plus facile dans notre environnement de production a été celle publiée le 24 juin 2009. - Geo
Merci pour votre contribution, j’espérais obtenir quelques votes avant de l’accepter comme réponse, car il en existe d’autres avec des votes. Merci! - Geo


Réponses:


L'accès aux fichiers de Tomcat est contrôlé par la section relative aux contraintes de sécurité de WEB-INF / web.xml.

Vous pouvez bloquer conf par ici:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>HTTP-Protected-Resource-1</web-resource-name>
        <description>Description here</description>
        <url-pattern>/conf/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>NOSOUPFORYOU</role-name>
    </auth-constraint>
</security-constraint>

<login-config>
    <auth-method>DEFAULT</auth-method>
    <realm-name>NOACCESSFORANYONE</realm-name>
</login-config>
<security-role>
    <role-name>NOSOUPFORYOU</role-name>
</security-role>

Si vous utilisez apache pour servir du contenu statique, cela ne fonctionnera pas, car apache servira les fichiers de configuration avant que tomcat obtienne l'URL. Dans ce cas, vous devrez résoudre ceci via les fichiers de configuration http d'Apache.


5
2018-06-22 13:46





Pourquoi ne pas le stocker en dehors de votre structure de répertoire Web? Nous ne mettons jamais rien dans / var / www / html / que nous ne voudrions pas qu'un utilisateur découvre.


4
2018-06-18 20:33





Bonjour à tous les administrateurs système et informaticiens de ce post. Merci pour vos réponses. Bon nombre des réponses à mes questions étaient acceptables, mais celle-ci convenait mieux à notre environnement de production.

D'accord. Pour bloquer un répertoire ou un fichier dans un hôte virtuel dans server.xml, il vous suffit d'ajouter le code suivant au fichier server.xml du répertoire tomcat / conf.

Avant:

  <Host name="www.customer.com" appBase="/usr/share/app4_0b/tomcat/webapps/" autoDeploy="false">
    <Context path="" docBase="./customer" />

    <Valapp className="org.apache.catalina.valapps.FastCommonAccessLogValapp"
           directory="weblogs/customer"
           prefix="www_customer_com_"
           suffix=".txt"
           pattern="combined"
           resolappHosts="false" />
  </Host>

Après:

  <Host name="www.customer.com" appBase="/usr/share/app4_0b/tomcat/webapps/" autoDeploy="false">
    <Context path="" docBase="./customer" />

    <Context path="/app/xv/~customer/etc" docBase="" >
      <Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
    </Context>
    <Context path="/etc" docBase="" >
      <Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
    </Context>

    <Valapp className="org.apache.catalina.valapps.FastCommonAccessLogValapp"
           directory="weblogs/customer"
           prefix="www_customer_com_"
           suffix=".txt"
           pattern="combined"
           resolappHosts="false" />
  </Host>

Donc, la réponse à la question est d'ajouter les lignes suivantes:

    <Context path="/app/xv/~customer/etc" docBase="" >
      <Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
    </Context>
    <Context path="/etc" docBase="" >
      <Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
    </Context>

4
2018-06-24 21:48





Mot de conseil. Après avoir corrigé les autorisations. Modifiez tous les mots de passe et assurez-vous qu'il n'y a pas de cache google.


2
2018-06-18 20:38



Merci! est corrigé maintenant. Je veux juste savoir s'il y a une meilleure solution pour cela. Si je ne reçois pas de réponses, je posterai le correctif. Merci encore. - Geo


Normalement, les informations de configuration (telles que les informations de connexion à la base de données, ...) sont stockées dans des fichiers situés dans le dossier WEB-INF du fichier WAR déployé sur Tomcat. Les fichiers sous WEB-INF ne sont pas accessibles aux clients.


2
2018-06-22 16:46





Avoir le même problème, mais je ne vois pas comment la réponse acceptée peut vraiment fonctionner. La valve invoquée ici s'applique à la webapp ENTIRE. Ça n'en fait pas partie. Donc, je suppose que dans ce cas, une fois qu'il ne peut pas reconnaître le contexte comme représentant une application Web, il ignore simplement la directive et jette des commentaires dans le fichier journal.


0
2017-09-02 21:40





Vous pouvez bloquer le répertoire en accès public via le fichier server.xml

Ajoutez ces lignes à ce fichier server.xml

    <Context path="/opt/tomcat7/webapps/examples" docBase="" >
    <Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
    </Context>

    <Context path="/examples" docBase="" >
    <Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
    </Context>

puis accéder à cette http: // localhost: 8080 / examples puis il apparaît comme une erreur de page 404, c'est-à-dire) signifie bloqué


0
2018-03-09 07:30