quinta-feira, abril 15, 2010

Hardening Tomcat



Baseado na documentação da OWASP disponível em http://www.owasp.org/index.php/Securing_tomcat.

1 - Instalar a última versão do Java (JRE ou JDK) e do Tomcat;


2 - Remover as aplicações exemplo em webapps (ROOT, balancer, jsp-examples, servlet-examples, tomcat-docs, webdav, servlets-examples);

Ubuntu/Debian:
apt-get remove tomcat5.5-webapps



3 - Não rodar o servidor Tomcat como root. Criar um usuário e grupo específico para o serviço, e mudar a permissão de usuário e grupo do diretório CATALINA_HOME. O diretório CATALINA_HOME/conf deverá ter a permissão 400 e apenas o diretório CATALINA_HOME/logs deverá ter permissão de escrita para o usuário e grupo específico do serviço, além do /tmp;


4 - Desabilitar a exibição de arquivos, caso não exista o index. Editar o arquivo CATALINA_HOME/conf/web.xml :

<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value> <!-- make sure this is false -->
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>



5 - Remover a string de versão do Tomcat, para não mostrar em mensagens de erros:

* Extrair o arquivo:
cd CATALINA_HOME/server/lib
jar xf catalina.jar org/apache/catalina/util/ServerInfo.properties

* Modificar a linha: server.info=Apache Tomcat

* Reempacotar o arquivo catalina.jar:
jar uf catalina.jar org/apache/catalina/util/ServerInfo.properties

* Remover o diretório CATALINA_HOME/server/lib/org (criado quando extraído o arquivo ServerInfo.properties )



6 - Modificar a página de erro do Tomcat, pois a padrão do servidor expões informações sensíveis. Editar o arquivo CATALINA_HOME/conf/web.xml e adicionar a entrada abaixo após a entrada welcome-file-list:
 <error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/error.jsp</location>
</error-page>




7 - Trocar a string de versão dos cabeçalhos HTTP, no arquivo CATALINA_HOME/conf/server.xml:
 <Connector port="8080" ...
server="Apache" /> <!-- server header is now Apache -->



8 - Proteger a porta 8005, através de firewall (porta de shutdown);
 <Server port="8005" shutdown="ReallyComplexWord">



9 - Remover os usuários não utilizados do manager do tomcat e trocar a senha do admin, no arquivo tomcat-users.xml:
 <role rolename="manager"/>
<user username="darren" password="ReallyComplexPassword" roles="manager"/>



10 - Caso tenha certificado SSL no tomcat, para garantir que o acesso ao manager seja feito de forma criptografada, adicionar no arquivo CATALINA_HOME/webapps/manager/WEB-INF/web.xml:
  <user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>

<user-data-constraint>



11 - Limitar acesso à página de administração, editando o arquivo CATALINA_HOME/conf/Catalina/localhost/manager.xml :
 <!-- allow only LAN IPs to connect to the manager webapp -->

<!-- contrary to the current Tomcat 5.5 documation the value for allow is not a regular expression -->
<!-- future versions may have to be specified as 192\.168\.1\.* -->
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192.168.1.*" />

Um comentário:

Rafael Gomes disse...

Muito bom o artigo. Usei aqui com algumas mudanças.

Por exemplo, não consegui deixar a pasta do Tomcat sem a permissão padrão para o usuário tomcat. Não subia... :(

Com exceção disso, foi tudo tranquilo.