11 dicas e hacks vitais para proteger a área administrativa do WordPress

A Automattic está sempre atenta a falhas e vulnerabilidades no WordPress. Evidência dessa preocupação são as várias atualizações liberadas recentemente, que embora chateiem usuários, são necessárias para manter blogs que rodam sob a plataforma seguros. Mas, além desses problemas de código, existem algumas vulnerabilidades by design, ou seja, que são vulnerabilidades não por erro ou descuido, mas por serem como são.

Ficou complicado? Imagine um ataque de força bruta à área administrativa, considerando “admin” como sendo o username padrão dessa instalação. O WordPress não tem como lidar com esse tipo de situação, e caso algo assim aconteça ao seu blog, as chances do ataque furar o bloqueio por senha é real. Não chega a ser uma falha do WordPress; no entanto, também está longe de ser algo a que devemos aceitar e deixar de lado, correr riscos.

Como tudo que envolve WordPress, a comunidade, através de hacks, dicas e plugins, criou e mantém uma série de defesas que incrementam a segurança do sistema. O blog wpbeginners compilou uma listinha com 11 delas essenciais a qualquer blog que se preze. Com a autorização dos autores do wpbeginners, trazemos a vocês, com exclusividade, esse texto traduzido para o português.

1. Crie links de login personalizados

O primeiro passo para quebrar uma senha do WordPress é buscar a URL de acesso à área administrativa. Sim, o famoso /wp-login.php. O plugin Stealth Login dificulta o acesso ao formulário de login, “mascarando-o” para algo que só o(s) autor(es) conheça(m). Além de permitir a personalização da URL de login, também permite alterar a URL de logout e registro, determinar para onde o usuário deve ser redirecionado após o login, e ativar o modo stealth, que impede o acesso de usuários ao /wp-login.php.

Stealth Login.

Stealth Login.

2. Escolha uma senha forte

Dica óbvia, mas vale a pena a lembrança, já que muitas vezes a deixamos de lado por preguiça, comodismo mesmo. Escolher uma senha forte é algo básico em termos de segurança. Crie uma senha relativamente longa, com caracteres diversos (letras, números e símbolos), que fuja à lógica (nada de colocar data de aniversário aqui). Aproveite-se do indicador de força de senhas embutido no WordPress, para medir a qualidade de sua senha. Não use a mesma senha em vários locais, e, por fim, troque-a regularmente.

Senha forte: dica básica.

Senha forte: dica básica.

3. Limite as tentativas de login

Lembra-se do exemplo citado na introdução deste post, o do ataque de força bruta? O plugin Login LockDown visa impedir justamente esse tipo de ataque. Com ele instalado e ativado, é possível determinar, na área administrativa do WordPress, a quantidade de tentativas de login permitidas. Estourado esse limite, o usuário será impedido de realizar novas tentativas. Solução simples e extremamente eficaz.

Login LockDown.

Login LockDown.

4. Use páginas de login seguras com SSL

SSL é um protocolo de segurança que criptografa a comunicação entre cliente e servidor, impedindo o vazamento de dados no durante seu transporte. Caso seu servidor tenha certificado SSL compartilhado, ou você tenha o seu próprio, pode usar esse tipo de criptografia para gerenciar as sessões na área administrativa do WordPress. Basta adicionar a seguinte linha no wp-login.php:

define(’FORCE_SSL_ADMIN’, true);

Existe outra alternativa, o plugin SSL Admin, que estende a criptografia a todas as páginas da área administrativa. Esse plugin só é compatível com o WordPress 2.7 e mais recentes.

5. Proteja o diretório /wp-admin com senha

Não há nada errado em ter duas senhas para acessar a área administrativa do WordPress. É uma proteção a mais contra acessos não autorizados. O plugin AskApache Password Protect faz algo do tipo. Ele criptografa sua senha e criar o arquivo .htpasswd, dando as devidas e corretas permissões em ambos.

AskApache Password Protect.

AskApache Password Protect.

Se sua hospedagem oferece o cPanel, é possível implementar essa proteção atribuindo senha ao diretório /wp-admin.

6. Limite o acesso para endereços IP

Se sua conexão não usa IP dinâmico, uma boa medida de segurança é limitar o acesso à área administrativa para seu IP, ou, no caso de blogs colaborativos, aos IPs dos colaboradores. Basta criar um arquivo .htaccess dentro da pasta /wp-admin, e acrescentar o seguinte código nele:

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName “WordPress Admin Access Control”
AuthType Basic

order deny,allow
deny from all
# whitelist Syed’s IP address
allow from xx.xx.xx.xxx
# whitelist David’s IP address
allow from xx.xx.xx.xxx
# whitelist Amanda’s IP address
allow from xx.xx.xx.xxx
# whitelist Muhammad’s IP address
allow from xx.xx.xx.xxx
# whitelist Work IP address
allow from xx.xx.xx.xxx

