Segurança para WordPress: Um guia com dicas para você aplicar agora!

Escrito por

Publicado em: 10 de setembro de 2014 - Atualizado em: 28 de junho de 2017

Segurança para WordPress: Por que eu devo me preocupar?

O WordPress é o CMS mais utilizado atualmente dentre os sites que utilizam algum gestor de conteúdo. Isso não assusta, pois além de ser estável e completo, o WordPress é mantido por uma enorme comunidade, conta com atualizações constantes e possui uma extensa gama de plugins para as mais diversas funcionalidades. Esse crescimento de uso do WordPress atrai o olhar de pessoas maliciosas e estar atento não custa nada. Por isso, segurança para WordPress é algo que não pode faltar no seu checklist!

Esse famoso CMS adota  diretrizes interessantes, mas sempre há o que fazer após a instalação para melhorar ainda mais a segurança do seu WordPress. Citaremos alguns macetes que ajudarão a “hardenizar” a sua aplicação baseada em WordPress.

Primeiro, baixe o WordPress apenas do site oficial, e mantenha-o sempre atualizado (atualmente o WordPress se encontra na versão 4.8). Existe toda uma comunidade por trás desse projeto empenhada em fazê-lo ainda mais seguro, confiável e estável.

Utilize uma senha Forte

A senha do WordPress deve ser “forte”, ou seja, nada de nomes, datas, ou coisas que fazem muito sentido. Abuse do uso de caracteres especiais, alterne entre letras maiúsculas e minúsculas, e utilize números use no mínimo 10 caracteres. Adotando essa prática você começará a gerar senhas praticamente inquebráveis. Vale lembrar que esse é o princípio básico para começar a pensar em segurança para o seu WordPress.

Banco de dados

Durante a instalação do WordPress ele irá criar o banco de dados. Altere o prefixo padrão (wp_) das tabelas, isso é válido, pois com nomes padrão um sql injection pode facilmente obter dados do seu banco, e isso não seria nada bom.
Caso você utilize um único banco para diversas instalações WordPress a adoção de prefixos diferentes também ajuda a diferenciar as tabelas de diferentes projetos.

Remova os arquivos desnecessários

Uma boa prática de segurança do WordPress é após a sua instalação remover arquivos desnecessários como o readme.html, wp-configsample.php e license.txt que se localizam na raiz da instalação e o install.php que está no diretório wp-admin. Esses arquivos podem ser um porta para ataques, por isso os exclua-os após terminar a sua instalação.

Proteja os arquivos mais relevantes do WordPress com o .htaccess, fazendo isso você tem menos possibilidade de ser invadido por ataque direto aos arquivos de configuração do WordPress.

Altere o link de login para o painel do WordPress

Além de dificultar a vida dos mal intencionados, alterar o link de login ajuda seu cliente a se lembrar com mais facilidades de como entrar no painel do WordPress. para isso abra o arquivo .htaccess e insira logo no inicio a seguinte regra:

RewriteRule ^master$ http://seudominio.com.br/wp-login.php [NC,L]

Na regra acima estamos alterando o link http://seudominio.com.br/wp-login.php para http://seudominio.com.br/master.

Pra ficar claro, entenda essa regra:

^master$ – Representa o nome que você deseja para o link de login.
http://seudominio.com.br/wp-login.php – Representa o link que deseja alterar.
[NC, L] – O NC significa que a palavra master não precisará ser escrita exatamente em caixa baixa, ou seja, não será case sensitive, então “MasTER” ou qualquer variação entre minúsculas e maiúsculas desta palavra serão iguais a “master”. Já o L significa que é o fim desta regra e qualquer outra regra que vier após esta não será interpretada como parte dela.

O link de login do WordPress não precisa ser indexado pelas páginas de busca, para isso abra o arquivo robots.txt que se localiza na raiz de seu servidor ou crie ele na raiz do seu site e insira a linha:

Disalow: /master

Aproveite que está no arquivo robots.txt e remova a indexação para outros links. Basta inserir as seguintes linhas:

