いくつかのTomcatサーバーがあり、公開したくない一部のファイルがそれらのファイルにアクセスできないことを発見しました。例証するには:
Tomcatを通じて公開しているフォルダ/ var/www/html /があるが、/ var/www/html/conf/dbinfo.txtを公開したくないとします。この時点で、人々はwww.thissite.com/conf/dbinfo.txtにアクセスでき、物事を見ることができます。私はそれをブロックできるようにしたいので表示しませんが、Tomcat自体がそれを読み取ることができます。
どんな助けでもありがたいです。
この投稿のSysAdminとITワーカーの皆さん、こんにちは。ご回答ありがとうございます。私の質問に対する回答の多くは受け入れられましたが、これは私たちの実稼働環境に最も適していました。
OK。 server.xmlの仮想ホスト内のディレクトリまたはファイルをブロックするには、Tomcat/confディレクトリのserver.xmlに次のコードを追加するだけです。
前:
<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>
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を使用して静的コンテンツを提供している場合、TomcatがURLを取得する前にApacheがconfファイルを提供するため、これは機能しません。そのような場合は、Apacheのhttp構成ファイルを使用してこれを解決する必要があります。
それをあなたのウェブディレクトリ構造の外に保存しませんか?/var/www/html /の下には、ユーザーに発見してほしくないものを入れません。
通常、構成情報(データベース接続情報など)は、TomcatにデプロイされたWARファイルのWEB-INFフォルダーの下のファイルに格納されます。 WEB-INFの下のファイルはクライアントからアクセスできません。
アドバイスの言葉。権限を修正した後。すべてのパスワードを変更し、そのgoogleキャッシュがないことを確認してください。
同じ問題がありますが、受け入れられた回答が実際にどのように機能するのかわかりません。ここで呼び出されるバルブは、Webアプリケーション全体に適用されます。その一部ではありません。したがって、この場合、コンテキストがwebappを表すものとして認識できなくなると、それは単にディレクティブを無視し、ログファイルにコメントをスローすることになると想定しています。
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/examples 404ページエラーとして表示されます。つまり)ブロックされていることを意味します