32 dicas de segurança para WordPress – Rogério da Costa
32 dicas de segurança para WordPress
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 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
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.
11 – Desabilite o WP_DEBUG.
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:
<FilesMatch ".(jpg|gif|png|js|css)$" >
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:
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:
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.
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:
Proteja também o arquivo .htaccess
<Files ~ "^.(htaccess)$">
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.
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.
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.
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 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.
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:
É possível realizar a alteração de permisões de forma recursiva em um servidor (ou hospedagem) Linux com os comandos a seguir:
find /caminho/para/a/pasta/do/wordpress/ -type d -exec chmod 755 {} ;
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.
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.
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.
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.
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
Tem alguma outra dica ou recomendação? Poste nos comentários.
By Rogério da Costa|2017-03-16T19:14:06-03:00terça-feira, 5 novembro de 2013 21:32|Segurança|1 Comment
Manoel Braz Maciel 31 de maio de 2014 at 23:26	- Reply
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.