32 dicas de segurança para WordPress

 O que é segurança?

Ter segurança não significa possuir sistemas completamente seguros, até porque sistemas assim seriam impossíveis de encontrar ou manter. Um software, sistema ou servidor seguro deve prover o trio CID, confidencialidade (ou privacidade), integridade e disponibilidade dos recursos que estão sob o controle do seu administrador.

A segurança de um sistema web como WordPress depende também das características de segurança do provedor de hospedagem.

Algumas qualidades de um provedor de hospedagem confiável estão:

  •     Ele deve deixar claras as suas preocupações e quais processos e funcionalidades de segurança oferece em seu serviço de hospedagem.
  •     Deve oferecer as versões mais recentes e estáveis de todos os softwares no servidor.
  •     Deve oferecer métodos confiáveis para backup e recuperação.
  •     Uma boa abordagem de segurança deve priorizar o software e os dados que precisam ser assegurados.

Em se tratanto de WordPress uma pergunta é recorrente, “Quais os plugins devo usar para ter segurança de meu site?”. A utilização de plugins, como veremos adiante é uma opção válida, mas não é a melhor abordagem se esta for a única pergunta a ser feita ou a única ação que será tomada. Deixar a segurança de seu site ou blog a cargo de um plugin ou nas mãos de terceiros não é a ação mais correta.

Em resumo, segurança significa minimizar os riscos. A implementação de segurança trata-se de um conjunto de ações, ferramentas e processos, todos voltados para reduzir o risco de invasões e comprometimento de informações.

A seguir irei listar um conjunto de 32 dicas (Isso mesmo 32) para aumentar a segurança de um site WordPress.

01 – Esteja sempre atualizado

Esta primeira dica vale para qualquer software instalado em qualquer plataforma ou dispositivo. Atualizações mantém o software funcionando corretamente e realizam diversas correções de vulnerabilidades. No caso do WordPress não é diferente. As atualizações são rápidas, simples e, a partir da versão 3.7 são automáticas. Fique calmo, as atualizações automáticas são somente as de segurança.

Atualizações de plugins também são igualmente importantes pois evitam que brechas permaneçam abertas.

Deixar uma instalação do WP desatualizada é deixar se disponível para ataques.

A versão mais recente do WordPress está sempre disponível no site principal em http://wordpress.org e a versão em Português Brasileiro em http://br.wordpress.org. Nunca baixe ou instale o WordPress de qualquer outro endereço que não o oficial.

02 – Não mantenha instalações de testes instaladas

Fazer instalações para testar o WordPress é comum, mas deixá-la lá por dias, meses ou até anos também. De forma alguma faça isso pois todos os sites daquele servidor estarão vulneráveis a infecções e ataques por causa deste site de testes que, provavelmente, deve ter uma versão antiga e desatualizada do WP, evento conhecido como cross-contamination.

Aproveitando esta dica, segmente todos seus sites em locais isolados, dependendo da destinação como desenvolvimento, testes e produção.

03 – Não divulgue a versão do seu WordPress

Por padrão os temas do WP utilizam uma metatag no código que divulga, para fins de estatística, a versão que está sendo utilizada. Em termos práticos esta informação para um usuário ou para o administrador do site é inútil e deixar estas informações públicas não é aconselhável. Em varreduras feitas para localizar sites vulneráveis esta informação de versão é utilizada para definir a forma de ataque e explorar brechas de segurança.

Esta informação fica localizadas no arquivo header.php de seu tema. Para desabilitar, remova a linha a seguir:

<meta name=”generator” content=”WordPress <?php bloginfo(‘version’); ?>” />

Outra maneira de remover esta informação é adicionar o código abaixo ao seu arquivos functions.php:

<?php remove_action(‘wp_head’, ‘wp_generator’); ?>

Esta linha força a remoção da informação de forma dinâmica.

04 – Privilégios mínimos

Dê apenas as permissões de acesso necessárias para o pessoal realizar o seu trabalho e nada mais. Remover os acessos ao fim do trabalho também pode ser uma boa opção. Essa prática vale para o WordPress, FTP, bancos de dados e qualquer outro acesso. Editores dever ter acesso apenas de edição de conteúdo, Leitores apenas de leitura e assim sucessivamente. Perfil de administrador deve ser dado apenas para aqueles que realizam tarefas administrativas como instalação de temas, plugins ou atualização do software.

05 – Limitar tentativas de login

