GNU/Linux >> Linux の 問題 >  >> Linux

ファイルへのアクセスが Tomcat によって提供されないようにブロックするには?

解決策 1:

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 設定ファイルを介してこれを解決する必要があります。

解決策 2:

この投稿のすべてのシステム管理者と 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>

解決策 3:

Web ディレクトリ構造の外に保存しないのはなぜですか?ユーザーに知られたくないものを /var/www/html/ の下に置くことは決してありません。

解決策 4:

アドバイスの言葉。権限を修正した後。すべてのパスワードを変更し、Google キャッシュがないことを確認してください。

解決策 5:

通常、構成情報 (データベース接続情報など) は、Tomcat にデプロイされた WAR ファイルの WEB-INF フォルダーの下のファイルに格納されます。クライアントは WEB-INF の下のファイルにアクセスできません。


Linux
  1. Awkからファイルをキャットする方法は?

  2. ストリーミングWebサイトからFlashファイルにアクセスする方法は?

  3. Ubuntu18.04でApache静的ファイルキャッシングを最適化する方法

  1. Linux で root 以外のユーザーが crontab エントリを作成するのをブロックする方法

  2. Apache アクセス ログからトラフィックを測定する

  3. ターミナルウィンドウからLinuxでファイルを作成するには?

  1. .htaccessファイルを介したアクセスのブロック

  2. install -c は cp とどう違うのですか

  3. cp -f は cp --remove-destination とどう違うのですか?