Substitua os “x” pelos endereços IPs permitidos. O único ponto fraco dessa dica é que, caso você precise acessar a área administrativa do blog a partir de um IP que não esteja listado no .htaccess, não conseguirá, a menos que inclua mais esse IP ao arquivo.

7. Nunca use o usuário “admin”

Ataques de força bruta só são possíveis porque o usuário “admin” existe. Ele é padrão, criado automaticamente pelo WordPress no momento da instalação. A dica é criar outro usuário com poderes administrativos, e em seguida, eliminar o “admin”. O nome do outro usuário deve ser, preferencialmente, algo que fuja do óbvio, o que dificulta ainda mais as tentativas de acesso não autorizado à área administrativa. Dessa maneira, o username funciona mais ou menos como uma segunda senha.

8. Remova mensagens de erro na página de login

Quando se entra com senha e/ou username errados, o WordPress exibe uma mensagem indicando aonde está o erro. Isso ajuda uma pessoa má intencionada a “depurar” as tentativas de burlar o WordPress, afinal, se apenas a mensagem de erro de senha aparece, significa que o username está correto – e vice-versa.

Cadê a mensagem de erro que estava aqui!?

Cadê a mensagem de erro que estava aqui!?

Para ocultar a mensagem de erro na página de login, abra (ou crie, caso não exista) o arquivo functions.php, na pasta do seu tema, e acrescente a seguinte linha:

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

O plugin Secure WordPress também faz isso, e outras coisinhas. Caso se interesse, dê uma olhada nele.

9. Use senhas criptografadas para fazer login

Se você não tem acesso a criptografia SSL, esse método serve também. Através do plugin Semisecure Login Reimagined, o trabalho de criptografia client-side é realizado com a ajuda de uma chave pública RSA. Para que esse método funcione, é necessário ter o JavaScript habilitado no navegador.

10. Proteção antivírus para WordPress

Achou que só o Windows é vulnerável a vírus? Pois é, o WordPress também o é. O AntiVirus, um plugin para o sistema, protege-o contra exploits e ataques de injeção de spam. Pode-se fazer varreduras manuais, com resultados mostrados em tempo real, ou configurar o plugin para realizá-las diariamente, com envio de resultados por e-mail.

11. Atualize seu WordPress

Não menos importante que as demais (pelo contrário!), manter seu WordPress atualizado é uma das dicas mais eficientes e simples de se seguir. A cada atualização, além de novos recursos, são corrigidos bugs e falhas que abrem brechas para ataques contra a área administrativa do WordPress. Algumas atualizações, inclusive, são lançadas única e exclusivamente para corrigir esse tipo de erro, caso das duas últimas (2.8.3 e 2.8.4). Com o sistema de atualização automática do WordPress, simplesmente não há desculpa para não atualizar seu sistema.

12 (dica bônus). Senhas válidas por uma sessão

Dica excelente para quando precisar acessar a área administrativa do WordPress em ambientes estranhos e/ou pouco confiáveis. O One-Time Password cria senhas que funcionam uma única vez, assim, caso algum keylogger registre sua senha, não há problemas; ela torna-se inútil a partir do momento em que é usada. Esse plugin é de uso um pouco complicado, e só é garantido seu funcionamento nos navegadores Internet Explorer 8 e Firefox 3.0/3.5, com WordPress 2.8. De qualquer maneira, a proposta é interessante, especialmente para quem depende de computadores públicos para atualizar seu blog.

Alguma dica extra? Compartilhe-a nos comentários. Mais uma vez, agradecemos o pessoal do site wpbeginners, que gentilmente autorizou a tradução e publicação do texto 11 Vital Tips and Hacks to Protect Your WordPress Admin Area no pBlog. Thank you!

WordCamp Brasil dia 21 de junho!

WordCamp Brasil.

WordCamp Brasil.

No dia 21 de junho, um sonho da comunidade brasileira de WordPress se realizará: teremos o primeiro WordCamp Brasil! Graças ao trabalho da empenhada trupe do WordPress-BR, o evento pode ser organizado, e contará com a presença de Matt Mullenweg, criador do WordPress, em sua segunda visita ao Brasil – o pBlog esteve na Latinoware, primeira vez que em Matt ao nosso país.

O WordCamp Brasil será realizado, como já dito, no dia 21 de junho, em São Paulo. O evento será das 9h às 18h, e contará com palestras e apresentação de cases variados envolvendo WordPress. O início dos trabalhos será marcado por uma palestra de Matt.

