Como bloquear o acesso a um arquivo de ser atendido pelo Tomcat?

10

Temos alguns servidores tomcat e acabamos de descobrir que alguns arquivos que não queremos que o público tenha acesso a esses arquivos. Para exemplificar:

Digamos que temos uma pasta / var / www / html / que estamos publicando através do tomcat, mas não queremos expor /var/www/html/conf/dbinfo.txt. Neste momento, as pessoas podem acessar www.thissite.com/conf/dbinfo.txt e podem ver as coisas. Eu gostaria de poder bloqueá-lo, então ele não mostra, mas permite que ele seja lido pelo próprio tomcat.

Qualquer ajuda é apreciada.

    
por Geo 18.06.2009 / 22:29

7 respostas

4

Olá a todos os SysAdmin e IT Workers neste post. Obrigado por suas respostas. Muitas das respostas às minhas perguntas foram aceitáveis, mas esta foi a mais adequada para o nosso ambiente de produção.

Ok. Para bloquear um diretório ou um arquivo em um host virtual no server.xml, basta adicionar o seguinte código ao server.xml no diretório tomcat / conf.

Antes:

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

Depois:

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

Então, a resposta para a pergunta é adicionar as seguintes linhas:

    <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>
    
por 24.06.2009 / 23:48
5

O acesso a arquivos do Tomcat é controlado pela seção de restrições de segurança do WEB-INF / web.xml.

Você pode bloquear conf desta maneira:

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

Se você estiver usando o apache para fornecer conteúdo estático, isso não funcionará, pois o apache exibirá os arquivos conf antes que o tomcat obtenha o URL. Nesses casos, você precisaria resolver isso por meio dos arquivos de configuração http do apache.

    
por 22.06.2009 / 15:46
4

Por que não armazená-lo fora da estrutura do diretório da web? Nós nunca colocamos nada em / var / www / html / que não queremos que um usuário descubra.

    
por 18.06.2009 / 22:33
2

Palavra de conselho. Depois de corrigir as permissões. Altere todas as senhas e certifique-se de que não haja um cache do google.

    
por 18.06.2009 / 22:38
2

Normalmente, as informações de configuração (como informações de conexão do banco de dados, ...) são armazenadas em arquivos na pasta WEB-INF do arquivo WAR implantado no Tomcat. Os arquivos no WEB-INF não estão acessíveis aos clientes.

    
por 22.06.2009 / 18:46
0

Tendo o mesmo problema, mas não consigo ver como a resposta aceita pode realmente funcionar. A válvula invocada aqui se aplica à webapp INTEIRA. Não faz parte disso. Então, estou assumindo que, nesse caso, uma vez que não é possível reconhecer o contexto como representando um aplicativo da Web, ele simplesmente ignora a diretiva e lança alguns comentários no arquivo de log.

    
por 02.09.2010 / 23:40
0

Você pode bloquear o diretório em acesso público por meio do arquivo server.xml

Adicione estas linhas ao arquivo 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>

em seguida, acesse o link e mostre-o como um erro de 404 páginas, ou seja, significa bloqueado

    
por 09.03.2018 / 08:30