10 dicas para preservar a segurança do seu site em Joomla!

Por Renato Pinheiro

Um dos sistemas de gestão de conteúdo (CMS) mais utilizados do mundo, o Joomla! tornou-se alvo de grandes focos de ataque de hackers. Isso fez com que seus usuários passassem a redobrar a atenção nas questões de segurança, evitando a invasão ou roubo de informações. Se você ainda não sabe como instalá-lo e pretende se aventurar em novos desafios, mesmo que apenas por curiosidade, o Canaltech vai te ajudar nos próximos dias com um tutorial passo-a-passo, não perca! Veja agora 10 dicas para manter seu Joomla mais seguro:

1. Esqueça as versões 1.5.X

Joomla 1.5

Descontinuadas desde março de 2013, essas versões não recebem mais suporte das comunidades de desenvolvedores e, portanto, são um alvo muito fácil de invasão. Nós recomendamos a utilização das novas versões a partir da 3.0 (no momento da escrita desse artigo, a versão 3.2 é a mais atual). Por que? Poderíamos elencar aqui facilmente uma lista com 10 motivos, mas primeiro frisamos a questão das atualizações do sistema, que contêm em sua essência correções das vulnerabilidades detectadas, além de eventuais novas funcionalidades. Fora disso, desde a versão 3.0 o Joomla passou a estar muito mais voltado à internet móvel através de seus layouts responsivos e começou a atingir um público-alvo menos experiente através de seu back-end muito mais amigável.

2. Mantenha seu sistema sempre atualizado

Pode parecer redundante, mas a falta de atualização é atualmente uma das formas mais fáceis que os invasores encontram de causar um estrago no seu sistema. Mesmo assim tem muita gente marcando bobeira por aí. Uma empresa de hospedagem de sites já deixa bem claro em seu blog que isso vai muito além da versão do CMS. Tudo o que você instalar, seja plugin, tema ou semelhante está sujeito aos mesmos riscos de invasão, portanto esteja sempre atento aos sites dos desenvolvedores, pois seja por códigos mal desenvolvidos ou por brechas descobertas por crackers, rapidamente a comunidade atualiza a versão oficial da plataforma e a disponibiliza para seus usuários. Ficar um dia sequer sem a atualização do seu CMS pode expô-lo a falhas críticas de segurança.

3. Utilize o arquivo .htaccess fornecido na instalação

Sempre que você fizer uma instalação do Joomla, procure pelo arquivo htaccess.txt. Essa é a versão original do arquivo responsável pelas regras que ajudam a mitigar os ataques mais comuns. Basta renomeá-lo para ".htaccess". Supondo que o joomla esteja instalado no diretório /var/www/html/canaltech, ficaria assim:

# cd /var/www/html/canaltech
# mv htaccess.txt .htaccess

Repare que para isso o uso de htaccess deve estar habilitado no apache. 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/canaltech">
AllowOverride All
(...)

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

Por padrão, tudo precisa estar com permisão para “somente leitura”. Se possível, dê permissão de escrita apenas ao arquivo de log, e caso haja algum plugin para upload de arquivos, dê permissão apenas à pasta necessária. O owner dos arquivos deve ser diferente 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/canaltech, as permissões abaixo são suficientes:

# chown -R usuario:apache /var/www/html/canaltech
# chmod 640 /var/www/html/canaltech/*
# chmod 770 /var/www/html/canaltech/logs/*

5. Limite o acesso à área de administração (back-end)

Adicionar uma camada de segurança para acesso ao back-end é sempre recomendado. Isso pode ser feito limitando os IPs que possuem acesso a essa área. Caso isso não seja possível, a autenticação com um arquivo “.htaccess” já aumenta consideravelmente a segurança.

Back-end Joomla

Digamos que você tenha uma área administrativa dentro da seguinte hierarquia: meusite.com.br/joomla/admin, onde system e admin são diretórios internos e apenas pessoas autorizadas podem acessar. É bem provável – e aconselhável – que você pretenda listar os IPs que estarão autorizados a acessá-los. Antes de tudo, para isso é necessário a utilização de um IP fixo para garantir que você estará fazendo o bloqueio devidamente. De posse de um IP fixo (usando para o exemplo abaixo o IP fictício 200.98.145.153), insira o seguinte conteúdo no arquivo .htaccess nativo da instalação do Joomla:

order deny, allow
deny from all
allow from 200.98.145.153

6. Novamente as permissões. Forneça somente o necessário ao usuário do banco de dados

Na maioria dos casos, o usuário mysql usado durante a instalação do Joomla não é alterado. Isso porque muitas vezes é instalado através de softwares de terceiros que automatizam todo esse processo para os usuários mais leigos. Logo, muitos privilégios desnecessários acabam sendo atribuídos, 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 invasor pode acabar se beneficiando desse privilégio para salvar um arquivo malicioso no servidor.

Permissões de usuário do banco de dados

Imagem ilustrativa

Em uma situação ideal, apenas as permissões “SELECT”, “INSERT” e “UPDATE” são mais que suficientes 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' ;

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' ;

Não esqueça que o “owner” do banco NÃO deve ser o mesmo usuário utilizado pelo Joomla.

7. Habilite as opções "Adicionar sufixo de URL” e “Utilizar mod_rewrite” nas "Configurações globais"

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. Perceba que o invasor pode acabar conseguindo “driblar” essa opção caso descubra o padrão de reescrita da URL e enviando os parâmetros maliciosos. Acontece que os invasores procuram por facilidades na internet, e como isso existe de sobra, é bem provável que acabem desistindo de algum ataque contra o seu site e partindo para algum outro alvo mais fácil.

Configurações globais Joomla

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://www.meusite.com.br/index.php/artigo

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

http://www.meusite.com.br/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://www.meusite.com.br/artigo.html

É importante frisar que, para que essas opções funcionem, o arquivo .htaccess fornecido na instalação deve estar em uso, como vimos na dica 3.

8. Tome muito cuidado com os plugins

Extensões Joomla

É grande e bastante crescente o número de plugins e templates free com códigos maliciosos. Para se proteger contra esse tipo de ameaça, nada melhor que fazer uma breve pesquisa sobre problemas de vulnerabilidade já conhecidos. Vale muito mais a pena gastar uns dez minutos com esse tipo de cautela do que colocar em risco um projeto inteiro.

9. Desabilite algumas funções vulneráveis do PHP

Algumas funções do PHP acabam sendo 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

Certifique-se de que essas funções estão ativas. Para ter acesso às configurações do PHP no servidor, basta criar um arquivo .php com o seguinte conteúdo:

phpinfo();
?>

Supondo que você subiu o arquivo com o nome de info.php, então acesse www.meusite.com.br/info.php e faça as verificações.

10. Configure as URLs amigáveis nas configurações globais

Diversos ataques a sites Joomla são feitos a partir de uma pesquisa no Google por uma determinada vulnerabilidade, ou seja, o atacante conhece a vulnerabilidade "X" de um plugin e descobriu que a URL para explorá-la é "/com_plugin?nomedapagina.php?id=123&x=456", ele irá realizar a pesquisa por essa URL. Usando este padrão de URL é bem provável que seu site seja localizado. Utilizar URL amigável faz com que você "oculte" sua vulnerabilidade, caso ela exista. Verifique também o arquivo robots.txt do seu site para certificar-se de que somente as páginas autorizadas estão sendo indexadas pelo motor de buscas do Google.

As informações para esse artigo foram consultadas no site oficial da comunidade.