As inscrições já foram abertas, e podem ser feitas nesta página. Os organizadores abriram espaço para interessados na apresentação de palestras ou cases; basta enviar um e-mail, e torcer. Eles ainda pedem a ajuda de patrocinadores, especialmente no que diz respeito ao local do evento, ainda indefinido. A preferência é de um espaço de fácil acesso, próximo de alguma estação do metrô, e que comporte cerca de 200 pessoas. Novamente, basta entrar em contato e oferecer ajuda a este que promete ser o maior evento relacionado a WordPress já ocorrido no Brasil.

Contamos com a presença de todos! É uma ótima oportunidade de conhecer pessoalmente Matt Mullenweg e muitas figurinhas carimbadas do universo WordPress no Brasil.

Personalizando o Prologue

O tema Prologue é totalmente baseado no modelo do Twitter. Desenvolvido pela Automattic, traz o look and feel do mais famoso serviço de microblogging da atualidade para o WordPress de maneira exemplar.

Recentemente, precisei utilizar o Prologue num projeto pessoal, e ao por a mão na massa, senti falta de alguns detalhes. Com um pouco de pesquisa, e alguns plugins e códigos, consegui deixá-lo do jeito que eu queria. E como WordPress é compartilhamento de informações, este post explicará, em detalhes, como turbinar o Prologue.

Minha primeira necessidade era restringir o acesso a pouquíssimas pessoas, todas com poder de publicação. Num primeiro momento, pensei em tascar uma senha no diretório em que o WordPress foi instalado, via servidor. Mas depois, pesquisando um pouco, descobri o plugin Login Configurator. Além de permitir personalizar o formulário de login do sistema, ele consegue restringir a leitura do blog inteiro (ou de partes dele) a membros, ou seja, pessoas cadastradas no WordPress. Exatamente o que eu precisava. O Juarez gravou uma vídeoaula sobre esse plugin; vale a pena assisti-la.

Diretório protegido, chegou a hora de instalar o Prologue. Nesse ponto, nenhuma novidade: a instalação é exatamente idêntica à de qualquer outro tema, e graças à forma como esse tema foi escrito, ele é ready to use, dispensa quaisquer configurações/edições posteriores. Só que, novamente, faltam alguns detalhes relacionados às categorias. Dois, para ser mais exato:

  • Seletor de categorias de posts no formulário da home;
  • Indicação das categorias às quais os posts pertencem, nos mesmos.

O primeiro ponto demanda algum trabalho, pois é preciso editar dois arquivos do tema: index.php. post-form.php e style.css. Felizmente, uma alma caridosa fez o “serviço sujo” de fazer essas modificações e compartilhar o caminho das pedras com o mundo (“WordPress é compartilhamento de informações”, lembrem-se sempre). Para quem manja inglês, a receita de bolo está aqui. Para quem prefere o bom e velho novo português, siga os passos abaixo:

Abra o arquivo post-form.php, e acrescente o código abaixo no local onde deseja inserir o menu dropdown das categorias:


Agora, abra o index.php, vamos trabalhar nele. Identifique a seguinte linha:

$tags = $_POST['tags'];

Imediatamente abaixo dessa, copie a seguinte linha:

$category = $_POST['post_category'];

Ainda no mesmo arquivo, encontre essa linha:

'post_content' => $post_content,

E imediatamente após ela, copie essa:

'post_category' => $category,

Por fim, abra o style.css. No final do arquivo, copie isso:

#postbox select {
font-size: 1.2em;
padding: 2px;
border: 1px solid #c6d9e9;
margin-left: 70px;
}

Pronto, agora temos categorias no formulário da home page. Aproveite que está com o style.css aberto, e aumente um pouquinho a altura da textarea do post. Para tal, basta editar o valor height: 50px; do ID #postbox textarea#posttext. Particularmente, uso 150px nessa área. O resultado final é esse:

Prologue (com categoria).

Prologue (com categoria).

Falta ainda a questão da indicação das categorias nos posts. Por padrão, o Prologue só trabalha com tags, mas não é nada que possa ser mudado.

As alterações abaixo devem ser feitas nos arquivos index.php e single.php. Localize essa parte em ambos:

Substitua-a por essa linha:

Categoria: .

Muito bem! Agora temos categorias e tags indicadas em cada post.

Para finalizar, dois plugins que considero muito úteis nesse tipo de blog/microblog: um que mostra usuários ativos no momento, e outro que lista os últimos comentários.

O plugin que mostra os usuários online no momento é o WP-UserOnline, do Lester Chan. Após ativá-lo e traduzi-lo na área administrativa, o código invocatório que utilizo é o seguinte:

:

Ele retorna a quantidade de membros online, e dá os nomes de cada um.

