10 hacks de segurança para o WordPress impedir que você seja invadido
WordPress é uma história de enorme sucesso, não só em termos de números globais, mas também, o que pode surpreender alguns, em termos de grandes nomes que usam a plataforma.
Na Internet, quando você tem uma base considerável de usuários instalados e usuários de alto perfil, você simplesmente não pode evitar se tornar um alvo para hackers e spammers. Seja vendendo pílulas, promovendo ideologias distorcidas, roubando dados e quebrando sites apenas porque podem, ser hackeado pode facilmente ser uma grande dor de cabeça para o seu negócio.
Neste artigo, darei uma olhada em algumas das dicas, truques e hacks que você pode empregar para oferecer a si mesmo mais proteção contra o ventre decadente da web.
Familiarize-se com o básico
Embora você possa pensar que alguns desses elementos deveriam ser desnecessários, pense em quantas vezes você viu não apenas clientes, mas também outros desenvolvedores, designers e agências que deveriam saber que são culpados de alguns deles?
Comece tornando suas senhas difíceis de adivinhar. Como você pode tornar difícil para eles, mas fácil para você? Talvez você possa esquecer as substituições duvidosas de letras, como ‘h3ll0’, misturar maiúsculas e minúsculas e inserir pontuação e, em vez disso, usar um mnemônico. Ao encadear três ou quatro palavras juntas para criar uma imagem divertida, sua senha será muito mais fácil de lembrar do que ‘t3r%?9.Fq!G’ e ordens de magnitude mais difíceis de decifrar. Só não use ‘CorrectHorseBatteryStaple’. Para obter uma explicação completa e divertida desse princípio, confira o XKCD 936.
Você também deve manter seus plugins e o núcleo do WordPress atualizados. Isso agora é mais fácil de fazer com versões posteriores do WordPress. No WordPress 3.7, você pode configurar quatro tipos de atualizações automáticas: arquivos principais, plugins, temas e arquivos de tradução. Uma palavra de cautela – dependendo da sua configuração, você pode desabilitar alguns deles para poder testar antes de implantar as atualizações. Embora, mesmo que você os deixe ativos e tenha problemas, ainda terá backups diários nos quais confiar, certo?
Facilite o gerenciamento de vários sites, plug-ins e backups com algo como o InfiniteWP. Os recursos básicos são gratuitos!
Estas não são as credenciais de login que você está procurando
Além da força superior da senha, você também deve procurar mover seu URL de administrador padrão e usar algo diferente de ‘admin’ para seu nome de usuário. A menos que os hackers tenham um alvo específico em mente, eles geralmente procuram executar bots para automatizar o processo. Esses bots procuram o WordPress, experimentam as configurações padrão e as senhas mais comuns – então vamos nos afastar dos padrões para tornar essa tarefa mais difícil.
Talvez a maneira mais fácil de alterar seu URL de login seja dar uma olhada em plugins como HC Custom WP-Admin URL. Claro – execute um backup primeiro!
Para alterar seu nome de usuário administrador, a maneira mais simples é criar um novo usuário administrador com o nome de usuário escolhido e excluir o antigo. Se você está bloqueado em seu administrador porque não se lembra do seu nome de usuário, precisará de uma solução um pouco mais drástica. Faça login no phpMyAdmin e carregue seu banco de dados do WordPress. Role para baixo no lado esquerdo e procure a tabela ‘ks29so_users’. Encontre o nome de usuário que você deseja alterar, ou seja, ‘admin’ e edite o valor user_login para ser seu novo nome.
Uma palavra final sobre o processo de login
Antes de nos afastarmos do processo de login, há mais algumas tarefas a serem realizadas. Lembra daqueles bots que adivinham senhas? Vamos tornar mais difícil para eles, dizendo que você só pode fazer tantas tentativas dentro de um determinado período de tempo e que antes você tem que transcrever corretamente um CAPTCHA. Para o Captcha, você pode tentar instalar este plugin e pronto. Benefício colateral – a versão premium se integra ao BuddyPress e ao Formulário de contato 7 para proteger seus formulários de contato contra envios de spam.
Para limitar as tentativas de login, você pode adicionar plug-ins como Limitar tentativas de login ou pode perguntar ao seu provedor de hospedagem quem pode ter uma solução – o Wpengine, por exemplo, tem isso configurado por padrão.
Protegendo o WordPress com alterações em .htaccess
Espero que você esteja pronto para sujar um pouco as mãos enquanto passamos para sugestões um pouco mais complicadas do que ‘instalar um plugin’! Adicione estas sugestões após a linha #END WORDPRESS.
O primeiro elemento a adicionar ajudará a proteger o wp-config.php, este arquivo seria perigoso nas mãos erradas, pois contém informações importantes sobre seu site e seu banco de dados.
orderallow,deny
deny from all
Isso é um ótimo começo, o que mais podemos fazer? Bem, podemos impedir que pessoas intrometidas dêem uma olhada em seus arquivos e pastas – acho que os benefícios disso são bastante autoexplicativos!
O seguinte é um macacão para bloquear a navegação no diretório:
# directory browsing
Options All -Indexes
Se você quiser bloquear um arquivo especificamente, use o seguinte:
Order allow,deny
Deny from all
Agora estamos começando a progredir – removendo o acesso daqueles que não o exigem. Para levar isso à sua conclusão lógica, vamos ver como podemos proibir alguém que sabemos ser um mau ator de acessar qualquer coisa em seu servidor.
Depois de saber o IP, basta adicionar estas linhas substituindo 127.0.0.1 pelo IP ruim:
Order Deny,Allow
Deny from 127.0.0.1
Para atualizar isso com novos IPs, basta adicionar novas linhas ‘deny from’. Se você precisar bloquear um intervalo inteiro, deixe o intervalo em questão. Em outras palavras, para bloquear tudo de 127.0.0.0 a 127.0.0.255, você adicionaria:
Deny from 127.0.0.
A dica final nesta seção é proteger o próprio .htaccess. Existem alguns sites circulando métodos que são bons, mas não ótimos. O seguinte método é cortesia de Jeff Starr na Perishable Press e é muito mais completo:
# STRONG HTACCESS PROTECTION
order allow,deny
deny from all
satisfy all
Melhorias no banco de dados
Outra vantagem do WordPress para hackers é que em uma instalação padrão eles saberão como são chamadas as tabelas do seu banco de dados. O WordPress usa o prefixo ‘ks29so_’ por padrão, alterando isso estamos novamente nos afastando das suposições dos hackers.
Primeiro, diremos ao wp-config.php que estamos alterando o prefixo da tabela. Abra esse arquivo e edite o seguinte:
$table_prefix = 'ks29so_';
Adicione alguns números ou letras:
$table_prefix = ‘ks29so_3drt5_’;
Em seguida, você precisa percorrer e alterar cada um dos nomes de tabela em seu banco de dados. Para cada uma de suas 11 tabelas, execute um comando no seguinte formato:
RENAME TABLE ‘ks29so_commentmeta‘ TO ‘ks29so_3drt5_commentmeta‘;
Provavelmente haverá algumas outras referências ao prefixo antigo que você precisa esclarecer. Execute esta consulta para listar tudo da tabela de opções usando o prefixo antigo:
SELECT * FROM ` ks29so_3drt5_options` WHERE `option_name` LIKE'%ks29so_%'
Infelizmente, você precisará passar por cada um e atualizar.
Então precisamos olhar para a tabela UserMeta, mesmo processo de antes:
SELECT * FROM ` ks29so_3drt5_usermeta` WHERE `meta_key` LIKE'%ks29so_%'
Por fim, você também pode restringir o usuário do banco de dados MySQL a ter apenas os seguintes privilégios de leitura e gravação: SELECT, INSERT, UPDATE e DELETE. Assim, você pode revogar privilégios para estrutura de banco de dados e administração: DROP, ALTER e GRANT. No entanto, isso pode dificultar a atualização do núcleo e a adição de novos plug-ins, pois eles podem realmente precisar alterar a estrutura do banco de dados. Se você seguir esse caminho, deve ser minucioso sobre seus backups e testes.
Novas chaves por favor
Suas chaves secretas são armazenadas em wp-config.php. No entanto, eles não são tão secretos se você os deixar como valores padrão! Melhore sua segurança alterando-os – eu recomendo, no entanto, que você não confie em seu próprio senso de aleatoriedade e complexidade. Use algo como este serviço – isso não apenas define as chaves para você, mas as faz todas de uma vez no formato correto para você colar diretamente no seu arquivo. Pressionar atualizar demonstra que você obtém um novo conjunto de chaves cada vez que o carrega.
Fonte da receita original
Os plug-ins são um vetor de ataque grande o suficiente quando as explorações são descobertas e distribuídas entre os hackers, portanto, você deve pelo menos garantir que confia na fonte do plug-in. Caso contrário, você pode colocar a exploração em seu próprio site, adicionando um plug-in desonesto contendo malware.
Limpeza de primavera
Como temas e plug-ins são uma vulnerabilidade em potencial, nós os mantemos atualizados sempre que possível. Se você parou de usar um plugin/tema, exclua-o completamente. Desativar não é bom o suficiente – apenas se livre disso! Se um plug-in foi abandonado por seu desenvolvedor, também seria uma boa ideia encontrar algo novo e excluir o antigo – se uma vulnerabilidade de segurança for encontrada, ela não será corrigida e obter uma correção personalizada provavelmente será muito caro.
Na mesma linha, exclua todos os logins que você não precisa mais. Talvez você confie em seus ex-funcionários, e tudo bem, mas não se trata inteiramente de confiança. Trata-se também de reduzir a área de ataque disponível onde for possível, limitando as pessoas ao nível mínimo de acesso de que precisam. Normalmente, um ex-funcionário ou autor não precisa de acesso – tenho certeza de que eles entenderão!
Aplica-se a política de entrada – Permitir somente IP de administrador confiável
Eu separei isso das outras dicas de .htaccess, pois essa é potencialmente uma etapa um pouco mais séria a ser considerada. Ao contrário da etapa anterior de proibir IPs ruins conhecidos, trata-se de permitir apenas os bons conhecidos. Isso melhora sua segurança, mas tem um custo para sua conveniência, pois você ficará restrito a onde pode fazer login para trabalhar em seu site. Vá em frente se você não se movimentar muito, se estiver sob tentativas de ataque consistentes ou simplesmente se achar que vale a pena ter essa tranquilidade extra.
orderdeny,allow
allow from 127.0.0.1
deny from all
(novamente, substitua 127.0.0.1 pelo seu IP).
SSL
Você não deve acessar seu administrador em um serviço Wi-Fi público – se fizer isso, as credenciais serão enviadas pelo ar em texto simples. O hacker nefasto pode estar sentado ao seu lado, tomando um café com leite e fazendo secretamente um ataque intermediário para obter suas senhas e outros detalhes confidenciais.
No entanto, se for necessário, você pode pelo menos oferecer a si mesmo um pouco mais de proteção ativando o SSL. Primeiro, certifique-se de que seu servidor o suporte, abra seu arquivo wp-config.php e adicione a seguinte linha:
define('FORCE_SSL_ADMIN', true);
Outras coisas para ver
Isso é tudo para o meu conjunto principal de dicas, mas há outros aspectos a serem observados. Você pode proteger ainda mais seu .htaccess, por exemplo, parando os scripts php em execução onde não deveriam. Você também pode garantir que suas permissões de arquivo sejam definidas adequadamente – não apenas em seus arquivos do WordPress, mas em todo o servidor.
Minha última dica importante, no entanto, seria fazer backup. Todo este artigo é baseado na ideia de que prevenir é melhor do que remediar, mas backups regulares, utilizáveis e testados devem estar lá caso você precise deles. Deixe-me enfatizar tanto o regular quanto o testado – um backup de um ano atrás não é essencialmente nenhum backup para a maioria dos sites que cresceram muito nesse período. Se os backups não forem testados, você não tem um backup. Você realmente não quer chegar ao ponto em que um backup é necessário e só precisa cruzar os dedos e torcer para que funcione!
O que você fez para proteger seu site WordPress? Onde você traça a linha entre segurança e acessibilidade/usabilidade? Deixe-me saber nos comentários.