Segurança em Joomla!

Acabamos com o mito da falta de segurança de Joomla!, ao mesmo tempo que oferecemos diversas técnicas e extensões que ajudam a incrementar a segurança no célebre CMS.

Por Miguel Angel Alvarez - Tradução de Celeste Veiga


Publicado em: 14/2/13
Valorize este artigo:
Este artigo está dedicado à segurança no CMS Joomla!, oferecendo alguns dados interessantes e, sobretudo, explicando quais são as tarefas que você pode realizar para incrementar a segurança do sistema.

Este texto surge como apêndice do programa #joomlaIO, emitido em Desarrolloweb.com, no qual por algo mais de uma hora se debateu o tema da segurança e trazendo diversas técnicas e ferramentas que incrementarão a confiabilidade e segurança dos web sites baseados neste CMS. A autoria deste artigo é comunitária, pertence a toda a equipe de #joomlaIO, representada por Javier Mendoza @cyxmedia, Manolo Aguado @bolemc e Isidro Baquero @isidrobaq, que estiveram acompanhados por Guillermo Bravo @jwillin e Miguel Ángel Álvarez @midesweb.

Muito se há falado que Joomla! é inseguro, e o certo é que muito poucas vezes foram trazidos dados que possam confirmar essas hipóteses. A falta de informação muitas vezes leva a que assumamos como certas algumas opiniões de profissionais que não se deram ao trabalho de buscar a raiz dos problemas. Se você quiser demonstrar isso a você mesmo, neste artigo se especificarão ao final diversas ações que você poderá implementar para que Joomla! possa ser utilizado com toda a segurança.
 

Por que não se deve dizer que Joomla não é seguro

Partamos do fato de que a insegurança é uma constante de todo o sistema informático. Nunca podemos dizer que um software é completamente seguro, do mesmo modo que ninguém pode assegurar que esteja completamente livre de erros. A insegurança existe, em Joomla!, igual que em qualquer outro CMS ou peça de software em geral. Existem na Internet milhares de sites baseados em Joomla! que são inseguros mas realmente se pode generalizar e dizer que por isso Joomla! é inseguro?

A segurança ou a insegurança é realmente uma responsabilidade dos desenvolvedores, que muitas vezes não fazemos corretamente nosso trabalho. Porém, não me refiro à comunidade que realiza o próprio CMS, mas sim aos que o utilizamos para construir sites baseados nele. Os desenvolvedores muitas vezes deixamos rastro de nosso trabalho e com isso às vezes ficam peças de software que podem comprometer um sistema. O exemplo mais típico, que ocorre em Joomla igual que em outros CMS, é o uso de determinadas extensões que têm um problema de segurança ou o uso de versões antigas de Joomla que não estão atualizadas e que contêm buracos de segurança.

Porém, há casos ainda mais básicos. Um sistema pode ser tremendamente seguro e, no entanto, escolher uma chave curta ou previsível que o pode deixar vulnerável. Embora, cuidado, não devemos só escolher chaves complexas, mas realizar outras otimizações como mudar os nomes das tabelas, ter cuidado com as permissões dos arquivos ou diretórios, ofuscar as versões do CMS ou os nomes dos arquivos que contêm código. Todas essas recomendações serão revisadas em seguida.

Às vezes se critica Joomla dizendo que por ser software livre, qualquer um pode saber os erros de segurança que tem, mas isso poderia ser uma crítica contra todas as ferramentas de código aberto e sabemos que não é assim. Existe uma numerosa comunidade detrás que apenas aparece um buraco de segurança publica novas versões do software para solucioná-lo. Novamente somos os desenvolvedores os que devemos, conscientemente, atualizar o CMS sempre que aparecem novas versões estáveis seguras.

Durante o evento de segurança em Joomla! #joomlaIO também se mencionou uma estatística interessante. Só 5% dos erros de segurança de Joomla! se deram no "core", ou seja, na arquitetura básica do CMS. Isto quer dizer que 95% dos buracos de segurança detectados em Joomla! pertencem a outras peças de software externas, com complementos como extensões ou plugins, temas, etc. Neste sentido se deu ênfase em assinalar que habitualmente os desenvolvedores instalamos temas "piratas" que realmente têm cavalos de troia com scripts que roubam senhas ou outros dados sensíveis. Por isso, há que ter sempre em conta baixar complementos ou layouts de fontes seguras e desconfiar quando um web site oferece gratuitamente temas gratuitos que são pagos em outros sites.

Nota: não é nossa intenção fazer comparações sobre a segurança com outros CMS populares, sejam ou não de código aberto. Só dizer que 5% de buracos no core de Joomla! contrastam com 20% de buracos encontrados no core de outro popular CMS.

Checklist de segurança básica em Joomla!

A continuação, encontraremos uma serie de itens fundamentais que temos que observar à hora de implementar Joomla em um ambiente seguro. É apenas um listado que servirá de muita utilidade, no entanto, se desejar obter maiores explicações, recordamos que está disponível o hangout onde a equipe de #joomlaIO ofereceu muitos outros detalhes, conselhos e guias para implementação destes itens de segurança.


  Primeiros passos / Segurança no core de Joomla!:

  • Baixar de joomla.org ou sites de absoluta confiança
  • Comprovar que estamos instalando a última versão estável de Joomla!
  • Comprovar que não estamos utilizando o nome de superusuário por padrão (admin)
  • Não estabelecer a senha de FTP (estabelecê-la constituiria uma violação da segurança)
  • Ativar o arquivo .htaccess em servidores Linux (para tanto devemos renomear o arquivo htacess.txt a .htaccess). Podemos ampliar a segurança com docs.joomla.org Htaccess_examples_(security)
  • Habilitar as URLs amigáveis para os motores de busca (SEF)
  • Comprovar que a duração da sessão não excede os 15 minutos
  • Eliminar layouts que não sejam necessárias
  • Comprovar que as permissões de diretórios estão em 755 e as permissões de arquivos em 644
  • Utilizar um usuário de base de dados para a configuração de Joomla que não tenha acesso externo à mesma
