Categorias
Apache Java

adicionando um pouco de segurança ao Tomcat – o patch sem código

Ao acessar um endereço que não existe, normalmente o erro abaixo aparece:

apache-com-versao

Com esse erro, conseguimos saber a versão do Apache e o sistema operacional. Um script kiddie pode buscar por falhas nessa versão e talvez conseguir entrar no servidor.

Existe uma configuração no Apache HTTP Server que esconde as informações de versão do servidor, o que é interessante para diminuir o risco de invasões.

Ela é bem simples, basta adicionar essas duas linhas ao arquivo httpd.conf :

ServerSignature Off
ServerTokens Prod

 

Depois com um restart no servidor as informações de versão não aparecem mais:

apache-sem-versao

Com alguns Apache Tomcats em produção eu gostaria de algo semelhante, mas o que existe é apenas um opção de troca de versão, mas é meio trabalhosa.

Hoje, chamando via GET onde somente é aceito via POST, as informações de versão também são exibidas no rodapé:

tomcat-com-versao

Então, como o projeto é open source, resolvi olhar o fonte!

show-me-the-source-yoda

Percebi que uma classe controla isso facilmente e já possui os atributos para ligar e desligar as informações de versão:

public class ErrorReportValve extends ValveBase {

 private boolean showServerInfo = true;

Então eu me ofereci na lista dos desenvolvedores para criar um patch passando do server.xml uma configuração para alterar o atributo.

Para a minha surpresa um dos commiters respondeu que isso já é possível fazer , basta passar o valor do atributo pelo server.xml dessa maneira:

<Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="true">

  <Valve className="org.apache.catalina.valves.ErrorReportValve"
         showServerInfo="false" />

Com isso temos o resultado esperado:

tomcat-sem-versao

Além disso, criaram um feature request para adicionar essa opção como padrão.

Está em discussão se isso será implementado mesmo, mas mesmo assim fiquei satisfeito que, mesmo sem commitar nada, consegui contribuir com alguma coisa para o projeto.

E viva o mundo open source!

Fernando Boaglio, para a comunidade