User-agent: *
Options -Indexes
Disallow: /feed/
Disallow: /trackback/
Disallow: /wp-admin/
Disallow: /wp-content/
Disallow: /wp-includes/
Disallow: /xmlrpc.php
Disallow: /wp*

Impeça a exibição de erros desnecessários

O WordPress apresenta erros de login quando você tenta acessar com usuários inexistentes ou quando você erra seu usuário e senha. Isso pode ser prejudicial para o seu site, pois pode mostrar os erros a pessoas mal intencionadas, dando a elas a oportunidade de descobrir algumas informações como o nome de um usuário válido, por exemplo.

Uma solução muito simples para isso é colocar o código abaixo no functions.php do seu tema:

add_filter('login_errors',create_function('$a', "return null;"));

Esse código irá retornar uma mensagem nula para os erros de login.

Proteja seu site de Scripts Injection  🙂

Convêm negar acesso aos arquivos mais relevantes

O wp-config é um dos arquivos mais importantes do WordPress, pois carrega em si configurações do banco de dados da instalação do WordPress. Para negar acesso a ele insira as linhas abaixo no seu .htaccess fora dos comentários:

# insira as novas regras aqui para não correr o risco de sobrescrita pelo WordPress
# BEGIN WordPress
# Aqui as presentes são geradas pelo WordPress e portanto podem ser sobrescritas
# END WordPress

Segue o código:

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

Force o uso de SSL

Digamos que você já possua um certificado SSL então utilize a dica abaixo para utilizá-lo no seu site WordPress, caso ainda não tenha, siga o Blog Assoweb, em breve falaremos em como adquirir um certificado SSL  😉

Se seu site lida com dados que se interceptados podem lhe causar muita dor de cabeça, você pode definitivamente usar SSL. Que nada mais é do que um protocolo de criptografia que protege as comunicações entre ativos de rede.
Esse recurso pode ser utilizado no WordPress dependendo do seu serviço de hospedagem, verifique isto. Caso seu serviço de hospedagem suporte SSL basta abrir o wp-config.php, localizado na raiz da instalação do WordPress e inserir a linha abaixo:

define('FORCE_SSL_ADMIN', true);

Proteja o seu site de SQL Injections

Geralmente os sql injections atacam os métodos GET, POST e variáveis GLOBAL e _REQUEST do PHP que carregam algum valor relevante. Para se prevenir desses ataques insira o código abaixo no seu .htaccess

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
# Bloqueia todos os scripts que tentam modificar uma variável PHP GLOBAL:
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
# Bloqueia todos os scripts que tentam modificar uma variável _REQUEST:
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
# Se as requisições forem maliciosas enviamos tudo para a página inicial com um erro 403 Forbidden:
RewriteRule ^(.*)$ index.php [F,L]

Esse código irá verificar o conteúdo das requisições em busca de <script> que possam realizar alguma modificação nos tipos de variáveis citadas acima, e caso haja algum, a requisição será bloqueada e será exibido um erro 403 que se refere a negar acesso.

Plugins para ajudar na segurança do seu WordPress.

Itheme Security

Antes conhecido como Better WP Security oferece mais de 30 + maneiras de proteger seu site WordPress. O Itheme Security ajuda a corrigir falhas comuns para ataques automatizados e fortalece as credenciais de usuário. Você pode baixá-lo direto do painel do WordPress ou diretamente pelo banco de plugins do WordPress aqui: Itheme Security.

BackWPup

Bom, mesmo aderindo às configurações de segurança é interessante e altamente recomendado realizar backups periodicamente.
E aqui vai uma dica para otimizar esse backup, utilize o BackWPup, um ótimo plugin do WordPress que realiza backups completos do seu projeto, incluindo arquivos e banco de dados. Esse plugin possui integração com Dropbox, o que facilita o backup de sites maiores.
Baixe-o direto do painel do WordPress ou acessando esse link: BackWPup. E não deixe de ler o nosso post falando sobre esse ótimo plugin.

Olá

Desenvolvedor web interessado em conhecimento, música e arte. Amante de Linux desde pequeno, focado em segurança da informação e novas tecnologias. Esse sou eu! \o/