WordPress proteger BruteForce

De vez em quando gosto de dar uma vista de olhos nos logs do servidor para ver se deteto algo “anormal”, uma das coisas que me saltou à vista já há algum tempo foi o número exagerado de tentativas de autenticação inválidas! Estas tentativas tinham várias origens mas o método é sempre o mesmo tentar combinações comuns de utilizador e passwords de forma a entrar no Painel de administração do WordPress (isto é conhecido por BruteForce).

Para proteger a minha instalação de WordPress ainda pensei usar um plugin para proteger deste género de ataque mas decidi tentar uma abordagem de mais baixo nível, uma vez que já uso o Fail2Ban no servidor decidi aproveitar o mesmo e criar uma regra para à terceira tentativa de autenticação bloquear o ip de origem, fui acompanhando o número de ip’s bloqueados e são mais do que eu imaginava.

Como não sou nenhum master em regex usei uma expressão extremamente simples, quando uma tentativa de autenticação falha o WordPress retorna um erro http 403  (o comportamento standard retorna um 200 OK, com o JetPack ativo e com a opção de bloquear tentativas de login inválidas é que gera o 403), então é só mandar o Fail2Ban pesquisar acessos ao wp-login.php que retornaram 403, a regra que cheguei que se mostrou mais eficaz após alguns testes foi a seguinte:

failregex = :80 <HOST> .* /wp-login.php HTTP/1.1″ 403

Para já tem funcionado como esperado:

Optei por não usar plugins porque mesmo que um plugin detecte uma tentativa de intrusão, vai permitir que o atacante continue a gastar recursos ao servidor, ao enviar centenas ou milhares de pedidos seguidos. Como o Fail2Ban impede o ip do servidor de chegar sequer ao servidor o gasto de recursos é mínimo praticamente nulo.

Uma alteração que faço sempre no Fail2Ban é configurar para que quando bane um ip não faça REJECT e em vez disso faça um DROP(criei um Gist com isso) assim quem está do outro lado (o atacante) tem que aguardar pelo timeout do pedido para proceder para outro, isto fará com que no mínimo a aplicação que estão a usar para nos atacar consuma mais tempo e mais recursos ao atacante.

WordPress Importar Blogspot

O blogger é muito bom e gratuito mas também limitado em alguns aspetos, quando o blogspot não chega a solução pode passar por migrar para o WordPress.
O WordPress facilita esta migração ao disponibilizar uma ferramenta própria para o efeito, para a usar basta ir ao Painel do WordPress, seleccionar Ferramentas e clicar em “Importar”, nesta página surgem vários “importadores” de várias plataformas entre as quais o Blogger… seleccionamos “Instalar Agora” e o plugin de importação será instalado.

É Também possível importar do Blogroll, LiveJournal, Movable Type e TypePad, Tumblr e de sites alojados no WordPress.com.

Este importador importa o ficheiro xml exportado no Blogger, para gerar o ficheiro tem que fazer login no Blogger e ir a Definições -> Outros e seleccionar “Criar Cópia de Segurança de Conteúdo” será gerado um ficheiro com os posts.

Com o ficheiro do Blogger guardado voltamos ao painel do WordPress à página Importar e iniciamos o processo de importação basta seleccionar o novo autor para os posts e aguardar… quando o processo terminar todos os artigos da cópia estarão Publicados no WordPress.

 

 

WordPress Login Form Image

Para uma personalização maior do wordpress criei um pequeno plugin que permite alterar a imagem que aparece no topo do formulário de login. Podem ver o resultado final aqui

Editar directamente o tema é complicar os futuros updates, dai a criação de um plugin para o efeito.

A utilização do plugin é muito simples é só fazer upload da pasta do plugin para a pasta wp-content/plugins/ do wordpress e colocar a imagem pretendida com o nome wp-custom-login-logo.png na mesma pasta, depois é só activr o plugin e está feito.

Por um engano ao submeter o plugin o nome do directório do plugin ficou mal escrito, fica um bocado mal, mas por agora vou deixar assim.

Página do plugin WP-Custom-Login-Logo

Sapo OpenID WordPress Plugin

Já tinha tentado usar vários providers de OpenID, mas sempre tive dificuldade de me recordar o URL do serviço, há pouco tempo conheci o Sapo OpenID registei-me e comecei a usar, mesmo assim sempre que precisava de fornecer o URL para ser usado com o OpenID tinha que regressar ao site para o obter, vai dai resolvi criar um plugin que permite muito facilmente num blog em WordPress adicionar as tags necessárias no header do blog para que ao fornecer o URL do blog seja detectado o nosso servidor de OpenID (no caso o Sapo.pt).

A persona a usar é configurada no interface de administração do WordPress.

SapoOpenID WordPress Plugin

A criação deste plugin serviu também para aprofundar os meus conhecimentos em WordPress, foi escrito de raiz isto dificultou bastante a tarefa, mas soube bem ve-lo a funcionar correctamente.