Quais etapas devo tomar para proteger o Tomcat 6.x?
10
Estou no processo de configurar uma nova implantação do Tomcat e quero que ela seja o mais segura possível.
Eu criei um usuário 'jakarta' e tenho o jsvc executando o Tomcat como um daemon. Alguma dica sobre permissões de diretório e outras para limitar o acesso aos arquivos do Tomcat?
Sei que precisarei remover os aplicativos da web padrão - documentos, exemplos, etc ... existem práticas recomendadas que devo usar aqui? E todos os arquivos XML de configuração? Alguma dica aí?
Vale a pena ativar o gerenciador de segurança para que os webapps sejam executados em uma sandbox? Alguém já teve experiência em configurar isso?
Vi exemplos de pessoas executando duas instâncias do Tomcat atrás do Apache. Parece que isso pode ser feito usando mod_jk ou com mod_proxy ... algum prós / contras de qualquer um? Vale a pena o trabalho?
Caso isso importe, o sistema operacional é o Debian Lenny. Não estou usando o apt-get porque o lenny oferece apenas o tomcat 5.5 e precisamos do 6.x.
Você pode instalar o Tomcat 6 para executar jsvccomo usuário tomcat (não como root ). Aqui está o que eu fiz da última vez que o configurei:
Instalei o aplicativo Tomcat em /usr/java/tomcat( CATALINA_HOME) e uma instância em /var/lib/tomcat( CATALINA_BASE):
cd /usr/java
sudo tar xzvf ~/downloads/apache-tomcat-6.0.18.tar.gz
sudo ln -s apache-tomcat-6.0.18 tomcat
sudo /usr/sbin/useradd -d /var/lib/tomcat -c "Apache Tomcat" -m -s /sbin/nologin tomcat
cd /var/lib/tomcat
sudo mkdir logs work temp
sudo chown tomcat:tomcat logs temp work
(cd /usr/java/tomcat && sudo tar cvf - conf webapps) | sudo tar xvf -
sudo chmod -R g+rw webapps conf
sudo chown -R tomcat:tomcat webapps conf
cd webapps/
sudo rm -rf docs examples manager host-manager
cd ../conf
sudo chmod g+r *
Então eu construí o jsvcwrapper:
cd
tar xzvf downloads/apache-tomcat-6.0.18.tar.gz
tar xzvf apache-tomcat-6.0.18/bin/jsvc.tar.gz
cd jsvc-src
chmod +x configure
./configure --with-java=$JAVA_HOME
make
./jsvc --help
sudo cp jsvc /usr/local/sbin/
Por fim, reforcei as permissões nos diretórios da instância:
Normalmente, adiciono o material chmod e chown ao script de inicialização (init), pois ele é executado como root. Fui mordido várias vezes por pessoas que "ajudavam" a iniciar o tomcat como root, levando os arquivos e diretórios a pertencerem ao root e a não serem graváveis para o usuário do tomcat, uma vez reiniciado corretamente. Você perdeu "sudo chown tomcat: tomcat temp work" na sua lista? Ou eu perdi alguma coisa?
Olaf
Como são criados pelo Tomcat, eles serão criados com o tomcat: tomcat owner / group.
CoverosGene
Algum motivo para não usar o pacote jsvc pré-empacotado? Pessoalmente, eu apenas instalo o pacote, mesmo que eu baixe o Tomcat dos servidores Apache.
tronda
3
O Departamento de Defesa dos EUA tem um bom guia que combina as orientações de segurança do Tomcat em um Guia de Segurança do Servidor da Web (SRG) geral. Você pode encontrar mais guias de segurança aqui:
Obrigado, embora eles não estão em um formato muito amigável
Peter Sankauskas
O link está quebrado. Eles também parecem não fornecer mais uma lista de verificação específica para o Tomcat.
21413 Bob
atualizado para corrigir o link. Ainda há algumas coisas específicas do Tomcat no guia Serviços de aplicativos.
21713 Jim Hunziker
Essa é uma ótima página, no entanto, é de 2006, portanto, algumas recomendações podem não estar atualizadas para o tomcat mais recente. Aqui está o parágrafo relevante sobre permissões de diretório: B.2 Configuração e inicialização O Tomcat pode ser configurado para ser executado como um aplicativo de usuário único ou como um serviço ou processo compartilhado do sistema. Um serviço ou processo do Tomcat não precisa de privilégios de administrador ou raiz da plataforma host para operar. Para limitar o risco de explorações do servidor Tomcat, uma conta de host personalizada dedicada à execução do serviço ou processo do Tomcat será criada e terá privilégios mínimos no sistema host.
14144 amos
2
O Open Web Application Security Project ( OWASP ) oferece uma página wiki sobre a proteção do Tomcat , que você pode achar útil. No momento da redação deste artigo, ele parece mais focado no Tomcat 5.x, mas espero que seja atualizado com o passar do tempo.
Eu consideraria seriamente fazer o backport dos pacotes tomcat6 dos testes. Você pode se inscrever no pacote para receber notificações de novas versões sendo carregadas no arquivo morto. (Eu sou um pouco tendencioso, pois trabalhei na embalagem do debian).
Não tentei executar webapps sob um gerenciador de segurança, pois nenhum aplicativo vem com uma política e, francamente, é uma operação demorada criar você mesmo. Se você é paranóico, certamente pode fazê-lo. Envolve principalmente a execução do tomcat, a espera de alguma falha e a adição de uma exceção à política e a reinicialização do tomcat novamente. Enxágüe, repita, etc.
Obviamente, não execute o tomcat como root. O usuário do tomcat não deve poder gravar em nada fora do diretório de log ou do diretório de trabalho. Você deve se certificar de que seu diretório webapps contenha apenas os aplicativos web que deseja executar.
Eu sempre corro o tomcat atrás do apache. Isso ocorre em parte porque eu gostaria de pensar que mais pessoas usam apache, para que os erros sejam encontrados mais rapidamente. Esse é um pensamento bastante positivo e você não deve confiar nisso como uma melhoria de segurança. O que o Apache traz para você é a configurabilidade. Existem muitos módulos que o tomcat simplesmente não possui ou não pode fazer com a mesma eficiência. mod_cache, mod_ssl, mod_security tudo vem à mente. Você tem a opção de mod_jk, mod_proxy (e mod_proxy_http ou mod_proxy_ajp). mod_jk (e mod_proxy_ajp) usam o protocolo AJP binário em vez do protocolo http menos eficiente. Eu recomendo usar o mod_jk.
Não se esqueça de alterar a senha padrão da função de administrador no tomcat-users.xml É muito importante, caso contrário, uma pessoa mal-intencionada pode implantar aplicativos sem permissão restrita, como backdoor, no servidor tomcat e tentar fazer muitas coisas ruins.
O Departamento de Defesa dos EUA tem um bom guia que combina as orientações de segurança do Tomcat em um Guia de Segurança do Servidor da Web (SRG) geral. Você pode encontrar mais guias de segurança aqui:
http://iase.disa.mil/stigs/srgs/Pages/index.aspx
fonte
O Open Web Application Security Project ( OWASP ) oferece uma página wiki sobre a proteção do Tomcat , que você pode achar útil. No momento da redação deste artigo, ele parece mais focado no Tomcat 5.x, mas espero que seja atualizado com o passar do tempo.
fonte
Eu consideraria seriamente fazer o backport dos pacotes tomcat6 dos testes. Você pode se inscrever no pacote para receber notificações de novas versões sendo carregadas no arquivo morto. (Eu sou um pouco tendencioso, pois trabalhei na embalagem do debian).
Não tentei executar webapps sob um gerenciador de segurança, pois nenhum aplicativo vem com uma política e, francamente, é uma operação demorada criar você mesmo. Se você é paranóico, certamente pode fazê-lo. Envolve principalmente a execução do tomcat, a espera de alguma falha e a adição de uma exceção à política e a reinicialização do tomcat novamente. Enxágüe, repita, etc.
Obviamente, não execute o tomcat como root. O usuário do tomcat não deve poder gravar em nada fora do diretório de log ou do diretório de trabalho. Você deve se certificar de que seu diretório webapps contenha apenas os aplicativos web que deseja executar.
Eu sempre corro o tomcat atrás do apache. Isso ocorre em parte porque eu gostaria de pensar que mais pessoas usam apache, para que os erros sejam encontrados mais rapidamente. Esse é um pensamento bastante positivo e você não deve confiar nisso como uma melhoria de segurança. O que o Apache traz para você é a configurabilidade. Existem muitos módulos que o tomcat simplesmente não possui ou não pode fazer com a mesma eficiência. mod_cache, mod_ssl, mod_security tudo vem à mente. Você tem a opção de mod_jk, mod_proxy (e mod_proxy_http ou mod_proxy_ajp). mod_jk (e mod_proxy_ajp) usam o protocolo AJP binário em vez do protocolo http menos eficiente. Eu recomendo usar o mod_jk.
fonte
Não se esqueça de alterar a senha padrão da função de administrador no tomcat-users.xml É muito importante, caso contrário, uma pessoa mal-intencionada pode implantar aplicativos sem permissão restrita, como backdoor, no servidor tomcat e tentar fazer muitas coisas ruins.
fonte