Ao acessar um endereço que não existe, normalmente o erro abaixo aparece:
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:
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é:
Então, como o projeto é open source, resolvi olhar o fonte!
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:
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