10 Dicas para manter seu Joomla seguro

     O Joomla é o segundo CMS (Content Management System, ou Sistema de Gerenciamento de Conteúdo) mais utilizado no mundo. Porém alguns cuidados são necessários ao utilizar esta poderosa ferramenta. Neste artigo estão dez dicas para manter o Joomla mais seguro (sem precisar tornar-se um especialista em Joomla). 

       Vale ressaltar que, nem todas as dicas aqui contidas podem ser aplicadas em todos as instalações. Cada instalação tem uma particularidade/finalidade diferente, portanto deve se analisar o impacto da ação em seu ambiente.

 1 – Evite usar a versão 1.5.x

Esta versão teve o fim do seu ciclo em 26 de março de 2013, com a versão 1.5.26. Portanto, não são mais feitas correções de segurança para essa versão. Logo, ela torna uma “presa fácil” para um possível atacante.

O CSIRT Unicamp recomenda-se a migração para a versão 3.x. O upgrade para a versão 2.5.x também é válido, porém deve-se atentar ao fato de que o suporte para essa versão termina em 31 de dezembro de 2014.

Caso não seja possível o upgrade (por questões de compatibilidade de plugins, por exemplo), deve-se tomar medidas para mitigar os riscos (aplicar as nove dicas abaixo torna-se quase “obrigatório”).

2 – Mantenha seu Joomla atualizado

     Essa tarefa trivial é esquecida na maioria das instalações Joomla. Um site desatualizado é um pote de mel para os “script kiddies” de plantão. Muito embora as vezes pode ser extremamente complicado, devido á compatibilidade com plugins e templates, é uma condição sem á qual não se pode garantir a segurança da aplicação.

     A atualização é simples, e pode ser feita diretamente do painel de administração.

3 – Seja criterioso com as permissões do sistema de arquivos.

Por padrão, tudo deve ser “somente leitura”. Se possível, dê permissão de escrita apenas ao arquivo de log, e caso haja algum plugin que realize upload de arquivos, dê permissão apenas a pasta em questão. O owner dos arquivos devem ser diferentes do usuário do apache,

Supondo que o usuário do apache seja “apache”, e que o joomla esteja instalado no diretório /var/www/html/site, as permissões abaixo são suficientes:

# chown -R usuario:apache /var//www/html/site

# chmod 640 /var/www/html/site/*

# chmod 770 /var/www/html/site/logs/*
 4 – Utilize o arquivo htaccess fornecido na instalação.

O arquivo htaccess vem nos arquivos de instalação do Joomla, com o nome de “htaccess.txt”. Ele contém regras que ajudam a mitigar os ataques e exploits mais comuns. Basta renomear o arquivo de “htaccess.txt” para “.htaccess”. Supondo que o joomla esteja instalado no diretório /var/www/html/site, ficaria assim:

# cd /var/www/html/site

# mv htaccess.txt .htaccess

Atentar-se ao fato de que deve estar habilitado o uso de htaccess no apache. Para isso, verifique no arquivo de configuração do apache, na sessão correspondente ao diretório do site, se a diretiva AllowOverride está habilitada, conforme abaixo:

<Directory "/var/www/html/site">

AllowOverride All

 (...)

</Directory>

5 – Habilite as opções “Utilizar mod_rewrite” e “Adicionar sufixo de URL”.

   Ambas opções estão em “Configuração Global”. Essas opções vão fazer com que a Url seja reescrita antes do Joomla interpretar a solicitação. Isso dificulta ataques que utilizam a Url para passagem de parâmetros. Vale ressaltar que o atacante pode “driblar” essa opção, “aprendendo” o padrão de reescrita da Url e enviando os parâmetros maliciosos. Todavia, esse não é o comportamento padrão das ferramentas que exploram vulnerabilidades.

   A opção “Utilizar mod_rewrite” vai fazer com que ele “esconda” o “index.php” da URL, dando a “impressão” de se tratar de um site estático. Normalmente, as URLs são assim:

http://site.com/index.php/artigo

   Após habilitar a opção “mod_rewrite”, ficaria assim:

http://site.com/artigo

   A opção “Adicionar sufixo de URL” faz com que ele adicione um sufixo na URL baseado no tipo do documento (normalmente html). A URL passaria a ficar igual de um site estático:

http://site.com/artigo.html

   Vale ressaltar que, para que esses opções funcionem, o arquivo .htacess fornecido na instalação deve estar em uso (passo 4).

6 – Limite acesso a área de Administração

   Adicionar uma camada de segurança para acesso á pagina /administrator é sempre recomendado. Isso pode ser feito limitando os Ips que possuem acesso á essa área. Caso isso não seja possível, autenticação com um arquivo “.htaccess” já aumenta consideravélmente a segurança. Melhor ainda se puder combinar restrição por IPs + autenticação por htaccess.

7 – Conceda apenas os privilégios necessários ao usuário do banco (Mysql)

   Normalmente, o usuário mysql usado durante a instalação do Joomla não é alterado. Logo, possui privilégios muitas vezes desnecessários, como por exemplo “INTO OUTFILE”, que permite salvar o resultado de um SELECT em um arquivo de texto. Em um eventual ataque de SQL Injection, o atacante pode usar desse privilégio para salvar um arquivo malicioso no servidor.

   Em uma instalação convencional, apenas as permissões “SELECT”, “INSERT” e “UPDATE” são mais que suficiêntes para o funcionamento do site. Considerando que seu banco chame-se “joomla”, você pode criar o usuário do joomla com o comando abaixo (mysql):

mysql> CREATE USER  'usuario'@'host'  IDENTIFIED BY 'senha';;

mysql> GRANT select, insert, update on joomla.* to 'usuario'@'host' ;

   Caso você queira ser um pouco mais radical, você pode ser ainda mais específico nas permissões, e atribuir INSERT e UPDATE apenas para os campos necessários. Considerando que o prefixo das tabelas seja “jos”, ficaria:

mysql> GRANT select on joomla.* to 'usuario'@'host' ;

mysql> GRANT insert on joomla.jos_session to 'usuario'@'host' ;

mysql> GRANT update (hits) on joomla.jos_content to 'usuario'@'host' ;

   Vale lembrar que o “owner” do banco NÃO deve ser o usuário que o Joomla utiliza.

8 – Desabilite funções “perigosas” do PHP

Algumas funções do PHP podem ser extremamente perigosas quando um atacante consegue de alguma forma explorar uma vulnerabilidade. A configuração abaixo, que deve ser realizada no arquivo php.ini (normalmente /etc/php.ini) desabilita boa parte destas funções e normalmente não prejudica o funcionamento do Joomla:

disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open
 9 – Não instale plugins e templates de fontes duvidosas.

É grande o número de plugins e templates “Free” com códigos maliciosos. Antes de instalar qualquer plugin ou template, pesquise sobre ele, veja se existem vulnerabilidades conhecidas. Você irá gastar menos de 15 minutos nessa pesquisa, certamente é bem mais vantajoso que a dor de cabeça que isso pode te causar.

 10 – Utilize a opção “URL Amigáveis”.

  A grande maioria dos ataques a sites Joomla são originadas de uma pesquisa no Google por uma determinada vulnerabilidade. Ou seja: O atacante conhece a vulnerabilidade “X” de um plugin, e sabe que a URL para explorar essa vulnerabilidade é “/com_meuplugin?pagina.php?id=123&x=456”, ele ira realizar a pesquisa por essa URL. Caso você utilize este padrão de URL, certamente seu site será encontrado. Utilizar URL amigável faz com que você “oculte” sua vulnerabilidade, caso ela exista. Aproveite também para verificar o arquivo robots.txt do seu site, para se certificar quais páginas estão sendo indexadas pelos buscadores.

 Referência:

http://docs.joomla.org/Security