Як заблокувати доступ до файлу від сервісу Tomcat?


10

У нас є декілька серверів tomcat, і ми просто виявили, що деякі файли, які ми не хочемо, щоб публіки мали доступ до цих файлів. Для прикладу:

Скажімо, у нас є папка / var / www / html /, яку ми публікуємо через tomcat, але ми не хочемо виставляти /var/www/html/conf/dbinfo.txt. У цей момент люди можуть зайти на www.thissite.com/conf/dbinfo.txt і вони можуть бачити речі. Мені подобається, що я можу його заблокувати, тому він не показує, але він дозволяє читати сам tomcat.

Будь-яка допомога вдячна.


Є багато хороших відповідей, але найпростішим та простішим у нашому виробничому середовищі був той, що розміщений 24 червня 2009 р.
Гео

Дякую за ваш внесок, я сподівався отримати кілька голосів, перш ніж прийняти це як відповідь, оскільки є й інші, які мають голоси. Дякую!
Гео

Відповіді:


5

Доступ до файлів Tomcat контролюється розділом обмежень безпеки WEB-INF / web.xml.

Ви можете заблокувати confтакий спосіб:

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

Якщо ви використовуєте apache для подання статичного контенту, це не працюватиме, оскільки apache буде обслуговувати файли conf до того, як tomcat отримає URL-адресу. У цих випадках вам потрібно буде вирішити це через конфігураційні файли апачі http.


4

Чому б не зберігати його поза структурою веб-каталогів? Ми ніколи не ставимо нічого під / var / www / html /, що б ми не хотіли, щоб користувач виявив.


4

Привіт всім SysAdmin та ІТ-працівникам у цій публікації. Дякуємо за ваші відповіді. Багато відповідей на мої запитання були прийнятними, але ця найкраще підходила для нашого виробничого середовища.

Добре. Щоб заблокувати каталог або файл у віртуальному хості в server.xml, вам просто потрібно додати наступний код до server.xml у каталозі tomcat / conf.

Перед:

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

Після:

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

Тож відповідь на питання - додайте наступні рядки:

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

2

Слово поради. Після виправлення дозволів. Змініть усі паролі та переконайтесь, що в ньому немає кеша Google.


Дякую! виправлено зараз. Я просто хочу знати, чи є кращий виправлення для цього. Якщо я не отримаю відповідей, я викладу виправлення. Знову дякую.
Гео

2

Зазвичай інформація про конфігурацію (наприклад, інформація про підключення до бази даних, ...) зберігається у файлах у папці WEB-INF файлу WAR, розгорнутого в Tomcat. Файли під WEB-INF недоступні для клієнтів.


0

У мене те саме питання, але я не бачу, як прийнята відповідь може реально працювати. Клапан, на який посилається тут, стосується ВСЕ ВЕБАПП. Не частина цього. Тож я припускаю, що в цьому випадку, як тільки він не може розпізнати контекст як відображення веб-сторінки, він просто ігнорує директиву і кидає деякі коментарі у файл журналу.


0

Ви можете заблокувати каталог у загальнодоступному доступі через файл server.xml

Додайте ці рядки до цього файлу 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>

потім перейдіть до цього http: // localhost: 8080 / example, то він відображається як помилка 404 сторінки, тобто) означає заблокований

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.