Tentativas de autenticação utilizando força bruta são muito comuns. A autenticação no WordPress pode ser feita utilizando diversos plugins como o Google Authenticator Plugin que realiza autenticação de dois fatores ou utilizando o plugin WP Login Lockdown que dificulta ataques de força bruta bloqueando o acesso por IP após determinado número de erros de login.

06 – Remoção dos arquivos readme.html e install.php

Estes dois arquivos do diretório do WordPress são desnecessários após a instalação mas contém a versão do WordPress você está utilizando que permite que um hacker explore falhas no seu site. Ele pode ser excluído sem problemas mas será sempre restaurado após uma atualização.

Já o script de instalação install.php é usado durante o processo de instalação e é responsável pela criação de tabelas no banco além de real ziar as configurações mais básicas. A exclusão deste arquivo também é útil e não causa nenhum problema.

07 – Remova os plugins e temas que não estão sendo utilizados

Mantenha somente plugins e temas atualizados e que estejam em uso. Manter plugins e temas mesmo desabilitados podem permitir ataques por hackers que conheçam suas vulnerabilidades. A regra então é: Se não está utilizando remova.

08 – Não use o login padrão do Admin do WordPress

Ao realizar a instalação de um novo site ou blog por padrão é criado um usuário chamado admin. Este usuário tem poderes de administrador no blog e é o primeiro login a ser utilizado em uma tentativa de acesso não autorizado. Removê-lo ou renomeá-lo já vai minimamente fazer com que o atacante tenha mais trabalho para tentar descobrir outro nome de usuário.

10 – Bloqueie a listagem de arquivos em suas pastas

Os servidores web tem um recurso que, se habilitado, permitem que uma pasta criada, se não tiver um arquivo index, exiba a listagem dos arquivos nela contidos durante o acesso pelo navegador. Esta listagem permite que sejam expostos os seus arquivos para todo mundo e estas informações podem ser utilizadas em um ataque. coletar dados para um ataque.

Para impedir que os arquivos de suas pastas sejam listados, crie ou modifique o arquivo .htaccess (se seu site rodar em Linux) e inclua a seguinte linha:

Options All -Indexes

O arquivo deve estar na pasta principal (“/”) da instalação do WordPress juntamente com o arquivo wp-config.php.

 

11 – Desabilite o WP_DEBUG.

A variável global WP_DEBUG permite ao desenvolvedor, depurar a aplicação. Deixar estas informações visíveis também pode fornecer informações valiosas aos atacantes. Para desabilitar a variável WP_DEBUG, edite o arquivo wp-config.php e altere de true para false.

define(‘WP_DEBUG’, false);

12 – Restrinja o acesso à sua pasta wp-content

A pasta wp-content contém seus arquivos de temas e plugins de sua instalação. O acesso a essa pasta não deve ser direto, com exceção às imagens, javascript e css que possam ser utilizados pelo seu tema escolhido.

Para corrigir isso edite também um arquivo .htaccess (não o principal, um outro, dentro da pasta wp-content), com a seguinte informação:

Order Allow,Deny
Deny from all
<FilesMatch “.(jpg|gif|png|js|css)$” >
Allow from all
</FilesMatch>

 

13 – Configuração correta do wp-config.php

Após a instalação do WordPress, é necessário reconfigurar o arquivo wp-config.php com algumas chaves de segurança como no exemplo a seguir:

define(‘AUTH_KEY’, ‘FInSxQTD1:||dma-aJ5NBP|5:/3r/W,q]tkGH^hWP_t’);
define(‘SECURE_AUTH_KEY’, ‘yq%dw<M#P3%XS%)x[Mo;MwvDtx?tHYNq,h0i.#4AOaA’);
define(‘LOGGED_IN_KEY’, ‘:FHqs$n@<62.y`AUw;vOD0P0P.z,B-UGq=Xj(/e&`-o’);
define(‘NONCE_KEY’, ‘.BB!BV?d.F46PS–4|-wphl13elc8>.|?PA$K5f@@Gs’);
define(‘AUTH_SALT’, ‘Xl4F-Y0p2ztbO<R/k(,3>1a%7A4uK=y_D7f!$]if s-‘);
define(‘SECURE_AUTH_SALT’, ‘^0c&@-kA?/W@?tu7=ccW]<AHg6j_ _e0k{#A1!ovH%1’);
define(‘LOGGED_IN_SALT’, ‘#r09|G>4%u0H|x>EJSbs9ip]gK)lor)H/lq:e7]a!kk’);
define(‘NONCE_SALT’, ‘W!grUQe2i]L|#p-wX;Ibct48v;TS3X,&C61<s,Dy</X’);

É uma boa prática alterar as chaves únicas de autenticação pois elas vem em branco por padrão. Estas chaves podem ser geradas automaticamente no link a seguir:

https://api.wordpress.org/secret-key/1.1/salt/

14 – Bloqueie a indexação de arquivos do WordPress

Uma outra boa prática é Impedir que mecanismos de busca façam indexação de pastas e arquivos do WordPress. Para isso, crie ou edite o arquivo robots.txt em sua pasta principal do site (“/”) e adicione a seguinte informação:

User-agent: *
Disallow: /wp-*

15 – Use SSH ou SFTP ao invés de FTP

FTP é muito famoso, muito utilizado e também muito inseguro. Utilizá-lo atualmente não é aconselhável principalmente pelo fato de não utilizar criptografia. Uma ótima alternativa é a utilização de SSH (utilizando o scp) ou SFTP (secure FTP) pois este protocolos criptografam a informação deixando a transferência de arquivos e a transmissão de senhas mais segura.

O software Filezilla é uma boa alternativa para a utilização de SFTP.

16 – Proteja o seu arquivo de configuração

O arquivo wp-config.php é um dos mais importantes da instalação e deve ser mantido em segurança pois contem a senha do banco de dados e sua secret key. Para aumentar a sua segurança edite o arquivo .htaccess (da pasta principal) e adicione a informação abaixo:

<FilesMatch ^wp-config.php$>
Deny from all
</FilesMatch>

ou

<files wp-config.php>
order allow,deny
deny from all
</files>

Proteja também o arquivo .htaccess

<Files ~ “^.(htaccess)$”>
deny from all
</Files>

17 – Plugins úteis para a segurança do WordPress

Vários plugins de segurança que facilitam a vida dos administradores de sites WordPress. Abaixo listo alguns que podem ser muito úteis.

  •     WP Security Scan – Realiza uma série de testes para avaliar a segurança de sua instalação do WordPress;
  •     WP Login Lockdown – Dificulta ataques de força bruta bloqueando o acesso por IP após determinado número de erros de login;
  •     WP DB Backup – Realiza cópias de segurança de seu banco de dados automaticamente;
  •     BlogSecurity’s WPIDS plugin – Instala o phpids – uma camada de segurança genérica para aplicações PHP;
  •     WordPress Firewall usa algumas regras pré-configuradas, criadas para o WordPress, além de uma whitelist para eliminar ataques sem muitas configurações;
  •     All In One WP Security & Firewall – Faz diveras configurações de segurança;
  •     Security WebsiteDefender – Faz o monitoramento do seu site para falhas de segurança e informa como corrigir essas falhas; Este plugin não é mais mantido;
  •     Sucuri WordPress Plugin – É um firewall que permite bloquear o tráfego vindo de endereços maliciosos;
  •     Better WP Security – Faz diversas checagens e recomenda configurações para melhoria de segurança;

 

18 – Usar ou não plugins?

Existem inúmeros plugins de segurança como vimos acima e alguns prometem resolver todos os problemas mas isso nem sempre é verdade. Alguns podem dar uma falsa sensação de segurança quando na verdade fazem muito pouco.

Outros, como alguns que listem acima, realmente realizam configurações e tomam ações proativas, enquanto outras opções somente fazem auditoria e rastreamento de problemas deixando as correções na mão do administrador de uma forma mais reativa.

Não instale plugins sem conhecer bem suas características e avalie se aquilo que ele faz não poderia ser feito manualmente, afinal um plugin de segurança também é um plugin e pode ter também alguma vulnerabilidade.

19 – Vulnerabilidades no seu computador

Sim, o computador que você usa para fazer as publicações no WP também pode ser um ponto vulnerável. Certifique-se de que ele está livre de spyware ou malwares diversos. Software antivírus atualizado é sempre recomendável e não acesse seu site de um lugar desconhecido ou de um computador ou rede vulnerável.

Mantenha sempre atualizados o seu sistema operacional e os softwares instalados, principalmente o seu navegador, para garantir sua proteção contra vulnerabilidades.

20 – Reportar Problemas de Segurança

Reportar erros ajuda o time de desenvolvimento do WP a corrigir falhas, faça sua parte. Se você encontrou uma falha de segurança no WordPress, você pode ajudar a soluciona-la reportando o que encontrou. Veja a página Security FAQ para mais informações sobre como proceder nesse caso.

Se você encontrou um bug, também reporte. Veja como fazer isso na página Submitting Bugs . Você pode ter descoberto uma vulnerabilidade, ou um bug que pode levar a uma falha.

21 – Vulnerabilidades no Servidor Web

Caso use um servidor próprio, físico ou virtual (pois no caso de uma hospedagem esta função é dela) verifique se ele está rodando versões estáveis e seguras, tanto do sistema operacional quanto dos software que compõe a infraestrutura como servidor web, php e banco de dados.

22 – Vulnerabilidades na Rede

Proteja os dos lados da rede, tanto o lado do servidor WordPress quanto o lado da rede do cliente. Mantenha atualizadas as regras do firewall do seu roteador em casa e também tome cuidado com quais redes você usa para trabalhar.

O seu provedor de hospedagem deve garantir que a rede dele não seja comprometida por ataques, e você deve fazer o mesmo. Falhas de segurança em redes podem permitir que senhas e outras informações sensíveis sejam interceptadas.

23 – Senhas

Essa é uma das dicas mais básicas e mais importantes. Use sempre senhas fortes.

Existem várias ferramentas de geração de senhas automáticas disponíveis na internet, uma delas é o Google Generator ( http://www.google.com/?q=password+generator ) que possibilita a geração de senhas seguras.

O WordPress também tem um medidor de segurança das senhas, que é exibido sempre que você está definindo ou alterando uma senha no WordPress. Use sempre esta ferramenta para garantir que está usando senhas adequadas.

Com relação às senhas evite:

  •     Usar variações do seu nome real, nome de usuário, nome da sua empresa ou nome do seu site.
  •     Usar apenas uma palavra do dicionário, em qualquer idioma.
  •     Usar senhas curtas
  •     Usar senhas que tenham somente letras ou somente números (uma combinação dos dois além de caracteres especiais é o ideal).
  •     Usar senha igual a de outro site (mesma senha do orkut, twtter, etc), pois se algum dia aquele site for hackeado, a sua senha estará em mãos maliciosas.
  •     Salvar a sua senha em lugares públicos, como lan houses.

Tente sempre

  •     Usar senhas seguras para o acesso ao banco de dados
  •     Usar senhas seguras para o admin do WordPress.

 

24 – Use frases (Passphrases) ao invés de Senhas

Ao invés de senhas curtas, use pass-phrases como a letra de uma música ou um trecho de um poema. Use frases diferentes para cada login. Outra abordagem interessante é não guardar nenhuma senha e utilizar uma ferramenta de gerenciamento de senhas. Existem inúmeras que fazem muito bem o trabalho de guardar de forma segura as senhas de acesso aos sites que você administra.

25 – Permissões de Arquivo

As permissões dos arquivos de uma instalação do WP são muito importantes e devem receber uma atenção especial. Quanto mais restritivas estas permissões, melhor. Em um servidor Linux as permissões de pastas e aquivos podem ser definidas de acordo com os exemplos abaixo:

  •     diretório raiz (700)
  •     .htaccess (644)
  •     wp-config.php (644)
  •     wp-admin (755)
  •     wp-content (755)
  •     plugins (755)
  •     themes (444) ou (555)
  •     upgrade (755)
  •     uploads (755)
  •     wp-includes (755)

É possível realizar a alteração de permisões de forma recursiva em um servidor (ou hospedagem) Linux com os comandos a seguir:

Para diretórios:

find /caminho/para/a/pasta/do/wordpress/ -type d -exec chmod 755 {} ;

Para arquivos:

find /caminho/para/a/pasta/do/wordpress/ -type f -exec chmod 644 {} ;

26 – Protejendo o wp-includes

Outra medida de proteção pode ser a alteração dos acessos a scripts que geralmente não devem ser acessados por nenhum usuário. Uma forma de fazer isso é usar mod_rewrite (do Apache) para bloquear os scripts no arquivo .htaccess.

# Block the include-only files.
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ – [F,L]
RewriteRule !^wp-includes/ – [S=3]
RewriteRule ^wp-includes/[^/]+.php$ – [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+.php – [F,L]
RewriteRule ^wp-includes/theme-compat/ – [F,L]
# BEGIN WordPress

Este procedimento não deve funcionar em instalações MultiSite, já que RewriteRule ^wp-includes/[^/]+.php$ – [F,L] evitaria que o arquivo ms-files.php gere imagens. Retire esta linha para permitir o funcionamento, lembrando que assim reduzirá um pouco a segurança.

27 – Protejendo ainda mais o wp-admin

Configurar uma senha de acesso ao /wp-admin/ adiciona uma camada extra de proteção ao redor do seu Painel de Administração, login e arquivos. Isso impede que um invasor ataque seus arquivos diretamente pois irá esbarrar neste controle de acesso.

Mas simplesmente bloquear o diretório /wp-admin/ pode desabilitar algumas funcionalidades do WordPress, como o handler de AJAX em /wp-admin/admin-ajax.php. Acesse http://codex.wordpress.org/pt-br:Blindando_o_WordPress#Recursos para mais documentação sobre a forma correta de proteger seu /wp-admin/ com uma senha.

Os ataques mais comuns a uma instalação WordPress geralmente caem em duas categorias:

Enviam pedidos HTTP para o servidor, especialmente programados para explorar a carga útil procurando vulnerabilidades específicas. Estes incluem plugins e softwares antigos ou desatualizados.

Tentam ganhar acesso ao seu site usando ataques de “força bruta”, para adivinhar a sua senha.

A melhor implementação dessa segunda camada de segurança por senha é exigir uma conexão criptografada HTTP SSL para a administração do site, de forma que toda a comunicação e dados sensíveis seja criptografada. Veja Administration Over SSL.

28 – Criptografia SSL

Utilizar SSL para acessar a administração do WordPress também pode ser uma boa opção pois adiciona criptografia à seção do usuário e protege o tráfego de dados. Veja mais no endereço http://codex.wordpress.org/Administration_Over_SSL .

29 – Plugins que necessitam de acesso para escrita

Caso tenha instalado um plugin exige permissão de escrita nos arquivos ou pastas do WordPress, pesquise o código para saber se ele é bem-intencionado, ou confira com algum usuário mais experiente em quem você confie. Se tiver dúvidas, pergunte nos Fóruns de Suporte  e/ou no CanalIRC .

 

30 – Monitorando

Prevenir é bom mas em alguns casos não é suficiente e seu site pode ser hackeado. Caso isso aconteça, ter registros de como e quando isso aconteceu é importante para que se possa tomar medidas corretivas e de recuperação e impedir que o evento ocorra novamente.

Monitorando seus logs
Em um servidor privado é possível monitorar os logs de acesso para descobrir tentativas de quebra de senhas e outros ataques. Para fazer isso uma boa ferramenta open source é o OSSEC que nada mais é do que um HIDS ( Sistema de detecção de intrusão para hosts) que registra, alerta e pode bloquear em tempo real os atacantes.

Monitorando alterações nos seus arquivos

Atacantes normalmente fazem modificações em arquivos de sistema e essas modificações são como rastros que podem ser detectados. Se estiver utilizando o OSSEC por exemplo, seus arquivos serão monitorados e alertas serão enviados para você caso um deles seja modificado.

31 – Mantenha sempre um backup atualizado do seu banco de dados

Caso aconteça o pior e seu site for invadido ou pichado, você ainda tem a possibilidade de restaurar tudo a partir de um backup. Para esta tarefa você pode realizar procedimentos manuais ou usar plugins como o WordPress Database Backup citado anteriormente.

A definição de uma agenda de backup é de suma importância. Defina o horário, dia da semana para realização do backup, e o mais importante o local. Backups efetivos são aqueles que são armazenados em um lugar diferente daquele onde o site está hospedado.

32 – Desabilite o registro de novos usuários

Ao fazer isso você impede que qualquer um tenha acesso ao painel de administração do site. Vá até a seção Geral e desmarque a opção Qualquer pessoa pode se registrar, ou simplesmente delete o arquivo wp-register.php

Este post, de maneira nenhuma tem o objetivo de ser um guia definitivo mas sim apenas um ponto de partida para aqueles que conhecem pouco de segurança no WordPress ou para complementar os conhecimentos daqueles que já aplicam técnicas para proteção de sites e blogs.

Tem alguma outra dica ou recomendação? Poste nos comentários.

By | 2017-03-16T19:14:06+00:00 terça-feira, 5 novembro de 2013 21:32|Segurança|1 Comentário

Um Comentário

  1. Manoel Braz Maciel 31 de maio de 2014 em 23:26- Responder

    Gostei do post e gostei do Blog. Vou voltar por aqui de vez em quando. E olhar com mais calma. Parece que tem muita coisa boa.

Deixar Um Comentário