O outro plugin é o Simple Recent Comments, que mostra os últimos comentários de maneira bem simples, numa lista. Após a ativação, o código invocatório é o seguinte:

Ultimos Comentarios

','

'); } ?>

Traduzindo-o: o número 7 é a quantidade de comentários que aparecerá; o 120, o limite de caracteres de cada comentário; o trecho longo que inclui o título (“Últimos Comentários”), é o que vem antes da lista de comentários, que por sua vez é gerada automaticamente, e depois disso, vem o fechamento do bloco.

Essas dicas deixam o Prologue mais esperto e completo, mas não é nada que chegue perto do P2, nova versão do Prologue em desenvolvimento (veja a demo em ação). Em poucas palavras? Está ficando fenomenal. Dê uma olhada no vídeo demonstrativo liberado pela Automattic:

O anúncio foi feito no início de março, mas até agora o novo tema não foi lançado. Caso queira aguardá-lo, é uma boa pedida. Se a utilização do Prologue é urgente, as modificações mostradas neste post ajudarão bastante.

easyComment, para Firefox, facilita o envio de comentários

O ato de comentar faz parte do ser blogger. Interagir com outros blogs do mesmo nicho, ou mesmo de nichos completamente diferentes, cria o ecossistema de blogs ideal. Sem falar que é enriquecedor enveredar numa boa discussão sobre um tema pertinente em blogs alheios.

Antes da parte legal, que é comentar e ler os comentários dos outros, somos submetidos a um formulário chato: o trinômio nome, e-mail e endereço do blog. É a identificação, não dá para pular essa parte. Todavia, é possível automatizá-la.

A extensão easyComment, para Firefox, permite isso. Após instalá-la, reinicie o navegador e, quando a janela abrir novamente, a inscrição easyComment, em laranja, aparecerá no canto inferior direito. Clique nela, e uma caixa de informações, parecida com o formulário de um blog, surgirá:

Configurações do easyComment.

Configurações do easyComment.

Preencha os dados, e salve a configuração no botão Save. Não vale personalizar o campo Your Message com coisas do tipo “Muito legal seu blog, passa no meu”, hein! Preencher esse campo é válido se você costuma deixar algum cumprimento no final dos comentários, como o []‘s!.

Com plugin devidamente configurado, toda vez que você estiver numa página de blog que tenha um formulário de comentário, basta clicar no easyComment e o formulário aparecerá destacado, com todos os campos preenchidos.

Algo simples, mas que economiza tempo e, em larga escala, lhe salva preciosos minutos, quiçá horas.

Via Weblog Tools Collection.

IntenseDebate agora aceita plugins

IntenseDebate: agora com plugins.

IntenseDebate: agora com plugins.

Boa novidade para quem usa o IntenseDebate, plataforma de comentários da Automattic: ontem, o time responsável anunciou a liberação de plugins para o sistema!

Por enquanto, existem apenas quatro plugins, a saber:

  • PollDaddy: permite aos leitores criarem enquetes dentro dos comentários (powered by PollDaddy);
  • Seesmic: permite aos leitores enviarem comentários em vídeo (powered by Seesmic);
  • YouTube: permite aos leitores adicionarem vídeos nos comentários (powered by YouTube);
  • Smileys: emoticons, finalmente!

A Automattic já liberou a API e está incentivando programadores a criarem novos plugins. Quer fazer um? Aqui está toda a documentação.

Para ativar os plugins já existentes, no painel administrativo do ID, entre em My Blogs, selecione um dos blogs cadastrados, e no submenu que aparece, clique em Plugins. Nessa área as coisas funcionam como no WordPress, ou seja, basta clicar em Activate, no plugin desejado, para colocá-lo em funcionamento.

É uma boa melhoria para o aparentemente abandonado IntenseDebate. Só falta agora corrigirem o sério problema com a dificuldade do sistema em lidar com grandes quantidades de comentários num post só, e traduzirem a interface.

WordPress usado para fins nãotradicionais (sugestões e exemplos)

Que o WordPress é versátil, não há dúvidas. Mas até onde o poder de adaptação do sistema pode ir? Dois bloggers gringos fizeram sessões pesadas de pesquisa e brainstorms, e compilaram listas interessantíssimas com exemplos, sugestões e dicas de sites nãotradicionais baseados em WordPress:

muita coisa boa, ideias inusitadas e úteis, as quais nem com muito esforço conseguira imaginar. Exemplos? Log de bugs de software, catalogador de CDs, DVDs e outras coisas do tipo, clone do Delicious, só para citar alguns. Há, também, usos nãotradicionais mas, por outro lado, mais ortodoxos, como lista de contatos, wiki e quadro de empregos.

Ótimas listas para iniciar novos projetos ou turbinar os já existentes.