Primeiros passos / Segurança durante a instalação e manutenção das extensões Joomla!:
  • Realizar um backup da estrutura FTP e da base de dados antes de instalar qualquer extensão. Utilizar Akeeba Backup / Admin Tools
  • Baixar extensões só de sites de confiança extensions.joomla.org
  • Comprovar que as extensões que instalamos são a última versão estável disponível
  • Eliminar as extensões que não vão ser utilizadas e não façam parte do CORE (convém revisar manualmente se os diretórios e arquivos associados à extensão foram apagados corretamente)
Configuração do servidor / Orientações de PHP:
  • Comprovar que register_globals está desativada
  • Comprovar que allow_url_fopen está desativada
  • Comprovar que allow_url_include está desativada
  • Comprovar que open_basedir está ativada e as rotas associadas (esta orientação limita os arquivos que se podem abrir por PHP á árvore de diretórios especificado)
  • Comprovar que estão desativadas show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open
  • Comprovar que safe_mode está desativado
Configuração do servidor / Estrutura de arquivos:
  • Comprovar que as pastas do site estão em 755
  • Comprovar que os arquivos do site estão em 644
  • Comprovar que não existem arquivos na pasta temporária /tmp
Configuração do servidor / Proteção de arquivos e pastas críticas:
Para obter uma melhor proteçãodo website em Joomla, é conveniente tirar da estrutura httpdocs o arquivo configuration.php , para isso devemos modificar os seguintes arquivos:

Motivo: Retirar da estrutura httpdocs o arquivo configuration.php e definir a rota na constante para que o arquivo seja acessível por Joomla!

Rota dos arquivos a modificar: /includes/defines.php y /administrator/includes/defines.php Linha de código a modificar: define('JPATH_CONFIGURATION', JPATH_ROOT);
 

Extensões recomendadas para melhorar a segurança de Joomla

Há várias extensões que nos permitem acrescentar uma camada extra de proteção em Joomla! muitas delas são bastante conhecidas, outras nem tanto. Nomeamos algumas delas com uma pequena descrição.

RSFirewall
RSFirewall é uma extensão que todos deveriam usar. Corretamente configurada nos alertará das tentativas de intrusão no site e nos permitirá realizar ações como a denegação de IPs, ou definir as localizações a partir da que se poderá acessar o backend, entre muitas outras funções.

Admin Tools
Uma navalha suiça para a administração do website em Joomla. Verificar e corrigir as permissões de pastas e diretórios, proteger o acesso ao painel de administração com uma senha adicional, mudar o prefixo da base de dados ou realizar sua manutenção são algumas das excelentes características desta extensão. Ademais é do criador de Akeeba Backup, sem dúvida uma grande garantia da limpeza de seu código e de suas possibilidades.

Akeeba Backup
Um website ao que não associamos nenhuma política de backups é como um barco à deriva. É questão de tempo que um buraco nos faça passar um mau bocado. Akeeba é uma dessas extensões que vale a pena pagar sem sombra de dúvidas. A versão gratuita já nos permite a realização de backups, mas é na versão Pro onde encontramos todo o potencial da extensão.

Aqui, Akeeba nos permitirá lançar os backups diretamente a diversos serviços de armazenamento na nuvem, desvinculando a copia do servidor onde temos o website. Acho que seu criador (Nicholas Dionysopoulos) no manual de Akeeba nos indica em tom “jocoso” que uma boa copia de segurança é a que se realiza em uma placa tectônica diferente ( no caso de terremotos).
Algo altamente recomendável é instalar ou solicitar que nos instalem no servidor a extensão MyCript.php, já que é utilizada por akeeba para encriptar os pacotes de copia de segurança proporcionando maior segurança.

Encrypt configuration
A menos que utilizemos um certificado de segurança SSL, um usuário que se registra em Joomla enviará sua senha em texto plano através da rede. Um usuário mal-intencionado poderia aproveitar esta vulnerabilidade e obter acesso ao back-end.
Este plugin é uma alternativa a SSL. Se utiliza RSA para cifrar as senhas ou qualquer outra informação que você deseje nos componentes.
Há que ter a extensão bcmath. Funciona com nome de sinal, Login JTP Horizontal, PWC sessão, inicio de sessão em linha e módulos VTJ inicio de sessão. Para outras extensões de Joomla, como Alpha Registro, Community Builder, Core Design Módulo sessão, Yoo sessão, YJ Módulo Login Pop, você pode encontrar plugins em www.ratmilwebsolutions.com/downloads/encryption-plugins.html. Não há necessidade de configurar. Você só tem que instalar os plugins necessários.
 

Conclusão

Acreditemos que depois destas notas se terãoesclarecido algumas dúvidas e mitos sobre a segurança em Joomla!. Talvez os desenvolvedores que criticam o popular CMS não o façam com má intenção, mas sim por desinformação.

Aqueles profissionais que implementam Joomla são os maiores responsáveis por criar sistemas seguros, mediante a meticulosa revisão de diversas recomendações comentadas anteriormente e do uso de uma ou outra extensão de enorme utilidade. Esperamos que este documento tenha resultado de utilidade e nos encontramos dentro de pouco para novas emissões de #joomlaIO.






Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato