Segurança no WordPress: 5 medidas matadoras pra proteger o login do seu blog

“O que devo fazer pra tornar meu blog seguro e protegido contra ataques no login?”. Essa é a pergunta que todo administrador de WordPress preocupado com segurança já se fez. Trabalhando durante anos como analista e pentester, tive a oportunidade  de explorar a insegurança de diversos blogs famosos, e a verdade é que cada simples ataque poderia ser evitado com alguma das recomendações abaixo. Portanto, se você implementar pelo menos duas delas, te garanto que você terá todos os motivos pra acreditar que seu WordPress se tornou mais seguro do que a maioria costuma estar.

Recomendar manter os usuários do blog com senhas fortes não conta; é óbvio, todo mundo sabe (apesar de nem todos fazerem). A idéia aqui é ir além, e apresentar outras medidas que são matadoras ao ponto de não sobrar o mínimo espaço para um atacante convencional explorar o login do seu blog. Caso precise de ajuda para implementá-las, grite nos comentários ou me mande um tweet.

Renomeie a conta administrativa padrão

Versões mais recentes do WordPress não mais criam automaticamente a conta admin. Finalmente! Agora ao instalar o CMS,  é pedido ao administrador que crie um nome de conta. Mas e os blogs instalados em versões anteriores? Bem, esses vão continuar tendo uma conta admin até que o administrador a renomeie, o que só pode ser feito diretamente pelo banco de dados:

UPDATE wp_users SET user_login = 'outronome' WHERE user_login = 'admin';

Esconda todos os usernames

Se por um lado o WordPress progrediu quando não mais criou por padrão o usuário admin, forçando assim a criação de um outro username, por outro ele continua vacilando ao expor todos os usernames para potenciais atacantes (ainda um problema na versão 3.9.2, a mais atual no momento que escrevo esse post). Ferramentas como WPScan listam todos os usernames do sistema através de força bruta em /?author=, que como o código da ferramenta mostra, busca por IDs válidos que redirecionam pra uma url com o username. Saber os usernames facilita ataques e os tornam possíveis até mesmo onde a conta padrão foi renomeada.

Felizmente, há uma simples solução pelo .htaccess que bloqueia esse abuso:

RewriteCond %{QUERY_STRING} author=\d
RewriteRule ^ /? [L,R=301]

Instale um plugin de autenticação em duas etapas

Cada simples hackeamento que acontece em blogs WordPress pelo roubo ou adivinhação do login/senha poderia ser evitado com essa medida. E não há a menor desculpa para não fazê-lo. O plugin Google Authenticator é gratuito, incrivelmente eficiente e deliciosamente fácil de usar. Como o nome sugere, ele é compatível com o app Google Authenticator do Google, o mesmo app que usuários do Dropbox e Evernote que ativaram autenticação em duas etapas já costumam usar.

Eu poderia recomendar ainda a solução da Duo Security, já que eles são famosos pelo impressionante nível de conhecimento na área e oferecem uma versão gratuita para até 10 usuários. Mas o plugin anterior é tão eficaz que não vejo razão pra se depender de uma solução que passe por servidores de terceiros.

Implemente HTTPS sem custo

Sim, é grátis. A maioria dos administradores parece ainda não saber, mas a startSSL oferece certificados SSL de graça e sem burocracia, e o processo todo de solicitar e configurar me levou 20 minutos. Acessar a interface administrativa pela url com protocolo https:// é  única forma de proteger administradores e colaboradores do blog contra roubo de senhas por sniffing, além de protegê-los contra ataques side-jacking, uma técnica que consiste no sequestro de cookies que trafegam descriptografados por HTTP e permite ao atacante o acesso na interface administrativa mesmo sem a necessidade da senha. Um perigo principalmente quando se usa WiFi público.

Bana IPs maliciosos sem dó

Apenas instalar um plugin de autenticação dupla já é o suficiente para neutralizar ataques de força bruta. Mas um atacante insistente, mesmo sem obter sucesso em sua investida, pode consumir valiosos recursos do sistema, o que em alguns casos pode afetar a performance do seu site, além de comer sua preciosa banda. Uma boa forma de evitar isso é simplesmente banir IPs que tentem se logar na interface administrativa e falhem X vezes dentro de um período Y. Há alguns plugins que prometem fazer isso sem precisar instalar mais nada no servidor, ideal para quem usa o WordPress em shared-hosting, não tem acesso root e nem experiência como sysadmin; mas confesso que não testei nenhum desses e preferi usar direto o WP fail2ban, compatível com o querido fail2ban (que já uso pra proteger outros ataques no próprio Apache e em outro serviços). Com esse plugin instalado e configurado, qualquer ataque é bloqueado via iptables já nos seus primeiros segundos de ação.

Há outras medidas recomendadas de hardening no site do WordPress e que cobrem outros pontos da aplicação e valem a leitura. Falarei sobre outras em um futuro post.

Vinícius K-Max

Vinícius K-Max

Analista de Segurança da Informação , pesquisador de vulnerabilidades em sistemas desde 1999 e adepto da slow food. Também é defensor do frontier thinking, pensamento que acredita que o paradigma atual pode colapsar a qualquer momento.