domingo, 10 de março de 2013

Checklist de segurança Joomla!

Algumas dicas de segurança mais ou menos avulsas para Joomla.

A. Geral

  1. Aplicam-se as regras de segurança genéricas para o Apache, PHP e MySQL.

B. Instalação

  1. Não usar o prefixo de tabela MySQL "jos_".
  2. Definir as permissões do configuration.php para 444 (ou pelo menos 644).
  3. Em geral, os ficheiro PHP precisam de permissões 644 (preferencialmente 444) e as diretorias 755 (ou preferencialmente 555).
  4. De forma geral é boa ideia mover as diretorias /tmp, /log e todas as diretorias que precisem permissão de escrita (caches, imagens, uploads, etc) para FORA da diretoria pública (public_html), retirando-lhes portanto a possibilidade de acesso através de HTTP. No entanto isto pode causar problemas com a diretiva open_basedir do PHP e com algumas extensões.
  5. Não permitir o upload de scripts
  6. Renomear o ficheiro htaccess.txt para .htaccess e ligar o RewriteEngine.
  7. A adição destas linhas ao .htaccess bloqueia alguns exploits mais comuns:

########## Begin - Rewrite rules to block out some common exploits
#
# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
# Block out any script that includes a < script> tag in URL
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2}) [OR]
# Block out any script that tries to set CONFIG_EXT (com_extcal2 issue)
RewriteCond %{QUERY_STRING} CONFIG_EXT([|%20|%5B).*= [NC,OR]
# Block out any script that tries to set sbp or sb_authorname via URL (simpleboard)
RewriteCond %{QUERY_STRING} sbp(=|%20|%3D) [OR]
RewriteCond %{QUERY_STRING} sb_authorname(=|%20|%3D)
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
#
########## End - Rewrite rules to block out some common exploits

C. Utilizadores e passwords

  1. Usar passwords não triviais.
  2. Criar uma conta de administrador com um username não trivial (ou seja, diferente de admin, administrator, root, etc). Promover esse utilizador a super-user e apagar a conta de admin. Além de ser um username conhecido, a conta de admin tem sempre o id 42 (homenagem ao Hitchhicker's Guide to The Galaxy), por isso é uma vulnerabilidade potencial (para Joomla anterior a 2.5.5).

D. Extensões

  1. Não instalar extensões desnecessárias.
  2. A extensão sh404SEF adiciona mais um nível de segurança e capacidades SEF (Search Engine Friendly). Esta extensão é vulnerável nas versões < 3.7.0.
  3. A extensão Admin Tools Core permite aplicar num único local várias das proteções aqui referidas.
  4. A extensão Akeeba Backup Core permite fazer backups completos de forma simples.
  5. Há outras extensões que melhoram a segurança (mas ver regra D.1).

E. Não fornecer informação gratuita

  1. Não publicitar o nome e versão do Joomla. Remover a meta tag "Generator".
  2. Não publicitar o nome e versão das extensões.

F. Ações periódicas

  1. Fazer backups regulares (por exemplo com o Akeeba Backup)
  2. Fazer regularmente uma "inspeção visual" e eliminar ficheiros suspeitos/desnecessários.
  3. Fazer testes de vulnerabilidades (com o nikto, joomscan, etc) e corrigir as vulnerabilidades detetadas.
  4. Manter-se atualizado sobre as novas vulnerabilidades descobertas consultando sites especializados (http://secunia.com/search/?search=joomla, http://www.frsirt.com/english, http://www.milw0rm.com/, por exemplo)

G. Atualizar

  1. Manter o Apache, PHP e MySQL atualizados.
  2. Manter o Joomla atualizado. A partir da versão 1.6 há a opção de o Joomla se autoatualizar (mas é necessário verificar a disponibilidade das extensões). Não usar Joomla 1.5 ou anterior.
  3. Manter as extensões atualizadas. Mesmo as extensões mais conhecidas e populares têm problemas de segurança.

Referências


1 comentário:

  1. Ótimas dicas, só faltou uma hospedagem com um sistema com detecção de invasão como a www.elevahost.com.br

    ResponderEliminar